Piqi 0.5.6 Released
This is the first Piqi release where most changes were driven by feedback from Piqi users. I have been receiving all kinds of it: bug reports, scalability and performance concerns, minor annoyances and usability problems, platform support and fairly major feature requests. Thanks to all Piqi users for the feedback and for staying involved!
This release includes many improvements as well as new features in various Piqi components.
First of all, Piqi now supports “packed” binary encoding for primitive numeric types. With this last piece, Piqi implements all Google Protocol Buffers features and becomes fully compatible with it.
For OCaml users, there’s one new big feature: multi-format data serialization. In addition to Protocol Buffers, support has been added for serializing OCaml values in JSON, XML and Piq formats. Check some examples here: https://github.com/alavrik/piqi/blob/master/examples/ocaml/io_json_xml_pb.ml
Other OCaml-related highlights include:
- An option to represent repeated fields and lists as OCaml arrays (by default they are represented as lists).
- Serialization of arbitrary OCaml types using a new extremely simple and flexible mechanism by mapping them to Piqi types. This mechanism can be used, for example, for serializing OCaml’s chars as integers or bigints as decimal strings. There are some examples at: https://github.com/alavrik/piqi/tree/master/examples/ocaml-custom-types/
- Rebar packages are now available for Piqi and Piqi-RPC.
- JSON and XML serialization now takes advantage of multi-core and overall became faster with decreased latencies.
- Protocol Buffers deserialization is now 30% faster (special thanks to Hunter Morris for this contribution)
- Serialization of arbitrary Erlang types. It works by mapping an Erlang type to some serializable Piqi type. By using this mechanism, it is easy to add support, for example, for serializing bignums to decimail strings, or any Erlang term to a binary. Some examples are available at: https://github.com/alavrik/piqi/tree/master/examples/custom-types/
Starting from this release, Piqi also builds on Windows using MinGW and Cygwin toolchains.
The full list of changes is available here: https://github.com/alavrik/piqi/blob/master/CHANGES