[squeak-dev] Updated trunk image (Squeak3.11-8472-alpha.zip)

Andreas Raab andreas.raab at gmx.de
Sun Dec 13 03:39:04 UTC 2009

Folks -

In accordance with the earlier discussions I've uploaded a new trunk 
image with the version designator set to 3.11alpha and the new update 
numbering scheme (now at 8482):


Below the summary of changes.

   - Andreas
[------------------------- updated 12/12/09 ---------------------------]

Image Version
The new version scheme is now active. The image version number is the 
sum of all package versions. A stub package "Squeak-Version" has been 
added to define the "base" number for the version. This image is 
designated as "Squeak3.11.alpha".

New window resizers better in tone with the general UI look. A new 
UserDialogBoxMorph for simple modal inform/confirm dialogs.

StandardFilestream now performs read-buffering, dramatically speading up 
some operations like "Object compileAll" (2x improvement) as well as 
various other operations (scanning change lists etc).

Implementations for Float #predecessor, #successor etc. Update to the 
compact class indexes of LargePositiveInteger and LargeNegativeInteger 
for Cog. Additional tests for all of the new features.

OutOfMemory has been added as a standard exception being signaled when 
an allocation fails, replacing the previous signaling of the low space 
semaphore. Improved #ensure: performance avoiding remote context 
manipulation (via #tempAt:put:) in the default case.

Faster execution by speeding up some low level operations (like 
allTestSelectors). Fixes for thumbnail creation which would leave open 
morphs around after some tests.

The default hash for all objects is now a scaled identity has to avoid 
extreme degradations in speed when using large numbers of objects 
without explicit hash implementation in Dictionary and Set.

[------------------------- updated 11/28/09 ---------------------------]

Menu Bar
Squeak now has a standard menu bar to make it easier to discover its 
contents for new users, replacing the World menu as the prime source for 
launching tools and other activities.

Support for literal ByteArray syntax has been added. Byte arrays can now 
be written as #[1 2 3 "..."] instead of #(1 2 3) asByteArray  avoiding 
the need for conversion and a more compact default representation.

Some prime related changed: Integer>>isPrime is now a deterministic 
test, Integer>>isProbablyPrime a probabilistic variant. Intger>>highBit 
and Integer>>lowBit have been sped up significantly.

CRLF Handling
CR and LF are now treated interchangeably in rendering. Both cause a 
line break and both are not displayed. Various line related methods have 
been updated to deal with both CR and LF.

Dictionary is no longer a subclass of Set. HashedCollection is the new 
superclass for both Set and Dictionary. Conversion of OrderedCollection 
and SortedCollection to Arrays has been sped up significantly.

[------------------------- updated 11/14/09 ---------------------------]

Support for isolation layers has been retired. "self-evaluation" as a 
concept has been removed since every object can be forced to be 
self-evaluating by asking for its storeString.

Project refactoring are an ongoing process. Project itself has been 
split into Project / MVCProject / MorphicProject such that Project 
itself is abstract and various requests are handled properly in the 

Several improvements have been added to Collections. Sets have become 
faster, Arrays now print in brace form by default, Dictionary>>keys 
return an array instead of a set.

Various load-order issues have been fixed within Monticello, making 
loading of packages more robust. Monticello and PackageInfo have been 
sped up in several areas making browsing of large repositories 
significantly faster.

Faster UTF-8 Conversions
Generalize trick from ByteString>>#squeakToUtf8 to every converter using 
class instance variables. Dramatically improves performance of file 

An adaptation of Newspeak's Facelift look has been added to Squeak under 
the code name of "Botox" (meaning a small set of carefully chosen 
injections to improve the out of the box look for Squeak).

Shout (Syntax Hightlighting As You Type) has been added to this image. 
As with all new additions, it can be easily unloaded for people wanting 
smaller images.

ToolBuilder conversion
All the tools have been given a make-over, removing pretty much all of 
the interface construction code and replacing it by ToolBuilder specs. 
This removes a huge amount of dependencies between the tools and 
particular UI frameworks, and puts all the UIs on equal footing (there 
were several tools that were either not all or only partially supported 
in MVC before).

New Text Editors
A complete new set of text editors (Editor, TextEditor and 
SmalltalkEditor) are available. They replace TextMorphEditor and break 
one of the last hard links between Morphic and MVC. With the new editors 
it will finally become possible to have Morphic be self-contained 
without the need to rely on portions of MVC.

Morphic Text Improvements
Morphic has now regular blinking insertion point cursors instead of the 
(virtually invisible) static cursor previously. In addition, various 
problems with mixing fonts and the heights of text have been fixed.

Preference Pragmas
Preference pragmas simplify dealing with preferences by providing 
automatic discovery for preferences defined in your classes. No more 
littering Preferences; you can now define preferences local to your 
class and store the values in regular class variables. The preference 
gets automatically discovered by using the 
<preference:category:description:type:> pragma.

Beautiful, Anti-Aliased Fonts
We have a new set of beautiful anti-aliased Deja Vu bitmap fonts in this 
image. The default sizes include 7pt (for handheld devices), 9pt 
(generic text, list and menu fonts) as well as 12pt (window and title 
     Deja Vu 7pt: Regular, Bold, Italics
     Deja Vu 9pt: Regular, Bold, Italics
     Deja Vu 12pt: Regular, Bold, Italics

Russian Language Support
To input text in Russian language, install a font supporting the 
Cyrillic alphabet, then switch the locale accordingly:

     TTFileDescription installFamilyNamed: 'Arial'.
     Locale switchToID: (LocaleID isoLanguage: 'ru').

This will enable Russian text input, display and processing.

Improved Truetype Support
The new TTFileDescription works just like TTFontDescription but operates 
on the files directly on disk. This helps greatly to support the m17n 
efforts since we no longer load all the fonts into memory. To use the 
available fonts on your platform, select some text, hit Cmd-k (Alt-k) 
and select "More (non-portable) fonts".

Full Closure Support
This is a closure converted image. With full closure support, you can 
finally use recursive blocks like here:

     fac := [:n| n > 1 ifTrue:[n * (fac value: n-1)] ifFalse:[1]].
     fac value: 5.

and close over temps correctly, such as here:

     (1 to: 10) do:[:i| WorldState addDeferredUIMessage:[Transcript cr; 
show: i]].

A new Development Model
This image is being developed using a new development model described at


The image itself started as Squeak3.10.2-7179-basic.image. It was then 
updated from http://source.squeak.org/trunk. In order to keep track of 
ongoing development, simply hit the 'Load Code Updates' button.

More information about the Squeak-dev mailing list