Squeak and native threads -- the Troll speaks.

Alan Grimes agrimes at speakeasy.net
Tue Jan 9 19:22:00 UTC 2007


=P

I've been trolling about squeak threading for years and years and years.
Ever since I gots me my dual Athlon.

I even started working on it before my hard drive crashed several years
ago. One of the issues that has held me back of late has been the long
trumpeted transition to 64-bit safe code. -- a major overhaul that could
not be paralelled with a similar major overhaul involving threading.

As far as I know, that project has stagnated and disappeared. The CVS
code, last I checked, was inconsistant and unusable. The 3.8 beta VMs
worked great (I can't remember the working configurations right now...)
but were never released to the website. The VM on the website is, as of
about a month ago, 3.7. -- while the image is on 3.9

The best that can be done for cheap is a PVM style system oriented
factorization of the VM where different sub-images are given different
responsibilities. These are then run in paralel, possibly even over
multiple hosts. This presents numerous problems. Most notable of which
being maintaining version consistency across the entire network. It's
main advantage is that it can be done without getting to deep into the VM.

A better solution will require a rewrite of the C-code translator. Only
someone with intimate knowledge of the compiler classes can do this
correctly. The new version must not include any examples of "class = Foo
 ifTrue: [bar]." where Foo almost always = Interpreter. It must also
create appropriate structs for each instance of each class. This is
critical because it permits the separation of Interpreter and
ObjectMemory which, in turn, permits a single ObjectMemory to manage and
GC the VM while multiple instances of Interpreter run around processing
Smalltalk threads.

For reason of my long term involvement in this subject, I am probably
the foremost expert on this specific subject, as well as the most
prolific troll. Second honors going to Ed Boyce.


-- 
|/-\|/-\|



More information about the Squeak-dev mailing list