Spring Piqi releases

18 views
Skip to first unread message

Anton Lavrik

unread,
Apr 9, 2014, 4:53:35 AM4/9/14
to pi...@googlegroups.com

Hello all,


Really happy to have these out. Finally!

    piqi v0.6.6
    piqi-ocaml v0.7.0
    piqi-erlang v0.7.1
    piqi-rpc v0.7.1

Changelogs:


Updated roadmap:



Here are some details.


1. piqi-ocaml turned into a separate project

One of the highlights of this release is separation of piqi-ocaml from
piqi. This completes the breaking of what used to be a monolithic
"piqi" repository into individual repos and, more importantly,
sub-projects.

In practice, it means a lot more independent development and releases
for all of them.

Piqi compiler for OCaml (now named piqic-ocaml) was rewritten on top
of the "piqi compile" interfaces. Together with piqic-erlang, which
was also improved as a result of this exercise, they make a canonical
example of how to write piqi backends.

There are a lot of improvements overall and some minor
incompatibilities in piqic-ocaml interfaces. See the changelog for
details.


2. piqi cleanup

No longer being held by piqi-ocaml, piqi sources layout has undergone
a major cleanup. Extremely pleased with the outcome:

- 3x faster build
- old multi-stage bootstrapping dropped in favor of a new clean system
  which is much easier to understand and use
- windows build overhaul -- now builds on modern OCaml for Windows out
  of the box
- support for cross-compiled win32 build
- dropped support for OCaml 3.11 and remove dependency on most Camlp4
  extensions

Overall, the core project has never been cleaner. For those who
considers hacking on it, this becomes very approachable now.


3. "Piqi is a universal schema language"

http://piqi.org now features a simplified and streamlined description
and project overview.

Check out the updated homepage and rationale


4. Enhanced DSL capabilities

Perhaps all Piqi users know that .piqi syntax is based on the Piq
language. In a sense, Piqi is a declarative domain-specific language
that normally represented in Piq notation and defines itself via a
Piqi self-spec.

This combination turned out to be extremely powerful and flexible for
building other declarative DSLs. I've been it using quite successfully
for many small DSLs -- from config files and command-line interfaces
to SQL-like query languages.

The languages typically look nice, and, what's really cool, it takes
no time to build one. All you need is to describe your language in a
.piqi spec and Piqi takes care of both Piq-based concrete syntax and
automatically turning it into abstract syntax of your choice (Protocol
Buffers, JSON, XML and, of course, direct language representation).

A set of new features introduced in this release makes it even nicer:

- optionally omitting square brackets around record representation (so
  called frameless Piq input/output)
- optional quotes around single-word string literals (internally known
  as relaxed parsing)
- aliases for field and option labels that allow use of shorter names
  in Piq notation
- precise control over which syntax elements are allowed as positional
  elements and which should be always labeled


5. OCaml and Erlang: preserving unknown Protocol Buffers fields

A new --gen-preserve-unknown-fields flag was introduced for
piqic-ocaml and piqic-erlang. When specified, unrecognized Protocol
Buffers record fields are automatically captured during parsing and
get written back during serialization.

This helps to maintain reversibility of the representation making
applications that use older definitions forward-compatible.


There are a number of fixes and other improvements in all projects.


Thank you everyone who contributed to this release!


Anton


P.S. Each Piqi project now includes a TODO file.

Motiejus Jakštys

unread,
Apr 17, 2014, 10:08:05 AM4/17/14
to pi...@googlegroups.com
2014.04.09 10:53, Anton Lavrik rašė:
>
> Hello all,
>
>
> Really happy to have these out. Finally!
>
> piqi v0.6.6
> piqi-ocaml v0.7.0
> piqi-erlang v0.7.1
> piqi-rpc v0.7.1

Hi Anton,

congratulations! I am really happy about it, but since I had nothing
useful to say but "yay", didn't. Now I have something to say!

At Spil we are migrating to enhanced piqi-v0.6.6. Unfortunately, due to
the mess I created a year ago in our internal tools by relying on
unreliable command-line flags, the flavour[1].

Now it's time to update piqi in my PPA and I am making a tough decision:
1. Fork from upstream. Leads to horror and misery.
2. Convince you to apply and keep for a while a small compatibility
patch and keep it for a while (until we fully migrate our internal tools
to the new command-line interface).

While I completely understand your point in keeping the command-line API
clean and consistent AND no promise to keep it stable, I still ask for
an undocumented flag for The Better: no forking, 100% upstream
compatibility and less headaches.

What do you think?

Regards,
Motiejus

[1]:
https://github.com/spilgames/piqi/commit/29db1456e36449277d8d5fb234190dd9f0f0f6cd

Anton Lavrik

unread,
Apr 18, 2014, 2:20:27 AM4/18/14
to pi...@googlegroups.com
Hi Motiejus,

I don't think accepting such change would be a right thing to do for the project. Sorry.

You could create 'piqi' wrapper that calls 'real-piqi --version' just as easily. On the other hand, the change is so simple. It feels weird that updating your environment is more difficult than patching the upstream.

Anton

Motiejus Jakštys

unread,
Jul 21, 2014, 3:54:48 AM7/21/14
to pi...@googlegroups.com
Hi Anton,

fair enough, thanks for the reply. I updated my ppa[1] with 0.6.6,
which is the upstream + the mentioned[2] patch.

From now on I decided to maintain only LTS releases on my PPA
(currently lucid, precise and trusty). If anyone uses my PPA with
another distribution, please let me know.

[1]: https://launchpad.net/~motiejus/+archive/piqi
[2]: https://github.com/spilgames/piqi/commit/29db1456e36449277d8d5fb234190dd9f0f0f6cd


--
Motiejus Jakštys
Reply all
Reply to author
Forward
0 new messages