sound distribution practices

Jonathan Worthington jonathan at jnthn.net
Sat Apr 7 19:34:47 UTC 2012


On 4/7/2012 19:11, Allison Randal wrote:
> Okay, instead of just complaining about this, I want to do something
> about it. The Rakudo packages are so fragile on Debian, that they need
> special constraints to make sure the Parrot packages are held back until
> the Rakudo packages are updated.
>
> So, why is Rakudo so dependent on one specific month release of Parrot?
> Parrot isn't moving so fast that the APIs are all changing every month.
> Is NQP or Rakudo not respecting API boundaries? Are there some libraries
> currently shipping in Parrot that should be in NQP, Rakudo, or broken
> out into their own distributions instead?
Easiest way to analyze it is just git log on 
build/tools/PARROT_REVISION. Here I've done a very rough categorization 
of the last 20 entries (which takes us back to October).

Some of them are to take advantage of Parrot feature additions:

     bump PARROT_REVISION to get separate unlink and rmdir primtives

     use parrot's new Hash.update method to speed up method cache generation

     bump parrot revision to one that has the is_inf_or_nan opcode

     use parrot op to switch to the profiling runcore

So not bumping would mean Rakudo forgoing making user-facing improvements.

Some are to get Parrot fixes:

     bump parrot revision to get MacOS build fixes

     Bump to a Parrot version with a fix for ByteBuffer segfaults, which 
caused programs using Buf to sometimes segfault.

Again, there are Rakudo user benefits to following this.

Some are due to chasing API changes in Parrot:

     Update to new version of getprop op

     Bump parrot revision to kill_props_vtables marge commit.

The getprop op changed at a PIR level. No guts poking here, just a (for 
the better) change. I should add that when I say "chasing" in reality 
Parrot folks have supplied the patches here, and it's been managed smoothly.

One is due to getting a PAST improvement:

     bump parrot revision to get directaccess support, use directaccess 
for most var lookups

We're currently in the process of redeveloping PAST so it's written in 
NQP, can do native types better, is more memory efficient and so forth, 
and that work will be in the NQP repository, which would have avoided a 
bump of this nature - but it was just one bump out of 20.

Which leaves the biggest group, which are a combination of a policy of 
targeting the latest Parrot in releases and wanting to have those using 
Rakudo from git testing against latest Parrot after sizable changes, so 
we can have faster feedback if there are problems, which would seem 
desirable for both Rakudo and Parrot devs.

     bump parrot revision to 4.2.0 release

     bump parrot revision
     just to get some better testing of newer birds, no specific reason

     bump parrot revision to something after the cont_reuse merge

     bump parrot requirement to 4.1 release

     bump parrot revision to get some testing

     bump PARROT_REVISION to 3.11 release

     bump parrot revision

     Bump PARROT_REVISION

     Bump to Parrot 3.10 release.

     Bump to latest Parrot (not quite release yet) in order to get more 
testing against it.

     bump PARROT_REVISION to after the green_threads merge to get some 
more testing

     bump PARROT_REVISION

Granted some in this category aren't explicit about the reason why, so 
there's some error in the analysis here.

> Rakudo should be able to run on any Parrot release within the past year
> (at least). The fact that it can't is a sign of poor software. We need
> to figure out what's broken and fix it. I'm happy to help. Highly
> motivated too, as it would remove a regular source of irritation.
There seems to be a few things going on here. One is that we don't 
differentiate Parrot revision requirement updates that are "must have" 
from those where we're bumping it for development reasons rather than 
because it's a hard dependency. Another is that Rakudo's feature needs 
often drive feature additions to Parrot and drive some bug fixes too; it 
seems inevitable that Rakudo will want to quickly take advantage of them.

Generally, I think things are currently more -Odevelopment than 
-Odistribution. I agree that makes things harder for those working on 
distributions, and I'm interested to make things better - I want it to 
be as easy for people to get their hands on recent Rakudo releases, and 
having it packaged for distributions does help with that. On the other 
hand, it's also an accurate reflection of the current state of both 
projects: in need of development work, and optimizing for it.

Also just to check - are you packaging Rakudo compiler releases, or 
Rakudo distribution releases (which are the ones we more intend for 
packaging)? Mostly asking due to the timing of the email; we didn't do a 
distribution release for March (so last interested one to package was in 
Feb), and the next one is due this month.

Thanks,

Jonathan



More information about the parrot-dev mailing list