[self-interest] Merlin and Self

Michael Latta lattam at mac.com
Fri Jun 18 23:42:20 UTC 2004

Thanks for more pointers, I will check them out.

On your example below.  In the presence of concurrency I would expect 
the result to be unpredictable.  I do not think that is a bad thing.  
It does make it harder to program, but is not incorrect.  The goal of 
making concurrent programming as easy as sequential programming will be 
quite an achievement.  I look forward to your work on this.  If I head 
in that direction I will let you know.


On Jun 18, 2004, at 4:29 PM, Jecel Assumpcao Jr wrote:

> On Friday 18 June 2004 14:47, Michael Latta wrote:
>> Did you ever incorporate the concurrency ideas from TinySelf into
>> your Merlin product?  Many of the Merlintec pages are very out of
>> date (the english ones anyway).  What is the current status?
> Sorry about the ugly and outdated pages. Unfortunately it will be a
> while before I get around to fixing that.
> I am currently finishing a 16 bit implementation of a Self processor
> (see http://www.merlintec.com:8080/Oliver), but that has a very
> traditional parallelism model (lightweight threads).
> The 32 (and 36) bit version is still in the design stage and does
> implement task switching in hardware using ideas from TinySelf 1. The
> main difference is that instead of having every single object run in
> parallel with all the rest, they are divided into groups which share a
> single message queue and execution stack. So messages within a group
> are sequential. A very poor and short description can be found in
> http://www.merlintec.com:8080/Software/Parallelism
> The main issue is "what is an object't state?" Just the bits in its
> slots? The bits in the slots of object it points to? The bits in the
> parents? We don't want the state to become inconsistent, so we must
> avoid concurrent changes to that state.
> Microlingua seems to have combined ideas from Slate and TinySelf to
> solve the problem in a way very similar to what Eiffel (from where I
> originally borrowed the idea) did:
> http://www.whysmalltalk.com/Smalltalk_Solutions/ss2003/pdf/rabb.pdf
> Here you lock the receiver and all the arguments before executing a
> method. I don't think that is enough -
>       mySubObj counter: mySubObj counter + 1.
> Since mySubObj is not the receiver nor an argument, it is not locked. 
> Or
> actually, it is locked for "mySubObj counter", then unlocked and later
> locked again for "mySubObj counter:". Another object might point to it
> and be executing this code at the same time.
> A drastic solution is to forbid sharing mySubObj, which is what Eiffel
> did. You had active objects and passive objects. The active ones were
> generally the roots of object trees, while the passive ones were the
> rest. A proper program must avoid having a passive objected pointed to
> by more than one active object. That is hard to enforce.
> I hope my solution works better, but haven't really given it much
> thought yet since my focus has been on the 16 bit project. But it is
> still an ugly hack and I would love to see a better idea. It should be
> enough to keep half a dozen processors busy, however.
> -- Jecel
> Yahoo! Groups Links

More information about the Self-interest mailing list