Generically, Magma supports all four types of Squeak objects:
Fixed objects with named variables
Variable objects with indexed variables
Variable byte objects
Variable word objects
However, several kinds of objects require some additional handling which is provided by the hooks in Ma object serialization.
Supported classes
The objects supported by Magma is largely determined by the objects supported by its underlying serialization framework.
And globals such as Smalltalk are serialized and materialized "by name reference". These kinds of object make use of various serialization hooks such as pre and post-processing, transient variables, and storage objects.
Supported classes:
The following is not an exhaustive list of supported classes, just a partial list of classes that are known to be used in existing applications.
any class that inherits from Object with only named instance variables. This should cover 99% of modern Squeak-user development.
not FileStreams (although that wouldn't be hard to do)
Various Morphs, the following are part of the test cases:
PasteUpMorph
RectangleMorph
StringMorph, TextMorph
BookMorph
EnvelopeEditorMorph, ScorePlayerMorph, PianoRollScoreMorph, SpectrumAnalyzerMorph, many others..
The following "by name reference" only:
any Class or Metaclass
Transcript
Smalltalk
Processor
Fonts
basically any global entry in Smalltalk is stored by reference
TextConstants at: #DefaultMarginTabsArray. and TextConstants at: #DefaultTabsArray.
CAUTION:
The following kinds of objects should get special scrutiny; they have not been tested.
Classes with both named and indexed instance-variables.
Subclasses of Set or Dictionary.
Weak anything (except the WeakSets in Morphs)
Running Processes (note: the test case actually includes a suspended Process that we resume in the other client and it seems to work, but that's the only test I've done, proceed with caution).
Open file streams (but I think we just need a postMaterialization block to reopen the file if it was open...)
Sockets
Obsolete classes (e.g., classes that begin with "AnObsolete" or "Obsolete")