I would not suggest trying a current checkout until the aftermath
of tonight's patch is fixed. Most tests are passing but a select few
are broken. (Leo, hopefully you can quickly fix the pbc stuff that
is causing the others to fail)

The major change is that IMCC will now parse and collect all
compilation units before compiling anything.

Until now, IMCC would compile each unit (sub, etc.) as it came to it
and it used a lot of global variables. This was very hackish and was
not good enough to handle the full language that we need to implement.
Now, we collect all the units and each unit (struct IMC_Unit) has its own
state (register graph, live graph, etc.).

At the end of the parse, imcc then iterates through the list of imc_units
and compiles and emits them.

The next step is to actually reorder the units before compiling so all metadata
units and init sections are done first, but that's easy.

There will be major patches to follow, so I recommend everyone
stick with 0.0.13 unless you are a developer and want to help. :)

-Melvin




Reply via email to