Piqi 0.6.0 Released

I am proud to announce that Piqi version 0.6.0 is released!

This is the second major Piqi release and the second biggest
milestone in the history of the project.

Release highlights
------------------

1.  With this release, the Piqi language self-definition [1]
    became stable. Why is it a big deal? There are several
    implications.

    - Any .piqi module (including self-definition itself!) can be
      automatically and reliably converted to and from any
      supported portable data formats. It means JSON, XML and
      Protocol Buffers supported today, but also any other format
      that Piqi may support in the future.

    - In practical terms, it means that programs written in any
      language can consume and manipulate type definitions from
      .piqi modules. Also, because external representation of
      Piqi modules is not going to change in a backward
      incompatible way, applications built around Piqi type
      definitions won't be forced to change often (if at all).

    [1] https://piqi.org/self-definition/#piqi_piqi_source

2.  Support for untyped JSON and XML and other changes in
    encoding handling.

    - As a new experimental feature, it is possible to represent
      untyped JSON and XML as values of `piqi-any` type.
    - generalized and improved encodings schemes for top-level
      JSON and XML values
    - improved documentation

3.  Build and distribution improvements

    - conventional ./configure script
    - for OCaml users, Piqi can be now installed via
      OPAM package [2] (OPAM is a new package manager for OCaml)
    - greatly simplified installation from source code on Mac
      (thanks to OPAM)
    - Piqi documentation is now a part of the main Piqi GitHub
      repository [3]

    [2] https://github.com/ocaml/opam-repository/tree/master/packages/piqi.0.6.0
    [3] https://github.com/alavrik/piqi/tree/master/doc

Backward incompatible changes
-----------------------------

  - (piqi) Significant incompatibilities in external Piqi modules
    representation which means that older applications that rely
    on it won't work with the new version (e.g. older versions of
    "piqi call" command-line piqi-rpc client)
  - (piqi) Remove support for "piq-word" and "piq-text" built-in
    types and provide an alternative way to control Piq
    representation of string values using a new "piq-format"
    property
  - (piqi) Rename "piq-any" built-in type to "piqi-any"
  - (xml) always use  as a top-level XML element instead
    of tag derived from specific typename
  - (json) top-level values of primitive types and enum constants
    encoded in JSON as {"value": ...} instead of {"_": ...}
  - (tools) use $PIQI_PATH environment variable for Piqi module
    search paths instead of $PIQI_DIR

Full list of changes: https://github.com/alavrik/piqi/blob/master/CHANGES
Updated roadmap: https://piqi.org/roadmap/
Downloads: https://piqi.org/downloads/

Comments are closed.