[squeak-dev] what is smalltalk? (was: Smalltalk dialects and GSoC)

Jecel Assumpcao Jr. jecel at merlintec.com
Thu Feb 13 15:00:01 UTC 2014


Eliot Miranda wrote:

> I have to quibble here.  Newspeak isn't entirely compiled to Squeak bytecodes.
>  Lexically bound and dynamic super sends require special run-time support.  In
> the first implementation that took the form of escaping from bytecodes into a
> perform:-like invocation that was very slow.  In the second implementation we
> added two bytecodes that find the effective receiver, one for a lexically-bound
> send, and one for a dynamic super send.  But this is a security hole.  In the third
> implementation we have a new bytecode set, which sits alongside Squeak's,
> and this contains absent receiver sends for lexically-bound and dynamic super
> sends.  [and note, Newspeak, not NewSpeak]

Thanks for this history - I am *very* interested in this kind of detail.
Prior to 2009 I worked on several different VMs and while I am happy
with the results I achieved I came to the conclusion that they didn't
matter too much. I had come up with a simple patch to the Squeak VM that
would allow it to run the Slate programming language. I also noticed
that Self could run on top of the Squeak VM either with no changes or a
little bit better with changes similar to what you just described.

So I was convinced by discussions with a group of people that "perfect
is the enemy of the good" (Voltaire) and that any extra elegance in my
own designs was not worth not working with others (by sharing the Squeak
VM). 

> Yes, the details are important, but Self is an evolution of Smalltalk, just as
> Newspeak is.  Java is /not/ an evolution of Smalltalk.

Indeed, but the two issues are independent. When I implemented tinySelf
1 on top of Self the two languages were almost identical and yet the
implementation technique was of a completely independent layer (like the
Lisp or Prolog on top of Squeak examples I gave). So the three
alterantives are:

1) extend a language, like Objective-C or C++ extend C
2) add a layer, like Ruby is implemented in C
3) target an existing VM, like Clojure on the Java VM

In the first case the languages have to be related, but in the other two
we can't say anything. I only took a very superficial look at Newspeak
and my impression was that it borrowed as much from Beta (or perhaps E?)
as from Smalltalk. Obviously the opinion of the people actually working
on the language, such as yourself,  is more relevant.

-- Jecel



More information about the Squeak-dev mailing list