CONSPACK was inspired by MessagePack, and by the general lack of features among prominent serial/wire formats. Specifically, it focuses on the following:

  • A rich set of Lisp-oriented data types, being able to represent things like dotted lists, objects and structures, rationals, symbols, and the like.
  • A very compact representation, which can be smaller than MessagePack in some cases (particularly representing sequences of multi-byte numbers, or anything involving richer data types).
  • Full reference support including circular structures, multiple references to the same object, and "remote" references for custom handling.