前回のリリースから2年半、データ交換フォーマットとRPCシステムのCap’n Protoがバージョン0.6となって、Windowsのサポートやセキュリティ強化などが追加された。
作者のKenton Varda氏によると、リリースが大きく遅れたのは開発の遅延によるものではない。開発自体は常に予定より進んでいたのだが、親プロジェクトであるSandstorm.ioのWindows移植の安定化作業の優先度が低かったのだ。Microsoftのコンパイラが最新のC++サポートをキャッチアップしたことで、シリアライゼーションや動的API、スキーマパーザ、(I/O完了ポートを使用した)非同期I/0フレームワーク、RPC、ツールといった機能の移植は容易になった。加えて、Cap'n Protoの開発チームは継続的インテグレーションのセットアップも完了している。Windowsポートの状態を維持する上で役に立つはずだ。
Windowsフルサポートの他、最新バージョンのCap ‘Protoでは、潜在的な脆弱性に対して安全性を確保するための実装変更がいくつか実施されている。コンパイル時に整数オーバーフロー検出などの包括的なテストを行なう、ポインタ検証の改善などがこれに含まれる。
バージョン0.6では、Cap’n Protoのエコシステムに新たに2つの便利なものが加わった。
libcapnp-json
- JSONベースのフロントエンドとCap’n Protoベースのバックエンドとの統合を容易にすることを目的とした、JSONとCap’n Protoとの双方向コンバータ。libkj-http
- 非同期I/Oをベースとした最小限のHTTPライブラリで、現在も活発な開発が続けられている。
Cap'n Protoは、メモリ内でのメッセージのエンコードとデコードの必要性を排除することにより、JSONやProtocol Bufferといった一般的なフォーマットよりも優れたパフォーマンスの実現を目指すデータ交換フォーマットである。これはコンパイラのように、しかしプラットフォームに依存しない方法で、データをバイナリ形式で格納することによって実現される。作成者のKenton Varda氏は、Google在籍時にProtocol Buffersを開発した人物だ。
Cap’n Protoは、長年にわたってProtobusの開発を経験し、ユーザのフィードバックを聞いて、よりよいものにする方法を考えた結果です。
Cap'n Protoは、フォーマットに新たなフィールドが追加された時に、下位互換性保証を支援するための仕組みも備えている。その他の主な機能としては、内部オブジェクト全体が現れる前に外部オブジェクトを処理するためのインクリメンタルなメッセージ処理機能、メッセージ全体が受信される前から任意のフィールドにランダムアクセスする機能、生成コードとランタイムライブラリのサイズ縮小などがある。
この記事を評価
- 編集者評
- 編集長アクション