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 disk required.
-- 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 MagmaCollectionReader. - 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 user-interface. 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".
-- Includes utility to upgrade legacy repositories to the next version of Magma.
magma@lists.squeakfoundation.org