LZ4 compression library for Elixir that uses Rust NIFs.
Add this to your dependencies in mix.exs
.
defp deps do
[
# ...,
{:nimble_lz4, "~> 0.1.0"}
]
end
NimbleLZ4 requires OTP 23+ and Elixir 1.11+.
NimbleLZ4 uses RustlerPrecompiled to build precompiled version of the necessary Rust NIFs bindings for a variety of platforms, NIF versions, and operating systems. RustlerPrecompiled should automatically download the correct version of the bindings when compiling NimbleLZ4 as a dependency of your application.
You can force compilation of the native code by setting the
NIMBLELZ4_FORCE_BUILD
environment variable to true
:
NIMBLELZ4_FORCE_BUILD=true mix deps.compile
You can compress and decompress data.
iex> uncompressed = :crypto.strong_rand_bytes(10)
iex> compressed = NimbleLZ4.compress(uncompressed)
iex> {:ok, ^uncompressed} = NimbleLZ4.decompress(compressed, _uncompressed_size = 10)
true
Frame format (self-contained):
iex> uncompressed = :crypto.strong_rand_bytes(10_000)
iex> compressed = NimbleLZ4.compress_frame(uncompressed)
iex> {:ok, ^uncompressed} = NimbleLZ4.decompress_frame(compressed)
true