[Vm-dev] Strongtalk and Exupery

Bryce Kampjes bryce at kampjes.demon.co.uk
Wed Sep 20 21:41:37 UTC 2006

Hi David,
It's great to see that the Strongtalk VM has been open
sourced. Hopefully, it will be an asset to the community. 

Does the Strongtalk mailing list have a publicly available archive? One
that doesn't require a yahoo sign-on? It would make it much easier for
interested outsiders to follow what's going on.

How does Strongtalk compare with current Java Hotspot VMs? They are
also available with source for study (though not open sourced).

I'm the primary author of Exupery, another attempt at fast execution
technology for Smalltalk. Exupery is written in Smalltalk. The
original design was to combine Self's dynamic inlining with a strong
optimising compiler. For that the goal, I don't think we can afford to
write in anything less productive than Smalltalk.  That is still the
goal but it's a long way off, Exupery is currently moving towards a
1.0 without full method inlining and without a strong optimiser. All
the needed high risk features are there.

Compile time is not the key issue for a dynamic compiler, pauses
are. Compile time only becomes critical if you are stopping execution
to compile. Exupery doesn't. Being normal Smalltalk like everything
else pausing execution to compile is tricky. The trade offs to allow
Exupery to be easily written in Smalltalk are the same as those
required to allow long compile times for high grade optimisations.

If you, or other Strongtalkers are interested in talking about
compiler design please feel free to join Exupery's mailing list.
Don't worry if you don't have time to study the source or play with
it. Sharing experience would be valuable. Exupery is now about 4
years old, revisiting the design decisions with knowledgeable people
would be useful, especially in an archived list. Exupery is another
chance to keep the ideas and vision alive, if not the C++.

The Exupery mailing list is here:


Exupery's tiny benchmarks are:

  1,176,335,439 bytecodes/sec; 16,838,438 sends/sec

and with the interpreter:

    228,367,528 bytecodes/sec;  7,241,760 sends/sec

Which makes it currently much slower than Strongtalk for sends but the
same speed for bytecodes. That's comparing against the numbers
provided by Gilad via Dan's post to squeak-dev. Such a comparison is
not fair as relative performance does vary greatly with
architecture. Exupery is best on P4's, ok on Athlons, and least
impressive on Pentium-Ms.

The bytecode performance is the most interesting to me. Exupery does
not yet do dynamic method inlining which explains Strongtalks strong
send performance. Message inlining is not necessary for a 1.0. That
the bytecode numbers are so close, and I know Exupery's weaknesses, is
interesting. Exupery uses a colouring coalescing register allocator
but also lives with Squeak's object memory and could do with a bit
more tuning. I'm guessing Strongtalk's object memory is much cleaner
and better designed for speed based on reading the Self papers. Did
the Strongtalk team stop tuning for bytecode performance after they
passed VisualWorks?

Exupery has also recently been ported to Win 32 and Solaris 10 x86.
Both ports were done by other people. Pre-built VMs will be available
for both platforms in a few days.


More information about the Vm-dev mailing list