[squeak-dev] [RELEASED] Squeak 4.1
andreas.raab at gmx.de
Sun Apr 18 03:05:24 UTC 2010
On behalf of the Squeak community, I'm happy to announce the
availability of Squeak 4.1.
Squeak 4.1 combines the license change occurring in the 4.0 release with
the development work that has been going on while the relicensing
process took place.
Much of the work in this release has been focused on fundamental
improvements. Major achievements are the integration of Cog's closure
implementation, the improved UI look and feel, the new anti-aliased
fonts, the core library improvements, and the modularity advances.
To download the Squeak 4.1 release please visit:
The Website will be updated over the next few days to reflect the
availability of Squeak 4.1.
- Andreas (on behalf of the Squeak community)
Overview of Changes in Squeak 4.1
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, which allowed us to decouple
the Morphic and MVC implementations for improved modularity. Morphic now
has 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:].
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 (press the blue button; 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.
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 ==
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:
More information about the Squeak-dev