The ops_pct branch is ready to merge into trunk. If you're not familiar with the goal of this branch, it's part of chromatic's overall plan for Lorito*. We need a proper ops compiler (not a regex-based code mangler) before we can use different languages to implement those ops. The ops_pct moves us toward that goal by reproducing the functionality of our current ops2c perl code in nqp**.

When building with opsc, the nqp-based ops compiler, all of Parrot's tests pass. Rakudo also shows no regressions and partcl, which is the only other HLL I could find that uses dynops, is no more broken than before.

ops2c.nqp is a driver for opsc and is installed as a fakecutable with opsc.pbc, the supporting library, installed in the libraries dir. ops2c.pl has been changed to be a wrapper for the ops2c fakecutable to preserve backwards compatibility and obviate a deprecation cycle.

The branch requires a fairly minor fork of nqp that includes nqp-settings.pbc. This is a small (<450 loc) optional set of runtime functions and methods to make nqp a little nicer to work with***. pmichaud has verified that the eventual setting will be very similar to the one in bacek's fork and that it'll be included in upstream nqp in the very near future (possibly later today).


tl;dr or what this means for day-to-day parrot hacking:

Because there's the potential for circular dependencies, any changes to core ops will require running the bootstrap-ops make target to regenerate the ops C code. This code is now checked into svn so rebuilding the ops is not expected to be a frequent occurrence. It currently takes about 60s to rebuild the ops and there are several potential areas for optimization (apart from simply making parrot and nqp faster) which can be explored if this becomes a pain point.

Props go out to bacek++ for starting this branch and doing the majority of the design and hacking. darbelo++ did a great job making the build infrastructure more cross-platform and consistent with the existing infrastructure. mikehh++ was kind enough clean up after bacek and my flagrant codingstd violations. chromatic++ came up with the original plan.

Barring objections I plan on merging this branch into trunk before the weekend.

Thanks,

Christoph


* See http://trac.parrot.org/parrot/wiki/L1Recap

** When I say nqp, I mean nqp-rx. The old nqp is on its way out and I like to type less when I can get a way with it.

*** http://tinyurl.com/nqp-settings
_______________________________________________
http://lists.parrot.org/mailman/listinfo/parrot-dev

Reply via email to