The big question is whether to work on blocks next. Out of the the four key missing features blocks are the most disruptive. I'll have to create my own context objects which is a major but small change to the interpreter. It will also make the Exupery shutdown code more important because an unmodified VM will not understand these new context objects and require image support code to deal with compiled contexts (say for debugging).
The top four items are: * blocks * super sends * new * integration (making primitive inlining usable and the the profiling compiler effective)
They have been chosen based on profiling slow operations including the Magma LargeInteger benchmark, the bytecode compiler, and opening explorers on large Arrays.
I suspect that with all of the above done Exupery will have a minimally useful core. It would still need a few more critical primitives but which ones will then depend on what you want to speed up. At the moment, everything needs at least three of the four features above.
At the moment, I'm leaning towards blocks next.
Any thought?
Bryce