Skip to content

dearblue/mruby-zstd

wip
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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