MessagePack serialization library for various Smalltalk dialects / msgpack.org[Smalltalk]
MessagePack serialization library for various Smalltalk dialects.
Sources are put as Cypress for the neutral accesses from various Smalltalk dialects.
MpMessagePack pack: <your object>
or:
<your object> messagePacked
MpMessagePack unpack: msgpackBytes
or:
Object fromMessagePack: msgBytes
map := Dictionary new.map at: 'someArray' asByteArray put: #(1 2.2 #[3 4 5]).packed := map messagePacked.(Object fromMessagePack: packed) inspect.
writeStream := WriteStream on: ByteArray new.encoder := MpEncoder on: writeStream.encoder nextPut: 1.encoder nextPut: #(2 3).dic := Dictionary new.dic at: 4 put: 5.encoder nextPut: dic.encoder nextPut: 'four' asByteArray.bytes := encoder contents.readStream := ReadStream on: bytes.decoder := MpDecoder on: readStream.[decoder atEnd] whileFalse: [Transcript cr; show: decoder next printString]
Please read HowToInstall.md.
Installer squeaksourceproject: 'MessagePack';install: 'ConfigurationOfMessagePack'.(Smalltalk at: #ConfigurationOfMessagePack) project development load
Metacello newbaseline: 'MessagePack';repository: 'github://msgpack/msgpack-smalltalk:develop/repository';load.
You might need MpTypeMapper initializeAll on new encoder/decoder-related updates.
Starting with Squeak 5 and 6, DateAndTime only supports microsecond precision. Because of this, nanosecond values are not properly decoded as DateAndTime.
Two unit tests (testPackUnpackTimestamp64, 96) fail on Squeak 5 and 6.