NewCompiler and Preferences compileBlocksAsClosures

Stephan Rudlof sr at
Mon Oct 16 20:33:50 UTC 2006

On 16.10.2006 15:09, Marcus Denker wrote:
> On 16.10.2006, at 10:51, Klaus D. Witzel wrote:
>> List,
>> the value of Preferences compileBlocksAsClosures can have a meaning
>> - for a single or a group of methods
>> - for all methods of one or more classes
>> - for the lifetime of the current session
>> - forever
> If you set this preference to true, new methods are compiled with the 
> closures. Even when you turn it off, these methods keep on having 
> closure semantics.
>> It is easy to predict problems when a method was compiled with 
>> Preferences compileBlocksAsClosures set true and, after it was 
>> distributed, whoever loads it has Preferences compileBlocksAsClosures 
>> set false.
> Yes.
>> Wouldn't it be time to make Preferences compileBlocksAsClosures a 
>> pragma (a method property), in the sense of a compiler directive, in 
>> the scope of the method being (re-)compiled.
> I don't think this is that good... we want to be able to recompile the 
> whole image with closures without needing to put a pragma in all methods.

What about two preferences
- compileBlocksAsClosuresDefault (default false, for methods without pragma and pragma value "followPreference")
- forceCompileAllBlocksAsClosures (default false with no effect then; overriding pragma and previous pref, if true)
, with a pragmaCompileBlocksAsClosures having three possible values
- true             (overriding compileBlocksAsClosuresDefault),
- false            (overriding compileBlocksAsClosuresDefault) or
- followPreference (following  compileBlocksAsClosuresDefault)

>    Marcus

Stephan Rudlof (sr at
   "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