Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
Magma FAQs
Last updated at 3:25 am UTC on 3 August 2007

What system changes does Magma make to Squeak?

The design has purposely remained mostly above the Smalltalk meta layer to facilitate easy transition to future versions of Squeak. As Squeaks in-memory object structure is enhanced legacy databases may remain true to Magma's custom serialized format (which requires additional information anyway).

There are no system "changes", but there are one or two fixes. For a long time, I included these fixes to provide one-click loading. Since then, I have been advised to keep them separate.

Therefore, for 3.7 or 3.8, if you will be renaming classes while connected to a Magma repository, you will be interested in installing this fix:

http://bugs.squeak.org/view.php?id=1621

This fix has been accepted and integrated into the 3.9 alpha release so it shouldn't be needed there.

For 3.8 only, if you would like to enjoy maximum performance you will be interested in this fix:

http://bugs.squeak.org/view.php?id=1382

This fix has been accepted and integrated into the 3.8.1 release and the 3.9 alpha release so it shouldn't be needed there.

For 3.7 only, if you ever reference the Smalltalk global or any other very large Dictionary in your persistent domain, you will want to install this fix.

DictionaryEquivalencePerformanceBoost.cmm.cs.gz

What versions of Squeak does Magma work?

3.7, 3.8, 3.9, Tweak, Croquet and sq3.9-7067dev07.07.1 (Squeak dev from Damien Cassou) have been tested. Other images may work, but have not been tested.

3.7 and 3.8 images will produce warnings when loading due to differences in the images. Just Proceed past these and Magma will be loaded completely and correctly for that image.


What classes of objects does Magma support?

See Magma Supported Classes.


Does Magma save class variables or class-instance variables?

No. Those are variables persisted in your image and are ignored by Magma.


When persisting an object, what is the situation regarding persistency of the Dependent object?

The default behavior of Magma is to persist the directly connected graph. With the standard dependency mechanism, dependents are not directly connected, so they will not be persisted.

How does Magma interact with the classes in my image? What happens if I try to retrieve an instance of a class that I don't have defined in my image? Will it compile the class dynamically?

Yes.

How do I protect my database from unauthorized access?

There is no authorization security built into Magma at this time. It is planned, however.


If I use Magma as a backend for Commanche, what kind of throughput can I expect?

It's hard to say because it depends so much on how its used. Here are some benchmarks from my computer. Magma tester comes with a benchmarking class so you can measure performance of various things to help determine suitability for a purpose.


How do you back up a live Magma database?

Not directly supported yet. In the meantime, there is a feature of the server (for adventurous users only) that may allow this to be implemented. A MagmaFileTraverser has been developed to provide a general facility for traversing the object buffers that make up the persistent graph. It can run in a background thread safely while the server is up. This ultra-easy-to-use class is currently being used for the compress function.

How does Magma handle "catastrophic" failures? (e.g. rebooting the computer without shutting down Magma)

See Magma Backup and Recovery.