StOMP introduction
Overview:
StOMP is a binary serializer for major Smalltalk dialects. For those who know SIXX, StOMP can be seen as a binary SIXX. While SIXX represents object data as XML, StOMP uses MessagePack. By combining the flexibility of SIXX with the compactness of MessagePack, StOMP aims to be a unique, next-generation portable serializer for Smalltalk.
Features:
Compact:
StOMP is a fully functional serializer which supports shared/circular references. However, StOMP just consists of 20+ classes. StOMP data is an instance of MessagePack. So the data itself becomes pretty compact especially if you use simpler types.
Portable:
Currently StOMP is available for Squeak, Pharo, VisualWorks, VA Smalltalk, and Dolphin Smalltalk. StOMP has been carefully implemented so as to be portable to various Smalltalk dialects. Since portability layer is defined, adding a new dialect support would be easy,
Moreover, StOMP supports data interoperability. Serialized data is swappable between Smalltalk dialects (except platform-specific objects). StOMP data is also loadable to other languages that support MessagePack, because StOMP data is described in MessagePack format.
Optimized for small/medium data:
StOMP uses one-pass, simple recursion strategy for storing/loading objects. It achieves very low overhead when handling small sized object graph. Please see the benchmark results to know StOMP performance characteristics. StOMP is primarily designed for communications via RPC or KVS, which typically passes small set of objects.
Flexible:
StOMP provides a variety of hook methods for customizing serialization/deserialization behavior.
StOMP also supports class shape changes. By adding ShapeChanger in deserialization, you can load objects based on old class definitions.