lz4

Version, currently master branch1 version
  • master branchlatestJun 25, 2026

github.com/84codes/lz4.cr

Crystal bindings to the LZ4 compression library.

0 stars
0 dependents
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  lz4:
    github: 84codes/lz4.cr
    branch: master

master is a branch, not a release, so this tracks it rather than pinning a version.

Then run:

shards install

shard.yml

Crystal
>= 0.36.0, < 2.0.0
License
MIT
Authors
Ali Naqvi, Carl Hörberg

Dependencies

This version declares no dependencies.

README

Crystal LZ4 Compression

Crystal bindings to the LZ4 compression library. Bindings provided in this shard cover the frame format as the frame format is the recommended one to use and guarantees interoperability with other implementations and language bindings.

LZ4 is a lossless compression algorithm, providing compression speeds > 500 MB/s per core (>0.15 Bytes/cycle). It features an extremely fast decoder, with speeds in multiple GB/s per core (~1 Byte/cycle).

Installation

  1. Add the dependency to your shard.yml:

    dependencies:
      lz4:
        github: naqvis/lz4.cr
  2. Run shards install

Usage

require "lz4"

LZ4 shard provides both Compress::LZ4::Reader and Compress::LZ4::Writer as well as Compress::LZ4#decode and Compress::LZ4#encode methods for quick usage.

Example: decompress an lz4 file

require "lz4"

string = File.open("file.lz4") do |file|
   Compress::LZ4::Reader.open(file) do |lz4|
     lz4.gets_to_end
   end
end
pp string

Example: compress to lz4 compression format

require "lz4"

File.write("file.txt", "abcd")

File.open("./file.txt", "r") do |input_file|
  File.open("./file.lz4", "w") do |output_file|
    Compress::LZ4::Writer.open(output_file) do |lz4|
      IO.copy(input_file, lz4)
    end
  end
end

Contributing

  1. Fork it (https://github.com/naqvis/lz4.cr/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors