Explanation of some terms used in this proposal
Rakudo - the most actively developed Perl 6 implementation
NQP - a Perl 6 subset in which Rakudo is written
QAST - an AST format both NQP and Rakudo compile to
Benefits to the Perl Community
Work is also currently underway on a Perl 5 to QAST compiler: https://github.com/rakudo-p5/v5.
On the server side while targeting the JVM promises to deliver good performance, the JVM suffers from a significant startup which makes it less suitable for shorter programs (CLI utilies, short scripts, etc).
What I plan to accomplish is it compile enough QAST to bootstrap NQP (which is a Perl 6 subset).
QAST is used by both the Rakudo Perl 6 compiler and NQP as intermediate layer allowing for targeting of multiple backends.
The recent port of NQP to the JVM has abstracted the parrot specific parts from NQP.
Improved test coverage for NQP.
The code will be avaliable in a git repository on github and licensed the same as NQP itself.
Each of those is expected to take roughly one week
- Unbitrot the existing code.
- Deserialize closures properly.
- Write tests for the meta object protocol.
- Implement all the little things we need to run and compile the meta model fully.
- Implement grammars. That requires QAST::Regex compilation, NFA-related nqp:: ops as well as supporting code in the setting.
- Implement multi methods. The actual candidate sorting is done in NQP so what is need is the cache and capture related ops.
- Write tests for all nqp::opname() ops which are missing from the test suite.
- Implement all those ops.
- Implement serialization of objects. Pass the tests in nqp/t/serialization.
- tMake the bootstraped NQP pass all tests on node.js.
- Pass all the the non-IO tests in the browser using JsTestDriver.
- Prepare the code for merging into the main nqp repository (http://github.com/perl6/nqp )
Patrick Michaud has agreed to be a mentor.
I'm a Computer Science student at the University of Wrocław.
I have previously succesfully completed two GSoC projects.