The first alpha release for Magma 1.3 is available on SqueakMap.
The following detail the major improvements since the 1.2 stable release.
-- Introducing MagmaSolHashTable.
A special kind of collection based on Tom Rushworth's SOLHashTable,
which maps Integer keys to an object with O(1) access. Duplicate keys
are allowed and can be enumerated in key order.
-- New MagmaDictionary implementation.
Built atop MagmaSolHashTable is a complete replacement of the
MagmaDictionary implementation. The original MagmaDictionary was
based on an indexed MagmaCollection, which worked but not efficiently
because MagmaCollections incur too-high a query overhead for access to
a single object (via #at:).
This new implementation puts MagmaDictionary much closer to a
MagmaPreallocatedDictionary, but without the large pre-allocation on
-- Introducing MagmaHashTable.
Since it was so easy to implement atop the new MagmaSolHashTable, yet
another new kind of collection, MagmaHashTable, is also introduced. A
MagmaHashTable is similar to a MagmaCollection except:
- It can only query a range of one indexed attribute using #from:to:do:.
- It can't randomly access via #at: like a regular indexed
- Access is much faster.
-- Improved Monticello Integration.
In addition to a persistent domain model, each Magma repository also
contains a persistent code model, allowing packages to be browsed,
loaded and saved into the repository via the Monticello
For Squeak, if a Magma-based Monticello repository is part of
Monitcello's repository list, two new menu options in each of the
class and method-panes of Squeak browsers will be visible: "browse mc
versions" and "browse mc origin". The first lists all versions of
that method or class-def throughout all version history. The second
opens the version-comments box of the version in which that version of
the method or class originated, which can be useful for revealing why
it was changed.
For details, see: http://wiki.squeak.org/squeak/5603
-- Encapsulation of Application State + Behavhiors
Employing the Monticello integration, when a #fullBackup is executed,
all currently-loaded package versions (which are operating on the
model) of the client-image invoking the backup are committed into the
Magma repository's built-in Monticello repository model before
invoking the actual backup. All packages are saved, including Kernel,
System, Monticello, Morphic, etc. which can result in the first
#fullBackup taking a long time. If this is unacceptable, then a
#modelBackup can be used to back up only the domain model as before.
-- Better releasing code ensures all objects which should get GC'd, do.
-- Renamed Packages
The "Magma client" package has been renamed to "Magma-Client".
"Magma server" has been renamed to "Magma-Server".