F# 用非公式 MessagePack ライブラリを作ってみている
F# 特化型です。
ソースコード
- URL
- ライセンス
- Apache License 2.0
公式
公式は CLI 向けの msgpack-cli が存在します。
なぜ作ったの?
公式のものが F# 向きかと言われるとうーんと思い、なら勉強がてら趣味開発に利用しようというのと、公式の F#ラッパーを書く体力がなかったことが発端です。品質などを考えると、公式をラップしたほうが良いというのはわかっているのですが…。
現状
- pack するためには MsgPackValue<'T when 'T :> comparison> という判別共用体に落としこむ必要あり
- comparison なのは Map の影響
- ext を任意の型にしたい場合は packExt<'T when 'T :> IPackable, comparison>, unpackExt<'T when 'T :> comparison>
- ext を byte [] のまま保持するなら pack, unpack
- 任意の型にしない場合、もしくは ext を使わない場合は MsgPackValue 型を用いる
- tyep MsgPackValue = MsgPackValue
;; (pack の関係で Unitが使えなかった…) - MsgPackValue を簡単に生成するための Limited モジュール
- 旧仕様は OldSpec モジュールで提供
- テストは基本的に FsCheck (array32 と map32 の重さに耐えられなかったけど!)
- unpack の内部実装は PasecClone
- 実行速度は後で考える
そのうちやりたい
- 性能検査
- シグネチャ調整
- README含むドキュメント整備
- Type Provider実装
- Mono 対応 (Mono 3.2.7 だと F# 3.0 にバージョンを下げないといけない…etc)
- Xamarin 系対応
- パフォーマンス・チューニング
- NuGet公開
「御託はいいからさっさと NuGet に公開しろ!」とか言われたら、最優先で対処します。
他にこれほしい、というものあれば twitter なり issue なり pull request なりでお願いします。ユーザ自分しかいなさそうですけどっ!