Piqi-erlang and Piqi-RPC v0.7.0 Released

I'm pleased to announce the release of Piqi-erlang and Piqi-RPC v0.7.0!

There were two major groups of changes: rewriting the Piqi-erlang code generator
in Erlang and moving Piqi-RPC and Piqi-Erlang into their own repositories.

Both changes are extremely important and represent a major milestone. The
particular benefits include:

- From now on, Piqi-erlang doesn't depend on the core Piqi project development
  and release cycles. Before that, it was pretty much impossible to release the
  three projects (Piqi, Piqi-erlang and Piqi-RPC) independently.

- Packaging and using Piqi-RPC and Piqi-erlang has become a lot simpler. Now
  they look and act almost like any other Erlang library.

- The fact that Piqi-erlang code generation is written in Erlang opens up a
  clear path for contributions from Erlang users. No OCaml knowledge or even
  OCaml installation is needed.

To simplify things even further, separate release git branches are gone and
everything is now in "master".

There was only one backward-incompatible change. The "piqic-erlang-ext" compiler
and therefore *_piqi_ext.erl go away. "piqic-erlang" now generates serializers
and deserializers for multi-format converters as gen_/2, /3 and
parse_/2, /3 functions) directly in *_piqi.erl. Migrating to the new
version should be as easy as changing all _piqi_ext:* function calls to call
_piqi:* instead.

Some other functional changes:

- "piqic-erlang --gen-defaults" option is deprecated. "piqic-erlang" now
  generates _piqi:default_X/1 without asking
- generate default values for Erlang record fields if they are defined in the
  original Piqi spec
- add a new "erlang-default" alias property; when specified, it overrides the
  Piqi-default value for the type in the generated "*_piqi:default_/0"
  functions

Along with the new Piqi-Erlang and Piqi-RPC versions, we are also releasing Piqi
v0.6.5. This is mostly a maintenance release -- same as the four previous Piqi
releases (v0.6.1 -- v0.6.4). Among other things it includes:

- a fix for incorrect parsing of large (> 2^63 - 1) unsigned decimal literals in
  Piq, JSON and XML
- a new "json-omit-missing" field property that controls, on a per-field basis,
  whether to exclude "null" and "[]" fields from JSON output
- better piqic tooling support, namely inclusion of the original .piqi file name
  in the compiled Piqi spec

We have also made a significant progress in non-functional areas such as:

- The original documentation for Piqi, Piqi-RPC and Piqi-erlang is now a part of
  source code tree. You can find it under the doc/ sub-subdirectory of
  correspondent repos and format it any way you like.
- Continuous builds and tests(!) through Travis-CI. Some new tests were added
  and interfaces to run the tests were automated.
- Initial Debian and RPM packaging

Overall, this was a major effort and it wouldn't have been possible without
support of many Piqi users. Thank you everyone for your enormous support,
contributions and patience.

Special thanks goes to Motiejus Jakštys for bug fixes and numerous other
contributions in the areas of OS packaging, documentation building scripts and
Travis-CI integration.

I would also like to thank Dennis Docter who troubleshooted an Erlang name
normalization problem in the new "piqic-erlang" implementation and contributed a
solution.

Links to the changelogs and updated roadmap:

https://github.com/alavrik/piqi/blob/master/CHANGES
https://github.com/alavrik/piqi-erlang/blob/master/CHANGES
https://github.com/alavrik/piqi-rpc/blob/master/CHANGES
https://piqi.org/roadmap/

Comments are closed.