先日のErlang分散システム勉強会でもちらっと口にしましたが、TCとErlangのバインディングを作っています。この手のバインディングはtcerlとかさんざんガイシュツなんですが、勢いで作り始めてしまいました。これまでのものとちょっと違うのは、これまでのはいわゆる普通のportとメッセージング(!のやつ)を使ったものが多いのですが、!を使うためコンテキスト切り替えとかメッセージングとかいろいろ余計なコストがかかっていたのですが、erlang:port_control/3という関数を使うことによってそういったものをすっ飛ばしていきなりCのコードを実効してしまうという素人にはオススメできない機能を素人の僕が使っていたりします。
特徴
- port_controlを使っているので(多分)速い →グラフ1、グラフ2
- もちろんconcurrentな実装
- OO-friendlyなインターフェース(tokyocabinet.idlになんちゃって準拠)
- いちどリンクするだけで複数ファイルを更新可能
- 0.6まではとりあえずGPLだったが、id:VoluntasのアドバイスによりLGPLに。
- リンクするだけで道連れというのは確かにきつい(私も社内で使いたくない)