MessagePack 0.2.2 リリース - Rubyゼロコピー化, mswin32版
バイナリシリアライズ形式「MessagePack」のバージョン0.2.2をリリースしました。
Ruby版で文字列をデシリアライズするとき、必ずしもコピーしなくなりました。文字列のデシリアライズが大幅に高速化しています。
また mswin32 版と mingw 版の ruby で MessagePack を使えるようになりました。gem install msgpack でインストールしてください。
require 'msgpack' serialized = {"method" => "Get", "id" => nil, "params" => ["it", 0, 50, false]}.to_msgpack p MessagePack.unpack(serialized) #=> {"method" => "Get", "id" => nil, "params" => ["it", 0, 50, false]}
mingw でコンパイルした gem を mswin32 に偽装する
Visual C++ で MessagePack をコンパイルするのが大変そうだったので (^_^; ちょっとした hack で mswin32 版を作ってみました。私の環境ではちゃんと動いているので多分大丈夫です。
mingw で gem をコンパイルし、出力されたパッケージをいじって mswin32 版に偽装しています。
- msgpack.gemspec ファイルを作る ※
- mingw 環境で gem build msgpack.gemspec
- tar xvf msgpack-0.2.2-x86-mingw.gem
- data.tar.gz と metadata.gz が展開される
- data.tar.gz はパッケージ本体
- gunzip metadata.gz
- metadata を書き換える
- gzip metadata
- tar cvf msgpack-0.2.2-mswin32.gem data.tar.gz metadata.gz
※msgpack.gemspecの内容:
Gem::Specification.new do |s| s.platform = Gem::Platform::CURRENT s.name = "msgpack" s.version = "0.2.2" s.summary = "MessagePack" s.author = "FURUHASHI Sadayuki" s.email = "frsyuki _at_ users.sourceforge.jp" s.homepage = "http://msgpack.sourceforge.jp/" s.require_paths = ["lib", "ext"] s.files = ["lib/**/*", "ext/**/*"].map {|g| Dir.glob(g) }.flatten end