A meta-language for building Go types with some interesting built in functionality:
- Forwards and backwards compatibility through statically assigned type and attribute identifiers
- A form of subtyping polymorphism
- Self-differencing: err, d = a.Diff(b) produces a record of the differences between two objects of the same type
- Self-patching: err = a.Apply(d) where d is a difference record generated by a.Diff(b) will transform a into b
- Compact and efficient binary serialization/deserialization of both objects and difference records to io.Writer/io.Reader