Real closures

Andreas Raab andreas.raab at gmx.de
Sat Oct 7 20:19:15 UTC 2006


bryce at kampjes.demon.co.uk wrote:
> There are two separate issues:
> 1) Why Anthony's VI4 work was rejected?

Anthony's work moved away from the linked-frame representation and put 
(overlapping) frames into stack segments, and pretty much everyone who 
looked at it didn't like the exposure of stack segments (there are some 
interesting issues with stack manipulation when you do that). The 
general feeling was that if a VM wants to play these tricks they should 
be hidden under the hoods and the "user model" should remain simple 
linked frames.

> 2) Why we haven't yet incorporated the new compiler work that Anthony
> did then Markus has been maintaining?

It's not complete. The last time I tried using it I gave up after the 
umphteenth "Token not expected" error message (which is apparently the 
only error message that SmaCC knows). Also, decompilation was never 
completed, the compiler is about 4x slower than the current one etc.

Seriously, if you wanted closures a better bet may be to take the 
existing infrastructure and hack that support in the current 
compiler[*]. If you know what you're doing this takes a couple of weeks 
but then it's done. The trouble with that new compiler is that while 
it's used for a lot of exciting research there doesn't seem to be anyone 
who is willing to spend the time to address the "boring" issues that are 
so important for the non-research users of a compiler.

[*] And I may yet do that for Croquet because we have plenty of non-lifo 
blocks which may need #fixTemps and I don't really want to explain to 
people when and where exactly they need to do it. That's why I looked at 
the new compiler in the first place. Unfortunately, given the choice 
between (the relatively rare) #fixTemps and the (very common) "Token not 
expected" error message, I choose to live with the former every time.


Cheers,
   - Andreas



More information about the Squeak-dev mailing list