*Development Direction*

Brian Rice water at tunes.org
Wed Sep 27 20:20:19 PDT 2006


Ahem! Apparently I can only post to Google Groups through their web  
interface? How disappointing. The message went through after a third  
try, unfortunately not allowing a CC.

On Sep 27, 2006, at 7:20 PM, Brian Rice wrote:

> (Reposted from my google account.)
>
> I suppose it's time for me to chime in.
>
> On Sep 27, 2006, at 6:51 PM, Josh Scholar wrote:
>
>> I've been interested in implementing a dynamic language with full  
>> type
>> feedback optimization...
>>
>> I looked at squeak and decided that the VM code is unredeemable.   
>> It's
>> a complete mess, badly designed, not at all object oriented at its
>> base, unprofessional, disorganized and developed by too many people
>> over the years.  It's so bad that I think it's almost impossible to
>> do simple things like adding a new field to a type that used by
>> primitives. They didn't use such modern advances as structures in  
>> the C
>> code.
>>
>> The original idea of Squeak, to write Smalltalk in Smalltalk was a  
>> hack
>> that only lasted long enough to debug the first version of the VM.
>> After that, the emulation code rotted, no longer works, and cannot be
>> resurrected.  There are semantic differences between the Smalltalk
>> emulation and the C compiled code that cannot be bridged.
>>
>> So while it should be possible to port classes over from Squeak, I
>> wouldn't dare try to switch the VM over.  Certainly not with a
>> populated image...
>
> The "clean" Slate project (at http://slate.tunes.org ) set out to  
> implement a system with these problems fixed, and references the  
> Strongtalk system with good reason. We did make a better C- 
> translation dialect that we refer to as Pidgin - it is much more  
> idiomatic and does generate C structure types and uses them. The  
> source code is extremely clean and concise - the VM is separated  
> modularly into a bytecode interpreter, object memory, garbage  
> collector, and supporting primitive operations. Each module has an  
> understandable interface and can be replaced easily. Interpreters  
> can be used as processes and could potentially be usable for OS- 
> level thread managers.
>
> However, we never had the kind of attention paid to the VM which  
> would complete the dynamic inlining. But more importantly, the  
> libraries were *designed* with an inlining compiler in mind (and we  
> used the Strongtalk collection libraries as a template), so there  
> is a tremendous method-call overhead with even simple operations,  
> making Slate much slower than Squeak right now, even if its  
> libraries are much more powerful and well-factored. Hence, I would  
> also like to participate in this discussion and hopefully partner  
> with someone to bring these advances to Slate. Without them, the  
> project is just not very useful.
>
>> The images are another problem.  When I stopped following a year  
>> ago or
>> so, there was no way to create a clean image, and my attempts to run
>> each of the many image walkers failed. I love the process and data
>> persistence of Smalltalk images, but the Squeak project shows just  
>> how
>> pernicious it is to have a system with no ability to start clean.
>
> There is a Squeak image bootstrap package now, and Spoon also has a  
> solution for this. Granted, they are difficult to work with. Slate  
> does bootstrap images from scratch (even via make-rule), albeit not  
> in an incredibly flexible way. That said, we can make everything  
> from a "3+4" image up to a full one with development support by  
> changing the code-sources specification list.
>
>> Just try to find out what each object and process in a Squeak image
>> does... and good luck with that! However I do think that someone had
>> written a special VM to help solve that problem - one which weeded  
>> out
>> objects that weren't used in a specific run, or which ported objects
>> from a different image as needed, with user interaction for each
>> object.
>
> Craig Latta's Squeak-based Spoon project includes tools for doing  
> that thing, for example using bit-flags to trace whether methods  
> were called.
>
>> My own project hasn't gotten far enough to make public yet, but I
>> decided on Ruby as much better starting point because the code is
>> readable and pretty clean - an amazing accomplishment for a project
>> written in C.
>
> Unfortunately, Ruby's grammar is problematic, as conversations I've  
> had with some MetaRuby contributors has indicated.
>
> --
> -Brian
> http://tunes.org/~water/brice.vcf

--
-Brian
http://tunes.org/~water/brice.vcf

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
Url : /archives/slate/attachments/20060927/85631520/PGP.pgp


More information about the Slate mailing list