0.5.0 - 2026-07-20
Release Notes
A large release: a faster, smarter default engine and the web flagship command,
broad new input-format support, a reproducible incremental build system, a
WebAssembly build with a client-side browser demo, and a frozen CLI surface.
This release has breaking CLI changes. While the version is 0.x, a minor bump
may rename or remove commands — see Removed and Changed before upgrading.
Added
web— make an image web-ready in one command: downscale, re-encode to the
smallest modern format that beats the downscaled image (AVIF for photos, lossless
WebP or PNG for graphics), strip metadata, auto-orient, and report an SSIMULACRA2
quality score. Size-insensitive — a 24 MP photo is about as fast as a small one.- Declarative, reusable recipes —
apply --recipewith bundledweb,gallery,
andproductrecipes; tune settings on one image, save the recipe, and replay it
across a batch. The same recipe file runs in the browser via the WebAssembly build. - New input formats, pure Rust and on by default — AVIF decode, SVG rasterize,
and RAW embedded-preview extraction (reads.DNG/.CR2/etc. by pulling the
embedded JPEG preview, not a full RAW develop). HEIC decode is available behind an
off-by-defaultheicfeature (system libheif, local builds only). crustyimg build— a declared, incremental build from acrustyimg.build.toml
manifest, with a content-addressed cache and--watch. A no-change re-run is a full
cache hit that skips every decode/encode;--no-cachebypasses it.optimize --verify— opt in to computing the SSIMULACRA2 score for a run
(added to the JSON report asssim).- Machine-readable output —
--jsonand--timingonoptimize/web/apply,
lint --format json, and a committed offline benchmark (just bench,--corpus). - WebAssembly build — the pure-Rust engine compiles to wasm. A client-side demo
(drop an image, convert to AVIF, read the score — entirely in your browser, nothing
uploaded) runs at https://jysf.github.io/crustyimg/. - CI integration — two GitHub Actions wrap the binary:
jysf/setup-crustyimg
(install in CI) andjysf/crustyimg-action(lint or optimize with inline PR
annotations).
Changed
- The default optimization is now fast and AVIF-aware. The default decision does a
single fixed-quality encode to the smallest modern format that beats the source,
with a first-class "kept, already optimal" passthrough — instead of the slower
quality search that ran by default before. optimizeis now a keep-dimensions byte primitive — best format at good quality,
never larger than the source. The perceptual and byte-budget searches are opt-in via
--target/--ssim/--max-size.- Metadata commands moved into a
metagroup —strip→meta strip,clean→
meta clean,copy-metadata→meta copy,set→meta set. (auto-orientstays
top-level.) - Dependency requirements use caret ranges instead of exact pins, so crustyimg is
friendlier to depend on as a library; reproducible builds come from the committed
Cargo.lock(usecargo install --locked).
Removed
shrink— its behavior is folded intoweb(and upgraded with AVIF).
Fixed
- The metadata write path corrupted numeric EXIF tags (orientation, GPS) on big-endian
input; the writer now preserves the input's byte order. - AVIF decode: a data race under load and an empty-stream abort, both fixed.
web's "never larger than the source" guarantee is now reconciled with the
downscaled baseline.
Security
- Peak decode memory is bounded before allocation by a declared-pixel budget, and a
hardening pass tightened decode limits and error handling.
Install crustyimg 0.5.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jysf/crustyimg/releases/download/v0.5.0/crustyimg-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/jysf/crustyimg/releases/download/v0.5.0/crustyimg-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install jysf/tap/crustyimgDownload crustyimg 0.5.0
| File | Platform | Checksum |
|---|---|---|
| crustyimg-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| crustyimg-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| crustyimg-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| crustyimg-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |