The data archiving and compression foundation of the COOLJAPAN ecosystem is here.
Today we released OxiArc 0.1.0 — the first real release of a complete archive and compression toolkit written entirely in Rust, every codec and container format rebuilt from scratch.
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.1.0 matters
For decades, handling archives and compression meant depending on battle-tested but heavy native libraries like zlib, libzip, libarchive, or 7-zip.
These tools are powerful but come with real costs:
- Complex build systems and dependency hell
- Security risks from large, aging C codebases
- Platform-specific binaries and vendor lock-in
- Difficulty in WASM, embedded, or no_std environments
- Inconsistent support for legacy formats like LZH and Shift_JIS (still widely used in Japan)
OxiArc starts to fix that. This is an early but solid debut: ~19,600 lines of pure Rust across 9 crates, 371 passing tests, and a single binary that depends on no native toolchain at all. It implements 8 compression algorithms and reads 10 archive container formats — all from the ground up.
Technical Deep Dive: How We Rebuilt Archive & Compression in Pure Rust
OxiArc uses a clean layered design — a core layer, a set of codec crates, a container layer, and a CLI on top.
-
Core Layer (
oxiarc-core, ~1,800 LoC, 56 tests)
The shared foundation:Compressor/Decompressortraits, CRC-32 / CRC-64 / CRC-16 (slicing-by-8), and bitstream read/write utilities every codec builds on. -
Codec Layer — 8 compression algorithms from scratch:
oxiarc-deflate(~2,100 LoC) — DEFLATE (RFC 1951) + GZIP (RFC 1952), Huffman coding + LZ77, levels 0–9.oxiarc-lzhuf(~1,400 LoC) — the LZH archive format, sliding dictionary + static Huffman (lh0–lh7).oxiarc-lzma(~2,000 LoC) — LZMA1 + LZMA2, range coding and an LZ dictionary, plus the XZ format.oxiarc-bzip2(~1,200 LoC) — BWT + MTF + RLE + Huffman, parallel compression via Rayon, levels 1–9.oxiarc-lz4(~1,600 LoC) — LZ4 frame format, LZ4-HC, XXHash, parallel.oxiarc-zstd(~2,100 LoC) — Zstandard with FSE + Huffman, parallel.
-
Container Layer (
oxiarc-archive, ~5,600 LoC, 91 tests)
Format detection plus readers for ZIP, LZH, CAB, GZIP, BZIP2, LZ4, XZ, and ZSTD — 10 container formats in total. -
CLI Layer (
oxiarc-cli, ~1,800 LoC)
A unifiedoxiarcbinary: compress/decompress, extract/create, multi-format detection, all from one command.
Quality standards from day one: 100% pure Rust (no C or Fortran), zero unwrap() in production code, fully workspace-based dependency management, targeting Rust 1.85+ and Edition 2024.
Getting Started
OxiArc 0.1.0 is a from-source debut. Clone the repo and build the CLI:
git clone https://github.com/cool-japan/oxiarc
cd oxiarc
cargo build --release
cargo install --path oxiarc-cli # installs the `oxiarc` binary
Once installed, the CLI handles everything from one command:
oxiarc detect mystery.bin # auto-identify the format
oxiarc list archive.zip # list entries
oxiarc extract archive.zip -o out/ -v
oxiarc create backup.tar.zst folder/ # create a Zstd-compressed tar
You can also use the codecs directly as a library via path or git dependencies:
use oxiarc_deflate::{deflate, inflate};
use oxiarc_archive::ZipReader;
use std::fs::File;
let compressed = deflate(b"Hello, World!", 6)?; // level 0-9
let decompressed = inflate(&compressed)?;
let file = File::open("archive.zip")?;
let mut zip = ZipReader::new(file)?;
for entry in zip.entries() {
println!("{}: {} bytes", entry.name, entry.size);
}
What’s inside
The 0.1.0 release lands all nine crates at once:
- oxiarc-core —
Compressor/Decompressortraits, CRC-32 / CRC-64 / CRC-16, and bitstream utilities. - oxiarc-deflate — DEFLATE (RFC 1951) and GZIP (RFC 1952), built on Huffman coding and LZ77.
- oxiarc-lzhuf — the LZH archive format with a sliding dictionary and static Huffman.
- oxiarc-lzma — LZMA1 + LZMA2 with range coding and an LZ dictionary, plus XZ.
- oxiarc-bzip2 — BWT with parallel compression via Rayon, levels 1–9.
- oxiarc-lz4 — the LZ4 frame format, LZ4-HC, XXHash, and parallel processing.
- oxiarc-zstd — Zstandard with FSE + Huffman, parallelized.
- oxiarc-archive — format detection plus ZIP, LZH, CAB, GZIP, BZIP2, LZ4, XZ, and ZSTD.
- oxiarc-cli — compress/decompress, extract/create, and multi-format handling in one tool.
Tips
A few things worth knowing on day one:
- Pick your DEFLATE level.
deflate(data, level)takes a level from 0 (store) to 9 (max). Level 6 is a good default; drop to 1 when throughput matters more than ratio. - CRC is already fast. CRC-32/64 use slicing-by-8 automatically — roughly 3–5× faster than a naive table lookup, so integrity checks are not the bottleneck.
- Japanese legacy archives just work.
oxiarc-lzhufhandles LZH (lh0–lh7) with Shift_JIS filenames — the format countless older Japanese archives still ship in. - Let OxiArc identify files for you.
oxiarc detect file.binsniffs the container format so you don’t have to trust the extension. - Migrate off legacy formats in one shot.
oxiarc convert old.lzh new.zipreads an LZH archive and rewrites it as ZIP. - Dropping the
zipcrate? Open archives withoxiarc_archive::ZipReaderand iteratezip.entries()for inspection — nozip,flate2, or native zlib in your dependency tree.
This is the foundation
OxiArc is foundational infrastructure: the compression and archival backend other COOLJAPAN projects build on, not the other way around. Even at 0.1.0 it depends on no sibling projects — just a handful of small Rust crates.
This is the start of the COOLJAPAN data-packaging layer. SciRS2, NumRS2, and PandRS now have a sovereign, pure-Rust backend for dataset compression and long-term storage — the beginning of a scientific stack that never has to reach for zlib or libarchive again.
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Ü January 12, 2026