Releases: vlad-salone/rimage
Releases Β· vlad-salone/rimage
Release list
v0.13.0
Breaking Changes
- append the output suffix directly WITHOUT an automatic
@separator (-s 2xnow yieldsfile2x.jpeg) and update the CLI help accordingly - accept a UTF-8
file.listas an input file list, with one file path per line (blank lines are skipped, surrounding whitespace is ignored, and relative paths are resolved against the current working directory); when afile.listis provided, all other input file arguments are ignored
Features
- expand glob patterns in input paths on all platforms (previously Windows-only), preferring existing literal paths
- add
100land100sresize values that anchor on the longest or shortest side of each image - add
--reduce-onlyand--enlarge-onlyas aliases for--no-upscaleand--no-downscale
Bug Fixes
- reject malformed width and height
--resizevalues such as1.5worabc100winstead of silently extracting the first run of digits - map each chained
--resizevalue from the size the previous resize left behind, so a chain composes instead of every value mapping the original dimensions - fix a deadlock with a single-threaded pool by acquiring the concurrency permit inside the worker, and return an error instead of panicking when the thread pool cannot be created
- write outputs atomically through unique temporary files and publish them by rename, with a recoverable swap when replacing existing files on Windows
- detect collisions before any processing: duplicate output mappings, outputs overwriting another input, metadata path conflicts, and output paths identical to
--backuppaths (path names are treated as case-insensitive on every platform as a fail-safe default, covering case-insensitive Linux mounts, and aliases are resolved through canonicalization for existing paths) - never overwrite or delete an existing
--backupfile; create backups via hard link with a no-clobber copy fallback and remove the original input only after a successful publish - normalize input paths without canonicalization so symlinked directory layouts are preserved, and reject output parents that resolve outside the output root
- return non-zero exit codes when no inputs are found, an encoder fails, a collision is detected, files fail, or metadata cannot be written
- fix WebP animation encoding by warning and encoding only the first frame; compute per-frame durations from timestamps in the decoder
- guard against empty frame lists in the AVIF, MozJPEG, OxiPNG and WebP encoders instead of panicking
- restrict MozJPEG to 8-bit output and fix OxiPNG 16-bit endianness for non-RGB colorspaces
- apply ICC profiles to 16-bit frames without panicking and preserve frame timing metadata
- prevent integer overflow panics in quantization and resize, and surface resize worker panics as errors
Improvements
- validate suffixes and output file names (including Windows reserved names) up front, reject recursive inputs without a common root and duplicate output mappings with clear errors
- write JSON metadata atomically and use saturating arithmetic for size and space-saved statistics
- add end-to-end regression tests covering single-thread processing, recursive output layouts, backup collisions, existing-backup protection and non-zero exit codes
- regenerate the AVIF test fixture
- update install steps of dependencies for building on Windows
Dependencies
- bump
zune-imageprocsto 0.5.1 (stable) andregexto 1.13 - bump
jxl-gridto 0.6.2,jxl-oxideto 0.12.6,logto 0.4.33,indicatifto 0.18.6,anyhowto 1.0.103 andserde_jsonto 1.0.150 - replace
winreswithwinresource0.1.31 and makegloba general dependency - pin
ravif0.13.0 without default features foraarch64-unknown-linux-musl
Build / CI
- rewrite the CI workflow: build and test on
mainanddev, Ubuntu 24.04 / Windows 2025 / macOS 15 runners, cross builds foraarch64-unknown-linux-muslwith a pinned image, qemu runner for aarch64 Linux,actions/checkout@v7, concurrency grouping and read-only permissions - use yasm for the libaom build, fix artifact download errors and silence Homebrew tap warnings on macOS
- remove the
config.tomlpre-release override and set the Windows pre-release version inbuild.rs
v0.12.4
0.12.4 (2026-05-23)
Breaking
- Change default
--threadoption to1to prevent memory allocation failed error in default settings.
Features
- robust path normalization and bounded concurrency to prevent OOM on large images (4b030da)
- add
FinishGuardto manage progress bar updates on drop (c5a3bf0)
Bug Fixes
- critical bug fixes across codecs and operations: replace
unreachable!()with proper errors, fix crashes on non-existent paths and missing file stems, fix animated image channel count, fix webp loop_count, fix UNC path corruption on Windows, fix race condition in little_exif error suppression (fccd4e2) - prevent DCT overflow with proportional smoothing for high-quality custom quantization tables (e653b40)
- correct channel length calculation in quantization process (f6eb26d)
- retain permit in concurrent image processing for proper resource management (fb76593)
Improvements
- use
logmodule to submit log infos (729c65d) - refactor path normalization tests for platform compatibility (77b5698)
Dependencies
- bump
zune-imageto stable (b1666f9) - bump
rayonto 1.12.0 (085d0b7) - bump
clapto 4.6 (3a2d73e) - bump
tiffto 0.11.3 (4399224) - bump
little_exifto 0.6.23 (c935cbd) - bump
ravifto 0.13.0 (8b9c057) - bump
oxipngto 10.1.1 (cc5112e) - bump
fast_image_resizeto 6.0 (ddb0e9a)
Build / CI
v0.12.3
0.12.3 (2026-01-29)
Bug Fixes
- fix icc test error (e82055d)
- simplify image flattening in quantization operation (0d32374)
- update unreachable pattern to use std::prelude::v1::None (b0d9a41)
v0.12.2 (2026-01-20)
Bug Fixes
- disable wasm32 build due to unresolved issues (41c3b1e)
- suffix's docs conflict with code (c1c0a44)
- fix DCT overflow manually set smooth arg to fix that (75f2cf7)
- add icc to the build-binary feature to fix compilation errors (c28be02)
- suppress
little_exifimages without EXIF (58495bc) - re-fix deprecated rename ravif::ColorSpace to ColorModel (a1e482f)
v0.12.1
Bug Fixes
- cli: π fixed a bug when little exif panics on png images (159bbab)
v0.12.2
v0.12.2 (2026-01-20)
Bug Fixes
- disable wasm32 build due to unresolved issues (41c3b1e)
- suffix's docs conflict with code (c1c0a44)
- fix DCT overflow manually set smooth arg to fix that (75f2cf7)
- add icc to the build-binary feature to fix compilation errors (c28be02)
- suppress
little_exifimages without EXIF (58495bc) - re-fix deprecated rename ravif::ColorSpace to ColorModel (a1e482f)
v0.12.1
Bug Fixes
- cli: π fixed a bug when little exif panics on png images (159bbab)
v0.12.1
v0.12.0
v0.11.0
v0.11.0
Breaking Changes
- Complete rewrite of the library β now built to work alongside
zune-image. - CLI interface fully redesigned for more flexibility and cleaner structure.
Performance Improvements
Massive speedup: up to 149x faster in parallel processing compared to v0.10.3.
Performance benchmarks indicate:
- ~14x faster than
rimage-0.10.3on single image operations. - ~15x faster than
squoosh-cli. - ~149x faster on bulk image processing.
Features
-
cli: New progress bar and updated display styles.
-
cli: Added
--quietand--no-progressflags. -
cli: Reshape resize parameter format: now supports
w<value>andh<value>. -
cli: Added CLI warnings for invalid input files.
-
cli: Improved argument parsing and error messages.
-
cli: Alpha premultiply preprocessor added.
-
cli: Support for apply icc profile operation.
-
cli: Restructure of base CLI options, codecs, and preprocessors.
-
codecs: Added TIFF support.
-
codecs: Added EXIF write support for JPEG and PNG.
-
operations: Added new fast resize operation with threading support.
-
operations: Added ICC profile application with multithreaded support.
Bug Fixes
- Ensure all input images are converted to RGBA8 format.
- Fix file name parsing with dots.
- Fix null error on AVIF decoding.
- Return error when input width or height is 0.
- Prevent panic when no output is present by safely calculating max length.
- Fix float32 image handling in CLI.
- Improve resize value parsing and reduce edge case errors for width/height.
- Fix encoder function logic.
- Update AVIF, MozJPEG, Oxipng, and WebP codecs to new APIs.
- Fix Clippy issues and build warnings.
- Fix trailing slash issues on Windows.
- Correct feature compilation and binary packaging.
v0.11.0-next.3
v0.11.0-next.3
Bug Fixes
- cli: π convert all input images to rgba8 (c980e9a)
- cli: π fixed incorect handling of file names with dots (1f3275c)
- cli: π fixed null error on avif decoding (59b6759)
- error if input width or height is 0 (b626fdc)
- cli: π ensure max length calculation returns 0 instead of panicking when no outputs are present (3d0a3a3)
- cli: π fixed handling of float32 images (66c3648)
- cli: π improved resize value parsing by trimming input and refining error handling for invalid formats (2a43c26)
- cli: π updated parsing logic for width and height to reduce number of edge cases (9bd3ea2)
- operations: π updated apply icc profile operation to work in threads (b5dee09)
Features
- cli: β¨ update resize value format for width and height to use 'w' and 'h' suffixes instead of 'x_' and '_x' (693ea46)
v0.11.0-next.2
v0.11.0-next.1
v0.11.0-next.1
Bug Fixes
- cli: fixed encoder function (1a6bf92)
- codecs: fixed clippy errors (7f3c261)
- codecs: updated avif decoder to new api (1c8ea8e)
- codecs: updated avif encoder to new api (d07193d)
- codecs: updated mozjpeg encoder to new api (b408b31)
- codecs: updated oxipng encoder to new api (fdfcbd9)
- codecs: updated webp decoder to new api (98728e0)
- codecs: updated webp encoder to new api (ede4784)
- workflow: π· removed check for unique branch (0505c62)
- workflow: π fixed macos version (17eeba1)
- fixed clippy issues (0045b5b)