This repository is for exploring/building various pieces that will be needed for porting NQP and Rakudo to the JVM. Note that this is all very much a work in progress. If you're just interested in running NQP and Rakudo on the JVM - we're not at the point of having anything interesting for you yet. For now, what's in here is only of interest to those who want to follow of participate in the porting effort.
Here's a quick overview.
- src
This contains the Java source for various bits of runtime support and
the implementation of the 6model core. There's no build stuff yet; the
best way to hack on it is to just add the directory to an Eclipse
workspace.
- lib/JAST
JAST is JVM Abstract Syntax Tree. It's a set of nodes that know how to
turn themselves into a textual dump, which is then processed into JVM
bytecode. In the future, we should be able to go straight from these
nodes to bytecode, but that'll be much easier once NQP is cross-compiled.
Implemented in NQP.
- lib/QAST
QAST is the set of AST nodes that NQP and Rakudo build when compiling
source. In lib/QAST is the code that turns these nodes into a tree of
JAST nodes. This is where the main compilation work takes place (JAST
itself really does not do much; it's very close to the JVM instruction
set). Implemented in NQP.
- t
Contains tests for turning JAST and QAST trees into .class files and
making sure they produce the expected output. The QAST tests are the
really interesting ones.
- Makefile
Can build the lib/JAST and lib/QAST stuff sufficiently to get tests
to run. Note you need to sort out building what's in src also; the
Makefile doesn't worry about that currently.
- docs
A ROADMAP, and some scribblings on how gather/take things will be
dealt with (currently not particularly implemented). Maybe more
will show up with time.
Help is welcome. See the file docs/LHF.md for a bunch of "Low Hanging Fruit" tasks (that is, things that should be comparatively easy to pick off without having to spend days learning stuff - at least if you already know a bit about some of Java, the JVM, NQP and QAST).