[squeak-dev] Clamato

Dan Ingalls Dan at SqueakLand.org
Sun Sep 6 19:17:07 UTC 2009


>You claim that Clamato is a Smalltalk... for me, it implies
>that it is an object environment, e.g. it has support
>for at least this features:
>- snapshot (can be primitive) that save the complete
> environment (or subset) capable to restart without
> loosing valuable state/information.
>- become (&/or massive become) facility
>- allInstances or an efficient way to iterate instances
> of a class (species or something equivalent) not known
> before evaluation time (e.g. can´t predict wich will be the
> class to change design).

Hi Alejandro and all -

I think these concerns have already been answered by others, but I also had a few things to add.

Smalltalk (bless its soul) is both a nice programming language, and a great meta programming environment.  While I feel one should always have both, and I can't believe that everything done since 1970 or even 1980 isn't at least as good in both dimensions, we live in an imperfect world.

Along with its imperfections, this world nonetheless provides us with various opportunities, some that are elegant, and some merely pragmatic.  The ubiquity of JavaScript and the recent escalation of its performance are two significant opportunities that we would probably all put in the latter category.  Nonetheless they are opportunities.  That's what made me interested in the Lively Kernel idea (a "Smalltalk only at the level of Morphic with an IDE), and I think it's what got Avi thinking about Clamato.

I agree absolutely with the importance of the deep and elegant aspects of Smalltalk (natch), but I think it's also worth pondering and perhaps even embracing the possibilities afforded by the JS engines of today.

For example I lamented for a while the inadequate hooks to JS VMs so that we could not do tracing, execution counts or time profiles.  But (as you may know) it turned out that just one page of code allowed us to do all these on any JavaScript without any special VM hooks.  A little reflection (and JS does have some) goes a long way.

So I am sure we will find ways to recreate many of these deeper capabilities in JavaScript and, hey, if the engines get much faster, we can just run the Squeak Interpreter in JS (just kidding).

Now to my earlier comment about LK/Clamato synergy, and in response to the snapshot reference, one of the coolest things we did in the Lively Kernel, mostly the work of Robert Krahn, was to build a client-side wiki using WebDAV protocol to store web pages.  We also added a changeSet that was held onto by the World, so that it got saved with the page.  Then when the page gets loaded, it will re-eval everything in the changeSet, and -- voila -- all the old windows and objects in the world are restored, and so are all the changes prior to the save.  This is very much of the convenience of snapshots, including the ability to save from a Mac in Safari, and resume in, eg, Firefox on a PC.  Moreover the way Robert did it, you can also easily revert to any prior version which can be a great time saver.

I told my sad story of not having done the St syntax hack for April Fools, but here Avi has done all the work and has a real artifact to show for it.  It doesn't mean anyone should drop Smalltalk, but it does mean that there's now a real chance of recreating many of the powerful tools we love, and even much of the language we love, in an environment that is live on every desktop and half the phones in the world.

	- Dan



More information about the Squeak-dev mailing list