Skip to content

dearblue/mruby-zstd

Repository files navigation

mruby-zstd : mruby bindings for zstd the compression library (unofficial)

HOW TO INSTALL

build_config.rbgem mgem: "mruby-zstd" を追加して下さい。

MRuby::Build.new do |conf|
  gem mgem: "mruby-zstd"
end

HOW TO USAGE

圧縮

src = "123456789"
dest = Zstd.encode(src)

圧縮レベルを指定したい場合:

src = "123456789"
complevel = 15 # 1..22 の範囲で与える。既定値は nil で、1 と等価
dest = Zstd.encode(src, level: complevel)

伸長

zstdseq = ... # zstd'd string by Zstd.encode
              # OR .zst file data by zstd-cli
dest = Zstd.decode(zstdseq)

ストリーミング圧縮

output = AnyObject.new # An object that has ``.<<'' method (e.g. IO, StringIO, or etc.)
Zstd.encode(output) do |zstd|
  zstd << "abcdefg"
  zstd << "123456789" * 99
end

ストリーミング伸長

input = AnyObject.new # An object that has ``.read'' method (e.g. IO, StringIO, or etc.)
Zstd.decode(input) do |zstd|
  zstd.read(20)
  buf = ""
  zstd.read(5, buf)
  zstd.read(10, buf)
  zstd.read(nil, buf)
end

build_config.rb

ZSTD_LEGACY_SUPPORT

build_config.rbZSTD_LEGACY_SUPPORT を定義することによって、zstd-1.0 以前のデータ形式を伸長できるようになります。

MRuby::Build.new("host") do |conf|
  conf.cc.defines << "ZSTD_LEGACY_SUPPORT"

  ...
end

MRUBY_ZSTD_DEFAULT_PARTIAL_SIZE

build_config.rbMRUBY_ZSTD_DEFAULT_PARTIAL_SIZE を定義することによって、段階的なメモリ拡張サイズを指定することが出来ます。

MRuby::Build.new("host") do |conf|
  conf.cc.defines << "MRUBY_ZSTD_DEFAULT_PARTIAL_SIZE=65536"

  ...
end

既定値は、MRB_INT_16 が定義された場合は 4 KiB、それ以外の場合は 1 MiB となっています。

Specification