[experimental][BCS][VM] Yet another block closure semantics implementation

Stephan Rudlof sr at evolgo.de
Wed Feb 20 17:38:53 UTC 2002


Hy Stef, hy Squeakers!

ducasse wrote:
> 
> hi Stefan

Stephan ;-)

> 
> Have you look on how what you learned could be included in the work of
> Anthony's

Not so far.

> because I do not really see the point to have now two
> implementation of BC.

But it doesn't hurt ;-)

> Because even if the approach of Antony is more complex
> it works so what would be the point to have a simple version.

If I would need BCS in a small separable area - e.g. sort blocks constructed
in functional style - *now*, I would use my implementation...

> Especially
> after the long emails sent by allen wirfs-brock on how to integrate BC.

I haven't had time to follow the discussion, since I wanted to come to some
end with my implementation first.

> 
> However when I see the speed gain with the version of Antony I know that I
> would really like to use it.

This speed gain is the main reason, why I'm very modest regarding my
implementation.
What's unclear to me is from where the speed gain mainly comes, since there
have been some speed improvements by Anthony, which are independent from BC
semantics, too: I think of CGeneratorEnhancements-ajh.cs and manually
crafted VM bytecode methods here.

There should be much room for getting a speed gain for my implementation,
too...


Some more remarks are following.


Why have I worked at my implementation until results have been visible?
-----------------------------------------------------------------------

- It has made fun!
- To have a BCS implementation without waiting for others to finish theirs;
- to push others to finish their implementation (last two motivations have
decreased after Anthony has published his first results);
- proving to myself, that I'm able to realize such an ambitious project;
- I have announced that I'm working at BCS and there have been two
alternatives:
	- to stop the project without any results, or
	- to work until some results;
- I don't like unfinished projects;
- understanding BCS in depth;
- learning about many core aspects of Smalltalk/Squeak.


Why have I published the results?
---------------------------------

In short: it's open source!

Longer:
- I have changed many core classes of Squeak, so I had to publish - in the
spirit of the SqueakL - my results.
- Some properties of my implementation, which I see, may it make useful for
others, e.g.
	- to use BCS with compatibility to current images,
	- to migrate to Anthony's solution.
- Some properties of my implementation, which I do *not* see, may it make
useful for others.
- Proving to others, that I'm able to realize such an ambitious project ;-)


What are my short term plans regarding BCS?
-------------------------------------------

- To give others an idea about what I've done by updating the
	Draft for Block Closure Semantics for Squeak
to fit the current implementation (coming the next 12 hours);
- to make the Debugger more usable;
- to increase the speed somewhat by selective cloning of BCSBlockContexts.

After that it could make sense to make real speed measurements.


Postscript
----------

I know, that I'm late with this implementation, but hey: that's life! (and
my retardation after Anthony's first concrete announcements)
I know, that the chances to get it into the official distribution are low.
I also know, that my chances to push this implementation to production code
quality alone are low (especially compared with the efforts of many people
to get production quality for Anthony's implementation and taking my limited
time into account).

But in spite of this currently it continues to make fun to improve it...

Greetings,

Stephan

> 
> > Dear Squeakers,
> >
> > I have finished my - very personal - BCS implementation, see
> > http://minnow.cc.gatech.edu/squeak/1810
> > for a description and instructions to get it running.
> >
> > It
> > - differs a lot from Anthony's approach,
> > - is not so ambitious conceptually, and
> > - is slower,
> > but in spite of this there are areas, where using it could make sense:
> > - step by step migration to full BCS semantics,
> > - running both semantics in parallel.
> >
> > It is compatible with Squeak3.2gamma as with Squeak3.3alpha (just tested).
> >
> > The hard semantic tests (thanks to Boris Gaertner and Rob Withers!) I know
> > are all running OK; if you should detect errors in the semantics, please
> > cry!
> >
> > There is left - probably much - room for optimizations (and bug fixes ;-) ).
> >
> > If there is some interest I could update the outdated
> > Draft for Block Closure Semantics for Squeak
> > to match the released implementation (but give me some time then, I have to
> > work in my money making job...).
> >
> >
> > Greetings,
> >
> > Stephan

-- 
Stephan Rudlof (sr at evolgo.de)
   "Genius doesn't work on an assembly line basis.
    You can't simply say, 'Today I will be brilliant.'"
    -- Kirk, "The Ultimate Computer", stardate 4731.3



More information about the Squeak-dev mailing list