mruby bindings for zstd
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
contrib
mrblib
src
test
.gitmodules
.travis.yml
.travis_config.rb
LICENSE
README.md
Rakefile
mrbgem.rake
test_config.rb

README.md

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