Ruby Marshaling[]
- usage of Marshal module
- old draft
- ruby-doc.org
- document inside ruby repository
- format spec
- fixnum format doesn't include 'i'
- symbol format includes identifier since it can be real symbol(':') or symbol link(';')
- until 1.8
- 1.9 has encodings and there is no description about it.
- latest implementation
- gem to inspect marshal structure
- request of marshal module to mruby
- like Fiber will not be implemented for a while
- there is undocumented identifier 'e' that dumps class extending
- class name is class path so needs path_to_class api to get the class from it
binary examples[]
reading Marshal module[]
symbol table[]
- array of unique symbols
- when a unique symbol is defined with ':' identifier it is appended to the array
- symbol id of ';' identifier is index of the array
object table[]
- array of unique objects
- untracked identifier during loading
- nil, true, false
- fixnum
- extended
- symbol
- instance variables
- link
- sub class instance variables of string, regexp, array, hash
- untracked data types during dumping
- nil, true, false, fixnum, symbol
- note that float is tracked
"\004\b"[]
- means the marshal version
- the phrase is commonly used in marshaling tests.
- \b is 0x08 so "\004\b" is equivalent to "\x04\x08"
RubySpec[]
MessagePack[]
- binary serialization format
- has problem with string handling
- format spec
- header only C++ implementation
YAML[]
TOML[]
- YAML replacement
- like JSON+INI
- toml
INI[]
- used in windows config files
- wine registry use similar format
- wikipedia page
- escape sequence list
- simpleini
- header only C++ parser
XML[]
- expat
- fast C XML parser
- repository
JSON[]
- JavaScript Object Notation
- type list
- Object
- Array
- Number
- Boolean
- String
- Null
- JSON Template
- HTML Template language using JSON.
- Golang has support.
- json tester
- json-diff
- command to check json changes
- implemented with node.js
- JsonDiffPatch
- Diff & Patch for JSON (from project page)
- implemented with node.js
- main algorithm code
- jsondiff
- ruby json patch module
- yajl
- json library written in C