Skip to content

Repository files navigation

JPEG XL in Rust (jxl-rs)

CI Crates.io Docs.rs Discord

JXL logo

jxl-rs is a high-performance, conforming, and memory-safe JPEG XL decoder written in Rust.

It is the JPEG XL decoder implementation used in Google Chrome / Chromium and Mozilla Firefox.

JPEG XL was standardized in 2022 as ISO/IEC 18181. While libjxl (C++) is the official ISO/IEC 18181-4 reference software, jxl-rs is a pure-Rust implementation developed within the JPEG XL project. It is not (yet) an official reference implementation, it aims for full specification conformance, memory safety, and high decoding performance across diverse hardware architectures.

The performance of jxl-rs closely matches (and sometimes exceeds) the C++ reference implementation, while having improved support for progressive rendering and lower memory requirements.

Safety

The vast majority of the code uses safe Rust. Where unsafe is needed for performance benefits (including SIMD), we require unsafe code to have extensive safety comments and to be reviewed by a non-author Unsafe Rust expert.

Workspace Crates

Usage

# Build
cargo build --release --bin jxl_cli

# Decode an image (PNG, PPM, PGM, APNG, EXR)
target/release/jxl_cli input.jxl output.png

# Print image metadata
target/release/jxl_cli input.jxl --info

# Benchmark decoding speed
target/release/jxl_cli input.jxl --speedtest --num-reps 10

The jxl crate is also available on crates.io for use as a library.

Testing

# Run workspace tests
cargo test --release --all

# Run Shuttle concurrency tests
cargo test --release --features shuttle shuttle

To run property-based tests with extended budget:

ARBTEST_BUDGET_MS=10000 cargo test --release --all
SHUTTLE_ITERATIONS=100 cargo nextest run --features shuttle -- shuttle

Conformance & Bug Reports

We strive to decode all conformant JPEG XL bitstreams correctly. If you encounter an image that decodes with the reference implementation djxl (from libjxl) but fails or renders incorrectly with jxl-rs, please open an issue.

Community & Contact

About

No description, website, or topics provided.

Resources

Contributing

Stars

670 stars

Watchers

15 watching

Forks

Releases

Packages

Used by

Contributors

Languages