Piqi
Проект Piqi предлагает независимую от языка сериализацию данных, совместимую с Google Protocol Buffers, но с более богатой семантикой.
Для Piqi реализована нативная поддержка Erlang'а и OCaml'а, что позволит разработчикам сериализовать данные в двоичный формат, понятный для Python'а, Java и других языков, для которых реализована поддержка Protocol Bufefrs.
Что отличает Piqi от Protocol Bufefrs заключается в его расширенной семантике. Так, Piqi поддерживает record'ы, enum'ы, а так же variants (tagged unions), variant subtyping, lists и type aliases.
Piqi так же поддерживает:
- подержка data schema evolution (в стиле Protocol Buffers).
- "import" и "include" для повторного использования определений из других модулей
- мощный механизм расширений для records и variants.
- структурированные значения по умолчанию для опциональных значений
Совместимость с Protocol Buffers:
- Piqi можно конвертировать в Protocol Buffers и обратно (с очень редкими исключениями)
- Piqi и Protocol Buffers исполбзуют один и тот же двоичный формат для сериализации
PIqi так е включает в себя следующие утилиты:
- Piq, декларативный язык высокого уровня с полной поддержкой всех типов данных Piqi. Более того, он более удобен для восприятия, чем JSON или XML
- Инструментарий для валидации и форматирования данных, а также для конвертации данных между Piq, JSON и двоичным представлением.
Проект Piqi доступен по адресу http://piqi.org/
Код проекта на GitHub'е: http://github.com/alavrik/piqi
Примеры использования в Erlang'е: http://github.com/alavrik/piqi/tree/master/examples/addressbook/
