Data Format


 * detecting endianness using C union

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

 * motivation of the articles writer
 * part 1
 * part 2
 * part 3

reading Marshal module

 * basic
 * functions
 * version and binary

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

 * basic tests
 * load
 * float

MessagePack

 * binary serialization format
 * has problem with string handling
 * format spec
 * header only C++ implementation

YAML

 * home page

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