[ANN] Magma 1.3

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

[ANN] Magma 1.3

Chris Muller-4
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:

Serializer Upgrade
====
        BlockClosures (Contexts and CompiledMethods too, of course), can now
be stored in the database, even with references to inst-vars, self,
temps or globals.

Split-Ordered Lists
====
        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
support this.

WriteBarrier Resurrection
====
        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.

Proxy Transparency
====
        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
super call.

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

Platform Independence
====
        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.

More
====
        Many minor cleanups, fixes, and usability improvements.

This is, by far, the best Magma ever.  Please enjoy the new version.

 - Chris
_______________________________________________
Magma mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/magma
Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Magma 1.3

Stuart Herring-2
On 9 December 2011 09:08, Chris Muller <[hidden email]> wrote:
> 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:
>

Excellent! Congratulations Chris, I'll look forward to trying it out.

Regards,
Stuart
_______________________________________________
Magma mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/magma
Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Magma 1.3

mmimica
In reply to this post by Chris Muller-4
On 8 December 2011 23:08, Chris Muller <[hidden email]> wrote:

This is, by far, the best Magma ever.  Please enjoy the new version.

I'm sure I will. Good job!


--
Milan Mimica
http://sparklet.sf.net

_______________________________________________
Magma mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/magma
Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Magma 1.3

Amir Ansari
In reply to this post by Chris Muller-4
Brilliant work Chris!  Magma is one of the highlights of modern Smalltalk.  Now you just need a website so *everyone else* can know about it!

Amir
_______________________________________________
Magma mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/magma
Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Magma 1.3

Mariano Martinez Peck
In reply to this post by Chris Muller-4


On Thu, Dec 8, 2011 at 11:08 PM, Chris Muller <[hidden email]> wrote:
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:

Serializer Upgrade
====
       BlockClosures (Contexts and CompiledMethods too, of course), can now
be stored in the database, even with references to inst-vars, self,
temps or globals.

Excellent. I will take a look.

Proxy Transparency
====
       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
super call.


I would like to take a look to this. In which primitives you need to send #yourself for example? This is because otherwise the VM will fail / crash because it expects the parameters of a primitive to be of a certain type rather than a proxy ?
Which are those subclases you mention that override the primitive methods? 

Thanks and congrats for the release.


--
Mariano
http://marianopeck.wordpress.com


_______________________________________________
Magma mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/magma