COOLJAPAN
← All posts

OxiArc 0.2.5 Released — Brotli and Snappy Arrive as Brand-New Codecs, Taking OxiArc to 12 Crates

OxiArc 0.2.5 adds two brand-new compression crates — Brotli (RFC 7932, quality 0-11) and Snappy (block + framed with CRC32C) — bringing the workspace to 12 crates and 12 container formats. Plus DEFLATE/GZip/Zlib streaming with flush modes, LZW streaming, and an EntryBuilder fluent API. 1,038 tests, all passing. Pure Rust archive and compression — no C, no zlib, no libarchive.

release oxiarc compression brotli snappy deflate gzip zip archive pure-rust data-processing scirs2

The COOLJAPAN compression layer just gained two whole new codecs.

Today we released OxiArc 0.2.5 — pure Rust archive and compression, now with brand-new Brotli and Snappy crates that take the workspace to 12 crates and 12 container formats.

No C. No Fortran. No zlib. No libzip. No libarchive. No 7-zip. No external shared libraries.
No FFI overhead. No build hell.
Just clean, memory-safe, blazing-fast archiving and compression that compiles to a single static binary (or WASM) and runs everywhere.

Why OxiArc 0.2.5 matters

Handling archives and compression has long meant leaning on heavy native libraries — zlib, libzip, libarchive, 7-zip — with all the baggage that brings:

Two of the most-reached-for compression formats were still gaps. Brotli powers a huge share of the modern web’s text and asset payloads; Snappy is the go-to for fast, low-latency data in RPC and streaming systems. Until now, a pure-Rust pipeline that needed either had to pull in the brotli or snap crates. 0.2.5 closes both gaps at once — Brotli and Snappy arrive as brand-new, from-scratch crates — and pushes the workspace to 12 crates and 12 container formats.

Technical Deep Dive: Two New Codec Crates, Plus Streaming Everywhere

OxiArc keeps its layered shape — a core layer, codec crates, a container layer, and a CLI — and 0.2.5 slots two new codec crates cleanly into the Codec Layer.

  1. Core Layer (oxiarc-core) Shared traits and bitstream utilities, now with an EntryBuilder fluent API for constructing archive entries, and optional Serde serialization for Entry types (behind a serde feature).

  2. Codec Layer — joined by two new crates:

    • oxiarc-brotli — Brotli compression (RFC 7932): quality levels 0–11 with static dictionary support, LZ77 plus context-dependent Huffman coding, and a streaming compression/decompression API.
    • oxiarc-snappy — Snappy compression: both the block format and the framed format (with CRC32C checksums), behind a streaming Write/Read API.
    • oxiarc-deflate adds streaming with flush modes: GzipStreamEncoder / GzipStreamDecoder (sync_flush, full_flush, partial_flush) and ZlibStreamEncoder / ZlibStreamDecoder with configurable block sizes.
    • oxiarc-lz4 gains an acceleration parameter (compress_block_with_accel) with adaptive skip scaling.
    • oxiarc-lzw gains a streaming encoder/decoder (LzwStreamEncoder / LzwStreamDecoder, TIFF and GIF modes).
  3. Container Layer (oxiarc-archive) Brotli and Snappy archive integration — BrotliReader / BrotliWriter, SnappyReader / SnappyWriter, with format detection — bringing the container set to 12 formats.

  4. CLI Layer (oxiarc-cli) A dry-run mode (--dry-run / -n), sort-by-ratio, and Brotli/Snappy format support in the unified oxiarc binary.

This release ships 1,038 tests across 12 crates, all passing, with zero Clippy warnings under -D warnings and zero rustdoc warnings.

Getting Started

0.2.5 is on crates.io. To compress with the new Brotli codec, add the crate:

cargo add oxiarc-brotli    # or oxiarc-snappy
use oxiarc_brotli::BrotliEncoder;

// Brotli at a chosen quality (0-11); higher = smaller, slower.
let mut enc = BrotliEncoder::new(11);
let compressed = enc.compress(b"web payloads love Brotli, in pure Rust")?;

Snappy’s framed format (with CRC32C) is just as direct via its streaming Write/Read API. From the CLI, both formats are first-class — and you can preview an operation before it runs:

oxiarc create site.br public/        # Brotli-compressed archive
oxiarc create cache.sz data/         # Snappy-compressed archive
oxiarc create --dry-run backup.zip src/   # preview, write nothing (-n)

What’s New in 0.2.5

Quality this release: zero Clippy warnings (-D warnings), zero rustdoc warnings, and a 100% test pass (1,038 tests).

Tips

Getting the most out of the new codecs and streaming paths:

This is the foundation

OxiArc is the compression and archival backend other COOLJAPAN projects build on. It still depends on no sibling projects — just small, focused Rust crates — so siblings sit on top of it, not beside it.

At 12 crates and 12 container formats, OxiArc is now the broad sovereign compression backend for the COOLJAPAN stack: OxiMedia for asset packaging, and SciRS2, NumRS2, and PandRS for dataset and long-term storage. With the new codecs in hand, Brotli serves web and text payloads while Snappy serves fast RPC and streaming — each a pure-Rust path where a C library used to sit. It is the quiet data-packaging layer underneath the COOLJAPAN scientific and media stack.

Repository: https://github.com/cool-japan/oxiarc

Star the repo if you want high-performance archiving and compression without the traditional native toolchain headaches.

Pure Rust archiving and compression is here — fast, safe, and sovereign.

KitaSan at COOLJAPAN OÜ March 18, 2026

↑ Back to all posts