Planning Exupery 0.13

bryce at kampjes.demon.co.uk bryce at kampjes.demon.co.uk
Mon May 7 14:23:02 UTC 2007


Exupery 0.12 adds automatic profile driven background compilation.
0.13 should make it much more practical. All that's left to do for
0.12 is some bug fixing.

The major problems I'm aware of are:
 * Compilation can be very slow, one method takes about 5 minutes
   to compile.
 * Many primitives are not compiled so code that relies on them
   will not be speed up.
 * Reliability. Reliability is improving but background compilation
   is demanding.

There are two projects that it would be nice to add:
 * The closure compiler. I'd like to see a decent set of bytecodes
   added to allow closure code to be interpreted at the same speed
   as bytecodes. Compiling these new bytecodes should be relatively
   easy allowing decent compiled speed as well.
 * Generalizing primitive inlining to handle arithmetic operations.
   Arithmetic operations are inlined for SmallIntegers similar to
   the interpreter. This is fine but with type feedback we could
   inline for other types too.

Currently, speeding up compilation looks like the best option for
0.13. Hopefully after the pre-release bug fixing 0.12 will be reliable
enough to experiment with running in the background.

I suspect that the bug that's most annoying when running the
background compiler is caused by another bug introducing a fault in
the compiler. Unfortunuately the register allocator is not fully 
deterministic so it's difficult to compare output from different
runs to see if it changes. Being non-deterministic is not a
correctness problem as often there are several equally valid choices
but does make debugging potentual compiler bugs harder.

Bryce


More information about the Exupery mailing list