ops_pct and the plan for world domination
Christoph Otto
christoph at mksig.org
Thu May 13 16:47:40 UTC 2010
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
More information about the parrot-dev
mailing list