Strongtalk VM for Squeak

Dan Ingalls Dan at SqueakLand.org
Mon Sep 25 19:42:42 UTC 2006


I wrote a while ago...
> > The ironman engineering of Strongtalk seems a perfect match
> > for Squeak's cheerful insouciance.

and SmallSqueak responded (on the Squackers thread)...
>    Hmm, what was the expression ?
>    Ahh,  is it "straight from the Horse's Mouth" ;-)

...and hopefully not the other end, right? ;-).

It has been interesting to me to read the discussion here.

Most heartening is the warm support for Exupery, not only because it is from our community, but also because it is in the Squeak tradition of keeping things as metacircular (ie in Squeak itself) as possible.  I agree that it would be a mistake to undermine Exupery by whatever we did with Strongtalk.  It's my hope that we can continue to incorporate any improvements for performance in a Squeak-style framework as Bryce is doing with Exupery.

At the very least, Strongtalk can be taken as a living textbook on bold steps with Smalltalk, from which we can learn a great deal.  Just a few that come to mind:

	An optional type system
	I don't like having to declare types when I'm hacking, but I wouldn't
	mind a button in the browser that revealed them when I clicked on it.
	Plus people here have pointed out the extra leverage for refactoring.
	And in a novice scripting world, types and type inference (unseen)
	can provide extra leverage for the system to suggest valid options.

	Elimination of most global static state
	We keep talking about it but never doing it.

	A kick-butt interpreter
	I don't know how it compares with Exupery, but I think it's nearly
	three times as fast as Squeak.  I think there are tricks to learn from the
	way they assemble native code snippets to build the interpreter.

	A mature Mixin system which is useful to compare with Traits.

	And, of course, the type-feedback inlining compiler
	This is what puts Strongtalk in the "ironman" category.
	Again there is much to learn here.  it would be great to see
	this done in Squeak itself, as we have been mumbling for several years.

	Special optimization for floats
	This translates into the ability to do serious graphics without
	needing as much code to be in primitives.
	Their float benchmark is extraordinary.

The passion behind my earlier post was simply in the space of Smalltalk community synergy.  I look on this as a sort of celestial event -- I thought Strongtalk was the coolest thing ever done with Smalltalk (that and Self), I though it was dead with the added agony of having been buried alive, and suddenly the coffin lid has been raised and it is breathing again!  All of this at a time when dynamic languages are experiencing somewhat of a revival in popularity.

And I'm thinking, what if there's some kind of opportunity for another run at the fence -- some sort of scheme that opened the door for Pearl, Python, Lisp, Ruby, JavaScript and Smalltalk all to vie for being, say, the core dynamic language around which most Internet software would be written...

...Wouldn't it be cool if we could point not only to decades worth of cool media support, tutorials, games and development tools but also, a deployment engine that rivals the best in the industry.

It appears that there is enough of a community around Strongtalk to at least get it running again regardless of what we do.  But I felt (and thus the quote from before) that there was might be some low-hanging fruit worth reaching for, and that the result, independent of technical impact, would be to build the synergy of these two beautifully complementary communities, and thus strengthen the backbone of Smalltalk itself going forward.

The simplest project I had in mind (if I weren't already swamped (I know; we all are...)) was just to port Squeak's BitBlt to Strongtalk, fileIn all of Squeak (yes, this will take 206 tries ;-) make each native Strongtalk window into a Morphic project, and see how it all works.  Ideally this could be done carefully and a "bridge" procedure developed so that when the next Strongtalk or the next Squeak is released, someone can fairly easily prepare a corresponding StrongSqueak release.

Then there would be lots of fun stuff to do -- get speech and music going well, see how well Croquet runs with the fast float support.  See how many primitives can be thrown away in the faster system, etc., etc.

How hard would this be?  I don't know.  My guess is that this could all be done without even touching the VM, just by simulating a Morphic canvas in the Strongtalk world.  A lot more fun than the Sunday puzzle page, at least.

	- Dan



More information about the Squeak-dev mailing list