[squeak-dev] Squeak 4.1 release candidate 2

Andreas Raab andreas.raab at gmx.de
Mon Apr 5 00:12:05 UTC 2010

Folks -

I've prepared rc2 for testing of the 4.1 release on Squeak.org:


If you look at the release schedule [1] you'll notice that we're 
slipping a little (which I had expected). The new release candidate 
includes the following changes:

* Condensed sources file. As previously mentioned, the new sources file 
is a strict superset of the 4.0 sources file and preserves version 
history between 4.1 and 4.0.

* Welcome notice(s). Please review in particular the welcome screen. 
I've attached the welcome note below for review and improvement. If you 
see anything that hasn't been mentioned but should, please let me know. 
I've also revived two workspaces that I found useful in the past, one 
about some of the less common UI elements and one about how to work with 

* An updated Windows VM (4.0.2) which fixes various issues with 4.0.1.

(Ian, if you could build an updated installer I'd appreciate that)

As it stands, we're currently missing updated Unix and Mac VMs (I know 
Ian has been working on it, so I'll ping him and John separately), we 
still don't have all tests green, and there are still a few open issues 
on Mantis [2].

If you can offer any help on any of these issues, you're extremely 
welcome. I'm still hopeful that we can ship 4.1 with minimal delay but 
in order to do that we need to address the pending issues, in particular 
the failing tests.

And of course, please keep testing. Load your packages, run them, make 
sure they work!

   - Andreas




	Welcome to Squeak - a free, open Smalltalk system.

Squeak 4.1 combines the license change occuring in the 4.0 release with 
the development work that has been going on while the relicensing 
process took place. Here are the highlights of the changes that resulted 
in Squeak 4.1:

User Interface
We have adapted the 'face lift' look originally developed for Newspeak. 
For those of us who like colored windows (quite a few as it turns out) 
you can switch between uniform and colored windows in the 'Extras' menu 
under 'Window Colors'.

The new menu bar makes Squeak much easier to discover than before. The 
process of transitioning from the world menu is not complete yet, there 
are still items that can only be accessed from the world menu (i.e., by 
clicking on the desktop).

The search field integrated in the menu bar allows for direct navigation 
to classes and methods - simply type in a partial class or method name 
and see what happens.

A new set of inexpensive sub-pixel antialiased fonts derived from the 
DejaVu fonts ('Bitmap DejaVu' in the font chooser) has been added. True 
type font support has been upgraded to operate directly on files on disk 
without the need to load the entire file into memory.

A new set of text editors has been added, allowing to decouple the 
Morphic and MVC implementations for improved modularity. Morphic has now 
regular blinking insertion point cursors instead of the (virtually 
invisible) static cursor previously.

Squeak 4.1 includes the closure implementation from Cog as a 
prerequisite for full Cog adoption later. With this implementation 
Squeak finally has 'full' closures, allowing classic recursive examples 
like the following to work:

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

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.

Selectors including minus are now parsed correctly, for example 3 <- 4 
is now parsed as (3) <- (4) instead of (3) < (-4). White space is no 
longer allowed after an unary minus to denote a negative number literal.

Syntax highlighting, based on Shout, is now included in all Squeak tools 
by default. For workspaces, it can be explicitly disabled in the window 
menu (entry 'syntax highlighting').

Sources and changes files are no longer limited to 32MB max size. 
ExpandedSourceFileArray provides an implementation for source files of 
arbitrary length, based on the CompiledMethodTrailer changes.

MessageTrace has been added, allowing senders and implementors to be 
viewed without opening new windows all the time.  It utilizes a new 
AlternatePluggableListMorphOfMany, which allows quick and easy 
customization of the list. A quick adoption of DependencyBrowser has 
been added allowing to browse dependencies between packages.

Core Libraries
Sets can now store nil just as any other collection. The collection 
hierachy has been refactored to have both Set and Dictionary a subclass 
of HashedCollection instead of having Dictionary a subclass of Set. 
Squeak now uses a better distributed scaledIdentityHash for identity 
sets and dictionaries.

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).

A new traits implementation has been added. The implementation is 
significantly smaller and simpler than the old version and can be 
unloaded and reloaded without loss of information (i.e., traits 
flattened during unload are restored during traits reloading).

A new extensible number parser hierharchy has been introduced 
NumberParser and its subclasses provide support for parsing and building 
numbers from strings and streams.

A new general cleanup protocol has been added. The cleanUp protocol 
takes an optional argument to indicate whether we're doing an aggressive 
cleanup (which involves deleting projects, change sets, and possibly 
other destructive actions) or a more gentle cleanup that's only supposed 
to clean out transient caches.

SystemDictionary and SmalltalkImage have been refactored. Smalltalk is 
now an instance of SmalltalkImage, representing a facade for system-wide 
queries and actions. SmalltalkImage contains a global environment, an 
instance of SystemDictionary, which the environment used by classes. 
Thus, SmalltalkImage current == Smalltalk, Object environment == 
Smalltalk globals.

The following packages have been made reloadable: ReleaseBuilder, 
ScriptLoader, 311Deprecated, 39Deprecated, Universes, SMLoader, SMBase, 
Installer-Core, VersionNumberTests, VersionNumber, Services-Base, 
PreferenceBrowser, Nebraska, CollectionsTests, GraphicsTests, 
KernelTests, MorphicTests, MultilingualTests, NetworkTests, ToolsTests, 
TraitsTests, XML-Parser, Traits, SystemChangeNotification-Tests, 
FlexibleVocabularies, EToys, Protocols, Tests, SUnitGUI. To unload all 
of these, execute:

	Smalltalk unloadAllKnownPackages.

More information about the Squeak-dev mailing list