Getting to 1.0 as soon as possible

Bryce Kampjes bryce at kampjes.demon.co.uk
Sun Feb 5 17:47:35 CET 2006


My plan is to release a 1.0 as soon as possible. That's a release of
Exupery that is generally useful, even if only for a single platform.

The road map to 1.0 is:
0.08:
   * Compiled blocks
   * Super Sends
0.09:
   * Point>>@
   * Compiled Object>>new
   * Fully integrated dynamic primitive inlining.
Other likely items before 1.0:
   * A compiled ExuperyBlockContext>>value
   * Natively compiled String primitives (at least #at: and #at:put:)
   * Removal of SmallInteger tagging in expression trees.
   * Compiled inlined code to call Slang primitives

2.0 will probably just have full dynamically inlined messages.  I'd
really like have them as soon as possible because they will really
change the costs of sends. I'd rather not do too much tuning of
compiled sends until they are in place because hopefully most sends
will be dynamically inlined.

3.0 is likely to have an SSA based optimiser. That should first
provide another 2-4 times increase in bytecode performance then
provide a good platform for further optimisations.

The changes are I've slipped the Point>>@ and  object creation work to
0.09 and full dynamically  inlined messages to  2.0. This isn't really
delaying either feature. Just focussing on improving the stability and
usefulness of the entire system first.

Dynamically inlined primitives are something that's been nearly fully
working for a few releases now. They allow primitives to be inlined
into a calling method which means that a primitive that's called
frequently will be as fast as if it was implemented as a
bytecode. Because they are dynamically inlined, they will be
specialised for the actual types used by the sender. I've been using
them for #at: and #at:put: in the bytecode benchmark. The only thing
missing is finishing the type feedback mechanism.

Bryce


More information about the Exupery mailing list