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
exupery@lists.squeakfoundation.org