Is BC worth the image format switch?
stephane ducasse (home)
ducasse at iam.unibe.ch
Wed May 1 08:26:33 UTC 2002
I would like to know from SqC guys and other what is missing in BC that
would
impede its integration into the main image (like a decompiler...)?
I would like to know if the new architecture is a problem for other
processors.
I think that it would be good to have a list of things that should be
developped.
I'm really concerned by the fact BC is a big changes and that some people
may be afraid to change. This would be a pity to have a big change
discarded just because this is a big change.
Stef
On Tuesday, April 30, 2002, at 09:32 PM, Anthony Hannan wrote:
>
> --- Roger Vossler <rvossler at qwest.net> wrote:
>> I read the material concerning Block Closures (BC) on the GaTech web
>> site, but it's a bit beyond my meager understanding.
>
> Sorry it is just technical, hopefully the answers below will help.
> Others may
> want to add to my answers.
>
>> I have a couple of questions:
>>
>> 1) Why is BC so important?
>
> BC speeds up the Interpreter and correctly interprets the scopes of
> blocks. To
> elaborate on the second point: Blocks holding their own temps (block
> closures)
> is more correct from a scoping point of view than method contexts holding
> the
> temps for its embedded blocks (current Squeak). For example:
> #(a b c) do: [:s | [Transcript show: s] fork]
> will print 'abc' in the BC version but 'ccc' in the current Squeak
> version.
> The BC version is correctly scoped because the block variable s has a
> different
> binding on each iteration. However, in the current Squeak version the
> block
> variable s has only one binding held in the home method context and just
> changes value on each iteration. By the time the forked blocks are
> executed s
> is holding the last value.
>
>> 2) What does one gain from this capability?
>
> You gain correctly scoped blocks, which allows you to more easily create
> truely
> independent functions/blocks. Sometimes this is preferred over creating
> special small "function" objects or using additional methods just so you
> have
> another scope to bind temps to. For examples of sophisticated uses of
> blocks
> that would not work in the current Squeak implementation unless they were
> rewritten using more methods/classes, see the block closure test cases in
> the
> BC image or on the BC swiki page in the Convert section.
>
>> 3) Do most other Smalltalk systems have this capability?
>
> Yes.
>
>> 4) Is this capability "nice to have" or is it "really essential"?
>
> It is not essential since code like the example above can be rewritten to
> use
> an intermediate method to provide the missing scope. For example, the
> following will work correctly in the current Squeak implementation:
> UndefinedObject compile: 'forkWriting: s [Transcript show: s] fork'.
> #(a b c) do: [:s | self forkWriting: s]
> BC just makes it much easier to make these blocks independently scoped.
>
>> 5) If BC is "really essential", how has Squeak managed to get along
>> without it thus far?
>
> Block closure is not essential as noted above. But it does force people
> to
> sometimes write code the long way like the example above.
>
>> I'm not looking for detailed technical information, but rather, an
>> indication of why the Squeak community needs to make this change
>> which apparently has big impacts on image formats, VMs, et al. As
>> someone noted: we don't want to do this more than once.
>
> Two main reasons why Squeak needs BC are:
> 1. Block closures conform to the scoping rules of [...] (BC is more
> correct).
> 2. This BC implementation is faster. Since the interpreter had to be
> changed
> anyway to accomodate block closures I took the opportunity to make further
> changes to speed up the whole interpreting process.
> Either of these may be important enough, but together, I think they (plus
> possibly other VI4 enhancements) makes it worth the pain to switch the
> community to a new image format.
>
> Of course, we can make the switch as painless as possible by providing the
> image converter with the new VM and have the new VM trigger the converter
> when
> it tries to open an old image. The major problem is that image conversion
> takes a long time (about an hour on a 3.2 image on my 533MHz Intel). Also
> trying to open a new image with an old VM will just report a bad format
> message.
>
> Cheers,
> Anthony
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Health - your guide to health and wellness
> http://health.yahoo.com
>
More information about the Squeak-dev
mailing list
|