COOLJAPAN
← All posts

OxiArc 0.2.3 Released — Async ZIP and DEFLATE Streaming Arrive, Plus a Dedicated GIF LZW Codec

OxiArc 0.2.3 brings non-blocking I/O to the compression layer: async ZIP, async DEFLATE, and a new GZip module for Tokio/async-std pipelines, alongside a dedicated GIF LZW codec with LSB bitstream support. Plus across-the-board codec refinements. Pure Rust archive and compression — no C, no zlib, no libarchive.

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

The COOLJAPAN compression layer just went async.

Today we released OxiArc 0.2.3 — pure Rust archive and compression, now with async ZIP and async DEFLATE/GZip streaming for non-blocking pipelines, plus a dedicated GIF LZW codec.

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.3 matters

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

Modern services are async from end to end — and a compression step that blocks the runtime stalls everything behind it. 0.2.3 makes the hot formats non-blocking: ZIP, DEFLATE, and GZip now have async paths that drop straight into a Tokio or async-std pipeline, so compressing a large payload no longer parks a worker thread. And on the image side, GIF finally gets its own dedicated LZW codec.

Technical Deep Dive: Non-Blocking Codecs and a GIF Path

OxiArc keeps its layered shape — a core layer, codec crates, a container layer, and a CLI — and 0.2.3 lands new modules across the Codec and Container layers.

  1. Core Layer (oxiarc-core) Shared Compressor/Decompressor traits, CRC-32/64/16 with slicing-by-8, and bitstream utilities — carried forward unchanged.

  2. Codec Layer

    • oxiarc-deflate gains an async path: a new async_deflate module for non-blocking compress/decompress, plus a dedicated gzip module. Both are Tokio/async-std compatible, so DEFLATE and GZip streaming fit a non-blocking pipeline.
    • oxiarc-lzw adds a dedicated gif_lzw codec module and an bitstream_lsb module — GIF’s LSB-first bitstream is now first-class rather than a flag on the general LZW path.
  3. Container Layer (oxiarc-archive) A new async_zip module brings non-blocking ZIP reading and writing — read entries or build archives without blocking the runtime.

  4. CLI Layer (oxiarc-cli) The unified oxiarc binary, carried forward.

This release also sharpens the engines underneath: oxiarc-deflate’s LZ77 match-finding, deflate engine, and lib interface; oxiarc-lz4 dictionary and HC improvements; oxiarc-lzma encoder, model, and optimal-parsing refinements; oxiarc-zstd frame and streaming improvements; oxiarc-lzhuf LZSS improvements; oxiarc-bzip2 BWT improvements; and oxiarc-archive ZIP header reader and module-level cleanups.

Getting Started

0.2.3 is on crates.io. For async pipelines, pull in the crates you need and enable async I/O:

cargo add oxiarc-archive    # async ZIP via the async_zip module
cargo add oxiarc-deflate    # async DEFLATE + GZip

Async I/O is feature-gated — enable the async-io feature to light up async_zip and async_deflate for non-blocking work. The familiar synchronous API is unchanged:

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);
}

With async-io on, reach for the new async_zip and async_deflate modules to run those same operations without blocking. For GIF work, the new gif_lzw module handles GIF encoding and decoding directly.

What’s New in 0.2.3

Quality this release: zero Clippy warnings, zero rustdoc warnings, and a 100% test pass.

Tips

Getting the most out of the async paths and the new GIF codec:

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.

Async ZIP and DEFLATE make OxiArc a clean fit for high-throughput ingestion in the COOLJAPAN data stack — SciRS2, NumRS2, and PandRS pipelines that pull and pack data without blocking the runtime — and for OxiMedia asset pipelines that stream large files end to end. 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 11, 2026

↑ Back to all posts