GSoC weekly raport - my rakudo breaking adventure

Submitted by pmurias on Wed, 07/03/2013 - 17:19

I tried to mimick the way subroutines are wrapped on rakudo and make test passed on parrot I commited the code.
And it broke nqp on the jvm. And I realised that rakudo on the jvm uses the HEAD revision on nqp and not a version specified in tools/build/NQP_REVISION. And after my commit make test broke on nqp.
I reverted the commit, and Jonathan Worthington figured out that I misunderstood what p6capture_lex did.
NQP opcodes propably need some kind of docs. I encoutered a crazy one called locallifetime which is some optimalisation thing I can ignore (https://github.com/pmurias/rakudo-js/commit/a4dbf654f54dfddb0731aaf2605a...). Which one of the primary rakudo/nqp authors wasn't sure what I does, just explaining it's some kind of ignorable optimalisation opcode.
(As a side note p6capture_lex sets the outer of code ref stored in $!do of it's arguement) to the current frame of lexicals.)
I implemented a version of that creatively called capture_lex for nqp (which was slightly more generic way as it didn't assume it's argument was a Perl6 Code).
I implemented the capture_lex opcode on parrot and nqp, and once make test passed, I happlily commited it (https://github.com/perl6/nqp/commit/afa84b8365c51822a7c9d8fe703c02919ce5...)...
And I broke rakudo. My commits where reverted and put on a branch. I realised that the sensible things was to just work on the more complex role.t test rather then spend a ton of time on hairy nqp refactors.
I'm currently doing that.