<div>Hello all,</div><div><br></div><div>It is my pleasure to announce several new Piqi features:</div><div><br></div><div>With this release, Piqi adds the ability to serialize/deserialize data in JSON, XML, Protocol Buffers and Piq data formats. It provides a universal serialization interface for each user-defined data type and an additional parameter controls which format to use.</div>
<div><br></div><div>This is how it looks like: <a href="https://github.com/alavrik/piqi/blob/master/examples/erlang/io_json_xml_pb.erl">https://github.com/alavrik/piqi/blob/master/examples/erlang/io_json_xml_pb.erl</a></div>
<div><br></div><div>Of course, it is unlikely that in practice one needs that many formats at once. But even if we look at JSON serialization, any other approach that I'm aware of involves writing additional code (sometimes, a lot of code!) to convert JSON AST into Erlang records and the other way around. In contrast, Piqi does all that automatically and in addition performs data validation.</div>
<div><br></div><div>Another new piece is called Piqi-RPC. It gives Erlang developers a convenient and reliable way to connect services written in Erlang with non-Erlang clients using JSON, XML and Protocol Buffers over plain HTTP. In addition to HTTP interface, it includes a command-line client for calling remote Erlang functions using idiomatic command-line interface (still over HTTP). The client even prints command-line help about remote functions!</div>
<div><br></div><div>Basically, Piqi-RPC acts as an HTTP gateway for Erlang functions, taking care of parsing and validating input, generating output in requested format, communicating over HTTP, parsing and validating command-line options, etc. When Erlang implementation function is called, it doesn't have to deal with all that stuff. Even more, -- it doesn't know anything about what's happening under the hood and always works with input and output represented as native Erlang data structures.</div>
<div> </div><div>You can find more information about the project and the recent additions here: <a href="http://piqi.org/blog/2011/04/12/piqi-0-5-5-released/">http://piqi.org/blog/2011/04/12/piqi-0-5-5-released/</a></div>
<div><br></div><div>Comments, suggestions and pull requests are very welcome! </div><div><br></div><div>Thanks,</div><div>Anton</div>