Skip to content

Commit

Permalink
Merge branch 'release-0.5.6'
Browse files Browse the repository at this point in the history
  • Loading branch information
alavrik committed Aug 8, 2011
2 parents 3308f37 + 02c6146 commit a56ddd2
Show file tree
Hide file tree
Showing 212 changed files with 7,324 additions and 1,561 deletions.
1 change: 1 addition & 0 deletions .gitignore
@@ -1,4 +1,5 @@
build
ebin

*.[oa]

Expand Down
6 changes: 5 additions & 1 deletion AUTHORS
@@ -1 +1,5 @@
Piqi is written by Anton Lavrik.
This file lists Piqi authors. GitHub usernames are specified in parentheses.


Anton Lavrik (alavrik)
Hunter Morris (skarab)
72 changes: 72 additions & 0 deletions CHANGES
@@ -1,3 +1,75 @@
Piqi 0.5.6 (August 7, 2011)
===========================

Highlights:

- Support for Protocol Buffer's "packed" encoding for primitive numeric fields
- Windows support using MinGW

Specific to OCaml:

- Multi-format Protobuf/JSON/XML/Piq serialization
- Serialization of custom types, e.g chars, bigints
- Option for representing repeated fields and lists as OCaml arrays

Specific to Erlang:

- Rebar packages for Piqi and Piqi-RPC
- Multi-core scalability and improved performance for JSON and XML
serialization
- 30% faster Erlang binary de-serialization and other optimizations of
piqirun.erl (thanks to Hunter Morris)
- Serialization of custom types, e.g. bigints, arbitrary Erlang terms

OCaml:

- Multi-format Protobuf/JSON/XML/Piq serialization
- Serialization of custom OCaml types
- Support for Protocol Buffer's "packed" encoding for primitive numeric fields
- Support for empty records
- Option for representing repeated fields and lists as OCaml arrays
- Automatic topological sorting of sub-variant definitions
- Fix: reading uint32-fixed values > 0x7fffffff from Protobuf encoding

Erlang:

- Rebar package
- Multi-core scalability and improved performance for JSON and XML
serialization
- Optimizations of serialization runtime library (thanks to Hunter Morris)
- Support for protocol Buffer's "packed" encoding for primitive numeric fields
- Serialization of custom Erlang types
- New top-level ".erlang-string-type" option for decoding strings as lists (by
default strings are decoded as binaries)
- The ability to turn off pretty-printing for JSON and XML output
- Clear erlc & dialyzer warnings on R14B02

Piqi-RPC:

- Rebar package
- Make HTTP request data accessible to the application callbacks
- Report internal errors using standard Erlang Error Logger interface
- Limit the size and depth of error messages
- Less strict validation of HTTP request for easier request construction by
clients

Piqi language:

- Allow to nest any type definition as a function parameter
- New ".proto-custom" property for better Protocol Buffers interoperation;
example usage:
.proto-custom # option java_package = "com.example.foo";

Piqi tools:

- Fix: add missing exception handling when parsing XML
- Fix: handle malformed UTF-8 exception
- Fix: incorrect Protobuf to X conversion in case of imported definitions
- Fix: parsing empty strings represented in XML
- Fix #7: (piqi to-proto) invalid .proto generated in case of imported aliases
- Better warnings on unknown fields when parsing .piqi/.piq


Piqi 0.5.5 (April 12, 2011)
===========================

Expand Down
66 changes: 23 additions & 43 deletions INSTALL
@@ -1,18 +1,30 @@
This file contains general instructions for building Piqi from source code.

The following files contain more specific information:

INSTALL.erlang -- building and installing Piqi for Erlang

INSTALL.ocaml -- building and installing Piqi for OCaml

piqi-rpc/README -- building and installing Piqi-RPC

INSTALL.windows -- building Piqi on Windows


SUPPORTED PLATFORMS
===================

Piqi is written in OCaml language so in theory it should work on platforms and
hardware architectures supported by OCaml. See the page below for the list of
supported platforms:
Piqi has been tested on Linux (Debian Lenny and Squeeze, i386 and amd64
architectures) and on Mac OS X 10.6.4. It is also known to work on Windows and
Solaris.

