- Notifications
You must be signed in to change notification settings - Fork1
didactic-drunk/zstd.cr
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Crystal bindings to the Zstandard (zstd) compression library
- Performance optimized. 20M small decompression messages/sec.
- All API calls allow reusable buffers to reduce GC overhead.
- No heap allocations after #initialize.
- Crystal IO compatible Streaming API.
- Snappy like buffer API for handling small messages.
export ZSTD_CLEVEL=1
sets the default compression level just like the zstd command line utilities.- Only require what you need for faster compilation. (require "zstd/compress/context")
- Custom dictionaries.
- Linux: Auto install the most recent zstd if the system library is old or unavailable.
- OSX: Auto install the most recent zstd if the system library is old or unavailable.
- Support more zstd params.
- More specs.
OnOSX ensure that zstd is installed (
brew install zstd
).
On Linux it will be downloaded and compiled automatically if missing.Add the dependency to your
shard.yml
:dependencies:zstd:github:didactic-drunk/zstd.cr
Run
shards install
require"zstd"
cctx=Zstd::Compress::Context.new(level:1)cbuf= cctx.compress bufdctx=Zstd::Decompress::Context.newdbuf= dctx.decompress cbuf
buf=Bytes.new5mio=IO::Memory.newZstd::Compress::IO.open(mio,level:1)do |cio| cio.write bufendmio.rewindstr=Zstd::Decompress::IO.open(mio)do |dio| dio.gets_to_endend
dict_buffer = File.read("dictionary").to_slicedict = Zstd::Dict.new dict_buffer, level: 3cctx = Zstd::Compress::Context.new dict: dictdctx = Zstd::Decompress::Context.new dict: dict# Compress or decompress using the Buffer or Streaming API'sp dict.dict_idp dict.memsize
- Fork it (https://github.com/your-github-user/zstd/fork)
- Install a formatting check git hook (ln -sf ../../scripts/git/pre-commit .git/hooks)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
- Didactic Drunk - creator and maintainer
About
Crystal bindings to the Zstandard (zstd) compression library