philss / nimble_lz4

LZ4 compression for Elixir using Rust NIFs. πŸ—œ

Home Page:https://github.com/lz4/lz4

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NimbleLZ4 πŸ—œοΈ

LZ4 compression library for Elixir that uses Rust NIFs.

Installation

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+.

Native Code

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

Usage

You can compress and decompress data.

iex> uncompressed = :crypto.strong_rand_bytes(10)
iex> compressed = NimbleLZ4.compress(uncomppressed)
iex> uncompressed == NimbleLZ4.decompress(compressed, _uncompressed_size = 10)
true

About

LZ4 compression for Elixir using Rust NIFs. πŸ—œ

https://github.com/lz4/lz4

License:Apache License 2.0


Languages

Language:Elixir 87.2%Language:Rust 12.8%