http://caml.inria.fr/ocaml/portability.en.html
Piqi is written in OCaml so, in theory, it should work on platforms and hardware
architectures supported by OCaml. See the list of supported platforms at:

http://caml.inria.fr/ocaml/portability.en.html

So far, Piqi has been tested on Debian Linux (Lenny and Squeeze, i386 and amd64
architectures) and on Mac OS X 10.6.4.

Current build procedure is likely not going to work on Windows out of the box,
but it shouldn't be hard to adapt it.
The rest of this file describes the process of building Piqi on Unix platforms.


PREREQUISITES
Expand All @@ -21,7 +33,7 @@ PREREQUISITES
* OCaml compiler and standard library

Recommended (tested) versions are 3.11.2 and 3.12.0. Older OCaml
versions >= 3.10 should work as well.
versions >= 3.10 may work as well.

OCaml is available in most Linux distributions. It can also be
downloaded from here:
Expand Down Expand Up @@ -51,22 +63,11 @@ PREREQUISITES
* GNU make, m4, sed and probably some other tools.


* (Optional -- only if Erlang support is needed) Erlang/OTP >= R13B04

Piqi runtime library for Erlang and code generated by "piqic erlang"
require recent Erlang/OTP distribution. If not avalilable in OS
packages, it can be downloaded from http://www.erlang.org


On Debian Squeeze, the above dependencies can be installed using the following
command:

apt-get install ocaml camlp4-extra ocaml-findlib gcc m4 make sed

Optionally, if you need Erlang support:

apt-get install erlang


INSTALLATION INSTRUCTIONS
=========================
Expand All @@ -80,7 +81,7 @@ NOTE: these instruction are applicable only to Unix/Linux systems.

. setenv.sh

or
or

source setenv.sh

Expand All @@ -94,32 +95,11 @@ NOTE: these instruction are applicable only to Unix/Linux systems.

make

6. Install "piqi" and "piqic" binaries (optional)
6. Install "piqi" and "piqic" binaries (optional)

make install


The following step is necessary only is you are going to use Piqi as a data
serialization system for OCaml.

7. Install Piqi runtime library for OCaml and Piqi camlp4 extensions

make ocaml-install


The following step is necessary only is you are going to use Piqi as a data
serialization system for Erlang.


8. Build Piqi runtime library for Erlang

make erlang

Currently, there is no support for installing the library, but binary
build as well as sources are located in "piqi-erlang" directory which
has an OTP-compliant structure.


RUNNING TESTS
=============

Expand Down
34 changes: 34 additions & 0 deletions INSTALL.erlang
@@ -0,0 +1,34 @@
This file contains instructions for building Piqi to be used as a data
serialization system for Erlang.


PREREQUISITES
=============

Piqi requires Erlang/OTP version >= R13B04


PIQI REBAR PACKAGE
==================

The easiest way to build and install Piqi for Erlang is to use the rebar[1]
package. It is maintained in a separate GitHub repository:

https://github.com/alavrik/piqi-erlang


[1] Rebar is a build system for Erlang projects: https://github.com/basho/rebar


INSTALLING PIQI FROM SOURCE CODE
================================

1. Follow general build and installation instructions from the INSTALL file.

2. Build "piqi" Erlang application:

make erlang

After that, the binary build as well as sources can be found in
"piqi-erlang" directory which has an OTP-compliant structure.

28 changes: 28 additions & 0 deletions INSTALL.ocaml
@@ -0,0 +1,28 @@
This file contains instructions for building Piqi to be used as a data
serialization system for OCaml.


INSTALLATION INSTRUCTIONS
=========================

1. Follow general build and installation instructions from the INSTALL file.

If you want Piqi libraries to be installed to a custom filesystem
location, configure the "PIQI_OCAML_PREFIX" variable in the setenv.sh
file.


2. Build Piqi runtime libraries for OCaml:

make ocaml


3. Install Piqi runtime libraries for OCaml:

make ocaml-install


To uninstall previously installed Piqi libraries:

make ocaml-uninstall

0 comments on commit a56ddd2

Please sign in to comment.