Entroq is a general-purpose lossless compression format and codec, written in Rust.
Entroq is a new format. It is not a Rust rewrite of Zstandard, LZ4, Brotli, Snappy, or Deflate, and it is not bitstream compatible with any of them.
Early development.
The codec crate exports a format module and a streaming module. Between them they hold the frame, region and block structure, a streaming encoder, and a streaming decoder. Every other module in the crate is private, because the mechanism it owns has not been designed and measured. There is no Entroq command line tool.
The structure carries no compression. Content travels literally or as a run, so a stream is a validated container and not yet a compressed representation. There is nothing to compress with yet.
Beyond that, the repository holds the measurement foundation the codec is built against:
Every number these produce is a competitor number. No Entroq number exists, and every result says so rather than carrying a zero.
The next section states goals. Read no sentence in it as current behavior.
decode(encode(x)) == x for every input, every mode, and every chunking.Entroq will expose a small number of intentional modes, not dozens of numeric levels.
rust-toolchain.toml pins the toolchain. rustup reads that file and installs the
pinned channel on the first build.
Every action enters through the Makefile. make help lists every target.
make build # compile the workspace
make check # type check the workspace
make validate # format check, lint, and the dev validation tier
make ci # run the gates on a clean Linux host, in a container
Building and validating needs the pinned toolchain and nothing else. The laboratory and the
corpus are build inputs that live outside the repository, and only the benchmark targets
read them. CONTRIBUTING.md states how to produce both.
docs/ holds the user guide, the technical documentation, and the benchmark documentation.
docs/README.md lists every page, and names the pages that do not exist yet because the
behavior they would state does not exist.
docs/benchmarks.md states what Entroq measures, against what, how, and what a number from
each tier licenses.
docs/format.md states the format contract: the frame, region and block structure, and
what a conforming decoder accepts, refuses, and ignores. A third party must be able to write
a conforming decoder from that page alone. The format is implemented and not frozen, and the
page marks every field that is still provisional.
CONTRIBUTING.md states how to build a change, validate it, and submit it.
CODE_OF_CONDUCT.md applies to every space of this project.
Copyright 2026 Diego Martín Lafuente meerita@icloud.com
Licensed under either of:
LICENSE-APACHE, or
http://www.apache.org/licenses/LICENSE-2.0)LICENSE-MIT, or http://opensource.org/licenses/MIT)at your option.
Unless you state otherwise, you intentionally submit any contribution for inclusion in Entroq, as defined in the Apache-2.0 license, dual licensed as above, without any additional term or condition.
29 commits
Rust
97.3%
Makefile
1.6%
Entroq is a general-purpose lossless compression format and codec, written in Rust.
Entroq is a new format. It is not a Rust rewrite of Zstandard, LZ4, Brotli, Snappy, or Deflate, and it is not bitstream compatible with any of them.
Early development.
The codec crate exports a format module and a streaming module. Between them they hold the frame, region and block structure, a streaming encoder, and a streaming decoder. Every other module in the crate is private, because the mechanism it owns has not been designed and measured. There is no Entroq command line tool.
The structure carries no compression. Content travels literally or as a run, so a stream is a validated container and not yet a compressed representation. There is nothing to compress with yet.
Beyond that, the repository holds the measurement foundation the codec is built against:
Every number these produce is a competitor number. No Entroq number exists, and every result says so rather than carrying a zero.
The next section states goals. Read no sentence in it as current behavior.
decode(encode(x)) == x for every input, every mode, and every chunking.Entroq will expose a small number of intentional modes, not dozens of numeric levels.
rust-toolchain.toml pins the toolchain. rustup reads that file and installs the
pinned channel on the first build.
Every action enters through the Makefile. make help lists every target.
make build # compile the workspace
make check # type check the workspace
make validate # format check, lint, and the dev validation tier
make ci # run the gates on a clean Linux host, in a container
Building and validating needs the pinned toolchain and nothing else. The laboratory and the
corpus are build inputs that live outside the repository, and only the benchmark targets
read them. CONTRIBUTING.md states how to produce both.
docs/ holds the user guide, the technical documentation, and the benchmark documentation.
docs/README.md lists every page, and names the pages that do not exist yet because the
behavior they would state does not exist.
docs/benchmarks.md states what Entroq measures, against what, how, and what a number from
each tier licenses.
docs/format.md states the format contract: the frame, region and block structure, and
what a conforming decoder accepts, refuses, and ignores. A third party must be able to write
a conforming decoder from that page alone. The format is implemented and not frozen, and the
page marks every field that is still provisional.
CONTRIBUTING.md states how to build a change, validate it, and submit it.
CODE_OF_CONDUCT.md applies to every space of this project.
Copyright 2026 Diego Martín Lafuente meerita@icloud.com
Licensed under either of:
LICENSE-APACHE, or
http://www.apache.org/licenses/LICENSE-2.0)LICENSE-MIT, or http://opensource.org/licenses/MIT)at your option.
Unless you state otherwise, you intentionally submit any contribution for inclusion in Entroq, as defined in the Apache-2.0 license, dual licensed as above, without any additional term or condition.
29 commits
Rust
97.3%
Makefile
1.6%