MessagePack for OCamlを公開しました
くえにしさん([twitter:@kuenishi]さん)に誘われたのでMessagePackハッカソンに参加してきました。
MessagePack本体のレポジトリにMessagePack for OCamlを取り込んでもらったので、みんな使ってください!
MessagePackって?
JSONやYAMLと同程度の表現能力をもった省スペースなオブジェクトシリアライザです。対応言語もC/C++/Java/D/Ruby/Haskellなどと非常に多いです。 対応言語言一覧 → http://wiki.msgpack.org/display/MSGPACK/QuickStart
公式Wikiの採用実績によると、かなりメジャーなプロジェクトも採用されているようです。実際、ハッカソンにも仕事で利用されている方が結構来ていました。
実はボクたちの作っているチャットアプリのAsakusaSatelliteでもちょっとだけ使ってます。
MessagePack for OCamlを作りました
「OCamlだってMessagePackを使いたい!」というわけで、OCaml版を作りました。
現状ではシリアライザ・デシリアライザ部分のみです。 RPCは今後の課題です。
インストール方法・使い方
http://wiki.msgpack.org/display/MSGPACK/QuickStart+for+OCamlに書いたので、そちらをご覧ください。
API リファレンスもあります。
実装方法
変換処理といえば証明駆動でしょ、というわけでコア部分はCoqで証明されています。
このとき苦労したことはReject会議のスライドに書いてあるので、興味のある方はどうぞ。
なお、Coqで生成されたコードもレポジトリに入っているので、普通に使う分には意識する必要はありません。
今後の課題
- 効率が悪い: Coqと連携させる関係で1バイトがboolの8項タプルで表現されて、効率的には微妙な気がしています。誰かに怒られるか、自分が困ったら考えます。
- RPCがない : IDL処理系ができたら本気だします。