[ANN] Magma 1.3
ma.chris.m at gmail.com
Thu Dec 8 22:08:25 UTC 2011
I am very pleased to announce the immediate availability of Magma 1.3.
The following detail the major improvements to 1.3 over 1.2:
BlockClosures (Contexts and CompiledMethods too, of course), can now
be stored in the database, even with references to inst-vars, self,
temps or globals.
Tom Rushworth developed a fantastic Split-Ordered list implementation
for Squeak. Working closely with Tom, this package has been extended
in Magma to support very large SOL collections, implemented as a
MagmaSolHashTable. Thank you Tom!
The MagmaSolHashTable is actually a fairly primitive collection, and
was used as the basis for two new collections: A MagmaHashTable and a
completely new implementation of MagmaDictionary which is much faster
than the old one (almost as fast as a preallocated dictionary).
Full Monticello Model
When using Magma as a Monticello repository the package versions are
not zipped but stored directly in the repository as native instances
of MCVersions, MCPackages, MCInfos, MCDefinitions, etc. All of these
original MC object instances are canonicalized so there is only ONE
copy of that MCMethodDefinition from 2002 which is shared rather than
copied in every version since. MCPackages are also canonicalized, as
is all ancestry!
For packages stored in a Magma repository, two new menu options
appear on the methods menu and classes menu:
browse mc versions
browse mc origin
The first shows all versions of a particular method or
class-definition across all MC versions saved to that repository, in
chronological order (no latency). The second opens the MC-Version
Inspector in which that version of the method was saved, to see the
version notes. This is very useful for quickly knowing WHY changes
were made. Note: Currently only Squeak has its IDE tools updated to
After two years dormancy, Avi Bryant's original WriteBarrier has been
resurrected for use in closure/Cog images. Its original dependency on
NewCompiler has been removed. With both the WriteBarrier and Cog, the
MagmaBenchmarker reports a new record maximum commit rate -- 456
commits per second !!
The WriteBarrier is now on by default, so nothing needs to be done to
enjoy the speed up.
A new extension to the WriteBarrier should now alleviate the need to
send #yourself to primitive arguments! Primitives which require
arguments are now overridden in the anonymous subclass so that the
arguments will automatically be ensured to be fully-reified for the
For performance, TimeSpans, Durations, DateAndTimes, Points,
Intervals, Colors are now immutable. Strings are also immutable by
default, but now a custom ImmutabilityStrategy may be specified,
providing fine control over immutability in case mutable Strings are
needed (or if other objects can be made immutable).
Magma 1.3 runs on Squeak 4.3 and Pharo 1.3. All of the packages have
been renamed in accordance with contemporary package naming
conventions employed by most other active Squeak and Pharo projects.
Platform-specific behaviors are now in platform-specific packages
(named with "-Squeak" or "-Pharo"). The package hierarchy is
documented at http://wiki.squeak.org/squeak/6178.
Many minor cleanups, fixes, and usability improvements.
This is, by far, the best Magma ever. Please enjoy the new version.
More information about the Magma