From c888142bcb7a68a430245cb3eae5b6039aeb0e56 Mon Sep 17 00:00:00 2001 From: Josh Holmer Date: Mon, 15 Nov 2021 11:42:06 -0500 Subject: [PATCH] Version 5.0.1 --- CHANGELOG.md | 452 +++++++++++++++++++++++++++++---------------------- Cargo.lock | 55 +++---- Cargo.toml | 4 +- 3 files changed, 291 insertions(+), 220 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c82bb096..11678e4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,10 @@ +### Version 5.0.1 + +- [Bugfix] Fix an issue where -o5 and -o6 were not testing all options +- [Misc] Bump miniz_oxide to 0.5 + ### Version 5.0.0 + - [Breaking] Bump minimum Rust version to 1.46.0 - [Bugfix] Avoid many panics that may occur on broken files - [Bugfix] Fix race condition that may cause tests to fail @@ -8,20 +14,24 @@ - [Misc] Bump `crc` to 2.x ### Version 4.0.3 + - Bump itertools to 0.10.x - Temporarily disable i686 releases, which were failing due to an odd linker issue, so that at least amd64 builds will publish successfully - This only relates to the releases published on Github. You can still manually compile oxipng for any platform. ### Version 4.0.2 + - Includes another update to libdeflater that improves support for targets without a C stdlib, like wasm32. ### Version 4.0.1 + - Includes an update to libdeflater that improves support for targets without a C stdlib, like wasm32. ### Version 4.0.0 + - [Breaking] Bump minimum Rust version to 1.45.0 - [Feature] Make `libdeflater` and `zopfli` optional for API users - [Bugfix] Fix cloudflare-zlib on aarch64 CPUs @@ -30,11 +40,13 @@ - Various internal improvements ### Version 3.0.1 + - [Bugfix] Re-add `--force` flag to CLI - This was accidentally removed somehow - Many non-breaking dependency version bumps ### Version 3.0.0 + - [Breaking] Bump minimum Rust version to 1.41.0 - [Breaking] Use IndexMap/IndexSet to provide more consistent performance ([#202](https://github.com/shssoichiro/oxipng/pull/202)) - This changes some public-facing types. @@ -54,311 +66,371 @@ - Various performance and internal improvements ### Version 2.3.0 - - Allow disabling all alpha optimizations ([#181](https://github.com/shssoichiro/oxipng/pull/181)) - - Fix interlacing issues on tiny images ([#182](https://github.com/shssoichiro/oxipng/pull/182)) - - Reduce memory usage in filtering ([#191](https://github.com/shssoichiro/oxipng/pull/191)) - - Implement palette sorting to improve compression ([#193](https://github.com/shssoichiro/oxipng/pull/193)) - - Disable alpha optimizations by default ([#187](https://github.com/shssoichiro/oxipng/pull/187)) - - Add support for WASM ([#194](https://github.com/shssoichiro/oxipng/pull/194)) + +- Allow disabling all alpha optimizations ([#181](https://github.com/shssoichiro/oxipng/pull/181)) +- Fix interlacing issues on tiny images ([#182](https://github.com/shssoichiro/oxipng/pull/182)) +- Reduce memory usage in filtering ([#191](https://github.com/shssoichiro/oxipng/pull/191)) +- Implement palette sorting to improve compression ([#193](https://github.com/shssoichiro/oxipng/pull/193)) +- Disable alpha optimizations by default ([#187](https://github.com/shssoichiro/oxipng/pull/187)) +- Add support for WASM ([#194](https://github.com/shssoichiro/oxipng/pull/194)) ### Version 2.2.2 - - Fix grayscale bit-depth reduction ([#171](https://github.com/shssoichiro/oxipng/pull/171)) - - Fix typos and incorrect log message ([#172](https://github.com/shssoichiro/oxipng/pull/172)) - - Make metadata order deterministic ([#174](https://github.com/shssoichiro/oxipng/pull/174)) - - Fix 32-bit builds ([#176](https://github.com/shssoichiro/oxipng/pull/176)) - - Enable LTO in release builds ([#177](https://github.com/shssoichiro/oxipng/pull/177)) - - Use deterministic compression strategy ([#179](https://github.com/shssoichiro/oxipng/pull/179)) - - Fix decoding interlaced images with height or width <= 2 ([#175](https://github.com/shssoichiro/oxipng/pull/175)) - - Preallocate memory in reduced_alpha_to_up ([#180](https://github.com/shssoichiro/oxipng/pull/180)) - - Update `bit-vec` crate to 0.6 + +- Fix grayscale bit-depth reduction ([#171](https://github.com/shssoichiro/oxipng/pull/171)) +- Fix typos and incorrect log message ([#172](https://github.com/shssoichiro/oxipng/pull/172)) +- Make metadata order deterministic ([#174](https://github.com/shssoichiro/oxipng/pull/174)) +- Fix 32-bit builds ([#176](https://github.com/shssoichiro/oxipng/pull/176)) +- Enable LTO in release builds ([#177](https://github.com/shssoichiro/oxipng/pull/177)) +- Use deterministic compression strategy ([#179](https://github.com/shssoichiro/oxipng/pull/179)) +- Fix decoding interlaced images with height or width <= 2 ([#175](https://github.com/shssoichiro/oxipng/pull/175)) +- Preallocate memory in reduced_alpha_to_up ([#180](https://github.com/shssoichiro/oxipng/pull/180)) +- Update `bit-vec` crate to 0.6 ### Version 2.2.1 - - Fix compression of very large files ([#167](https://github.com/shssoichiro/oxipng/pull/167)) ([#168](https://github.com/shssoichiro/oxipng/pull/168)) + +- Fix compression of very large files ([#167](https://github.com/shssoichiro/oxipng/pull/167)) ([#168](https://github.com/shssoichiro/oxipng/pull/168)) ### Version 2.2.0 - - Various internal improvements ([#154](https://github.com/shssoichiro/oxipng/pull/154)) ([#158](https://github.com/shssoichiro/oxipng/pull/158)) ([#160](https://github.com/shssoichiro/oxipng/pull/160)) ([#161](https://github.com/shssoichiro/oxipng/pull/161)) ([#162](https://github.com/shssoichiro/oxipng/pull/162)) ([#163](https://github.com/shssoichiro/oxipng/pull/163)) - - Update `image` crate to 0.21.0 - - Update `itertools` crate to 0.8.0 - - Update `zopfli` crate to 0.4.0 - - Use Rust edition 2018 - - Bump minimum required Rust version to 1.31.0 + +- Various internal improvements ([#154](https://github.com/shssoichiro/oxipng/pull/154)) ([#158](https://github.com/shssoichiro/oxipng/pull/158)) ([#160](https://github.com/shssoichiro/oxipng/pull/160)) ([#161](https://github.com/shssoichiro/oxipng/pull/161)) ([#162](https://github.com/shssoichiro/oxipng/pull/162)) ([#163](https://github.com/shssoichiro/oxipng/pull/163)) +- Update `image` crate to 0.21.0 +- Update `itertools` crate to 0.8.0 +- Update `zopfli` crate to 0.4.0 +- Use Rust edition 2018 +- Bump minimum required Rust version to 1.31.0 ### Version 2.1.8 - - Fix non-standard sBIT headers in other code locations ([#153](https://github.com/shssoichiro/oxipng/issues/153)) + +- Fix non-standard sBIT headers in other code locations ([#153](https://github.com/shssoichiro/oxipng/issues/153)) ### Version 2.1.7 - - 80x faster palette reduction ([#150](https://github.com/shssoichiro/oxipng/pull/150)) - - Optimize RGB to palette conversion ([#148](https://github.com/shssoichiro/oxipng/pull/148)) - - Various microoptimizations ([#146](https://github.com/shssoichiro/oxipng/pull/146)) - - Introduce third-party safe wrapper around cloudflare-zlib ([#149](https://github.com/shssoichiro/oxipng/pull/149)) + +- 80x faster palette reduction ([#150](https://github.com/shssoichiro/oxipng/pull/150)) +- Optimize RGB to palette conversion ([#148](https://github.com/shssoichiro/oxipng/pull/148)) +- Various microoptimizations ([#146](https://github.com/shssoichiro/oxipng/pull/146)) +- Introduce third-party safe wrapper around cloudflare-zlib ([#149](https://github.com/shssoichiro/oxipng/pull/149)) ### Version 2.1.6 - - Identify and drop useless sRGB profiles ([#143](https://github.com/shssoichiro/oxipng/pull/143)) - - Alpha heuristic improvements ([#144](https://github.com/shssoichiro/oxipng/pull/144)) - - Bump `miniz_oxide` and `cloudflare-zlib-sys` to 0.2.0 + +- Identify and drop useless sRGB profiles ([#143](https://github.com/shssoichiro/oxipng/pull/143)) +- Alpha heuristic improvements ([#144](https://github.com/shssoichiro/oxipng/pull/144)) +- Bump `miniz_oxide` and `cloudflare-zlib-sys` to 0.2.0 ### Version 2.1.5 - - Fix issue where some images will incorrectly reduce bit depth ([#140](https://github.com/shssoichiro/oxipng/issues/140)) + +- Fix issue where some images will incorrectly reduce bit depth ([#140](https://github.com/shssoichiro/oxipng/issues/140)) ### Version 2.1.4 - - Bump `image` crate to 0.20.0 + +- Bump `image` crate to 0.20.0 ### Version 2.1.3 - - Fix i686 builds - - Performance improvements + +- Fix i686 builds +- Performance improvements ### Version 2.1.2 - - Fix issue with PNG to Indexed reduction on images with transparency pixel ([#129](https://github.com/shssoichiro/oxipng/issues/129)) + +- Fix issue with PNG to Indexed reduction on images with transparency pixel ([#129](https://github.com/shssoichiro/oxipng/issues/129)) ### Version 2.1.1 - - More fixes for alpha optimization on interlaced images ([#133](https://github.com/shssoichiro/oxipng/issues/133)) + +- More fixes for alpha optimization on interlaced images ([#133](https://github.com/shssoichiro/oxipng/issues/133)) ### Version 2.1.0 - - [SEMVER_MINOR] Bump minimum Rust version to 1.27.0 - - [SEMVER_MINOR] Reenable faster Cloudflare zlib compression on platforms that support it - - Fix memory leak with Cloudflare zlib ([#126](https://github.com/shssoichiro/oxipng/issues/126)) - - Minor fixes and cleanup + +- [SEMVER_MINOR] Bump minimum Rust version to 1.27.0 +- [SEMVER_MINOR] Reenable faster Cloudflare zlib compression on platforms that support it +- Fix memory leak with Cloudflare zlib ([#126](https://github.com/shssoichiro/oxipng/issues/126)) +- Minor fixes and cleanup ### Version 2.0.2 - - Fix an issue in alpha optimization on interlaced images ([#113](https://github.com/shssoichiro/oxipng/issues/113)) + +- Fix an issue in alpha optimization on interlaced images ([#113](https://github.com/shssoichiro/oxipng/issues/113)) ### Version 2.0.1 - - Revert making Cloudflare zlib the default, as it introduced a major memory leak. It will be put back behind a feature flag, and reenabled when the issue is fixed. - - Revert minimum Rust version to 1.24.0 + +- Revert making Cloudflare zlib the default, as it introduced a major memory leak. It will be put back behind a feature flag, and reenabled when the issue is fixed. +- Revert minimum Rust version to 1.24.0 ### Version 2.0.0 - - [SEMVER_MAJOR] Make PngError a proper Error enum - - [SEMVER_MINOR] Bump minimum Rust version to 1.27.0 - - [SEMVER_MINOR] Make Rayon an optional dependency (enabled by default) - - [SEMVER_MINOR] Option to limit wall clock time spent in optimization trials - - [SEMVER_MINOR] `--keep` option (works similar to `--strip`, but takes a comma-separated list of headers to keep, and removes all other non-critical headers) - - Use faster Cloudflare zlib compression on platforms that support it - - Allow specifying more than 2 filter types via the CLI - - Avoid double glob processing on unix - - Fix reading from stdin - - Cleanup help text - - Various performance improvements + +- [SEMVER_MAJOR] Make PngError a proper Error enum +- [SEMVER_MINOR] Bump minimum Rust version to 1.27.0 +- [SEMVER_MINOR] Make Rayon an optional dependency (enabled by default) +- [SEMVER_MINOR] Option to limit wall clock time spent in optimization trials +- [SEMVER_MINOR] `--keep` option (works similar to `--strip`, but takes a comma-separated list of headers to keep, and removes all other non-critical headers) +- Use faster Cloudflare zlib compression on platforms that support it +- Allow specifying more than 2 filter types via the CLI +- Avoid double glob processing on unix +- Fix reading from stdin +- Cleanup help text +- Various performance improvements ### Version 1.0.4 - - Bump `image` to 0.19.0 - - Bump `bit-vec` to 0.5.0 - - Bump `regex` to 1.0.0 + +- Bump `image` to 0.19.0 +- Bump `bit-vec` to 0.5.0 +- Bump `regex` to 1.0.0 ### Version 1.0.3 - - Bump dependencies + +- Bump dependencies ### Version 1.0.2 - - Fix a change that breaks Itertools::flatten with recent Rust nightlies + +- Fix a change that breaks Itertools::flatten with recent Rust nightlies ### Version 1.0.1 - - Bump rayon to 1.0 ([#99](https://github.com/shssoichiro/oxipng/pull/99) @cuviper) - - Bump minor versions of other dependencies for binary distribution + +- Bump rayon to 1.0 ([#99](https://github.com/shssoichiro/oxipng/pull/99) @cuviper) +- Bump minor versions of other dependencies for binary distribution ### Version 1.0.0 - - Remove the C dependency on miniz, and replace it with a Rust version ([#57](https://github.com/shssoichiro/oxipng/issues/57)) - - This improves decompression speed by 15%. Compression speed is not affected. - - [SEMVER_MAJOR] This also obsoletes the `-zm` command line option and the `memory` key on the `Options` struct. - - Presets will be updated automatically. This means that presets 3 and higher will run significantly more quickly. - - [SEMVER_MAJOR] Adjust the presets, now that `-zm` is no longer an option. - - `-o3` now tests all filter types. This will result in 50% more trials than before, but may give up to 10% more compression gain. - - `-o4` and higher now test all alpha optimization types. This adds 5 trials specific to the alpha channel. Only transparent images are affected. - - Implement unix-specific permissions copying for `-p` option - - Performance optimizations - - Refactor of internal code + +- Remove the C dependency on miniz, and replace it with a Rust version ([#57](https://github.com/shssoichiro/oxipng/issues/57)) + - This improves decompression speed by 15%. Compression speed is not affected. + - [SEMVER_MAJOR] This also obsoletes the `-zm` command line option and the `memory` key on the `Options` struct. + - Presets will be updated automatically. This means that presets 3 and higher will run significantly more quickly. +- [SEMVER_MAJOR] Adjust the presets, now that `-zm` is no longer an option. + - `-o3` now tests all filter types. This will result in 50% more trials than before, but may give up to 10% more compression gain. + - `-o4` and higher now test all alpha optimization types. This adds 5 trials specific to the alpha channel. Only transparent images are affected. +- Implement unix-specific permissions copying for `-p` option +- Performance optimizations +- Refactor of internal code ### Version 0.19.0 - - [SEMVER_MAJOR] Default to overwriting the input file if `out_file` is not set. - This does not affect the CLI, but with the library, it was easy to forget to set the `out_file`, - and there was no warning that no output file would be written. - - Bump dependencies, reduces binary size by a considerable amount - - Hide all modules from documentation, and only export the specific structures that should be public. - Previously there were too many implementation details made public. The modules are still public for the purposes of our integration tests, - but we strongly advise against using undocumented modules. These may become private in the future. - - Internal refactoring and code cleanup - - Fix an error message that was displaying the wrong file path - - Fix an issue where the output file would not be written if the input was already optimized, - even if the output path was different from the input path + +- [SEMVER_MAJOR] Default to overwriting the input file if `out_file` is not set. + This does not affect the CLI, but with the library, it was easy to forget to set the `out_file`, + and there was no warning that no output file would be written. +- Bump dependencies, reduces binary size by a considerable amount +- Hide all modules from documentation, and only export the specific structures that should be public. + Previously there were too many implementation details made public. The modules are still public for the purposes of our integration tests, + but we strongly advise against using undocumented modules. These may become private in the future. +- Internal refactoring and code cleanup +- Fix an error message that was displaying the wrong file path +- Fix an issue where the output file would not be written if the input was already optimized, + even if the output path was different from the input path ### Version 0.18.3 - - Return exit code of 1 if an error occurred while processing a file using the CLI app ([#93](https://github.com/shssoichiro/oxipng/issues/93)) + +- Return exit code of 1 if an error occurred while processing a file using the CLI app ([#93](https://github.com/shssoichiro/oxipng/issues/93)) ### Version 0.18.2 - - Bump `image` to 0.18 - - Fix unfiltering of scan lines in interlaced images ([#92](https://github.com/shssoichiro/oxipng/issues/92)) + +- Bump `image` to 0.18 +- Fix unfiltering of scan lines in interlaced images ([#92](https://github.com/shssoichiro/oxipng/issues/92)) ### Version 0.18.1 - - Bump `rayon` to 0.9 - - Fix failure to optimize on certain grayscale images ([#89](https://github.com/shssoichiro/oxipng/issues/89)) + +- Bump `rayon` to 0.9 +- Fix failure to optimize on certain grayscale images ([#89](https://github.com/shssoichiro/oxipng/issues/89)) ### Version 0.18.0 - - Bump `itertools` to 0.7 - - Bump `image` to 0.17 - - [SEMVER_MAJOR] Bump minimum rustc version to 1.20.0 - - Fix parsing of glob paths on Windows ([#90](https://github.com/shssoichiro/oxipng/issues/90)) + +- Bump `itertools` to 0.7 +- Bump `image` to 0.17 +- [SEMVER_MAJOR] Bump minimum rustc version to 1.20.0 +- Fix parsing of glob paths on Windows ([#90](https://github.com/shssoichiro/oxipng/issues/90)) ### Version 0.17.2 - - Bump `image` to 0.16 - - Quickly pass over files that do not have a PNG header ([#85](https://github.com/shssoichiro/oxipng/issues/85) @emielbeinema) - - Return an error instead of crashing on APNG files ([#83](https://github.com/shssoichiro/oxipng/issues/83) @emielbeinema) + +- Bump `image` to 0.16 +- Quickly pass over files that do not have a PNG header ([#85](https://github.com/shssoichiro/oxipng/issues/85) @emielbeinema) +- Return an error instead of crashing on APNG files ([#83](https://github.com/shssoichiro/oxipng/issues/83) @emielbeinema) ### Version 0.17.1 - - Remove VC++ download requirement for Windows users + +- Remove VC++ download requirement for Windows users ### Version 0.17.0 - - [SEMVER_MAJOR] Bump minimum required rustc version to 1.19.0 - - [SEMVER_MINOR] Oxipng will now, by default, attempt to change all transparent pixels to `rgba(0, 0, 0, 0)` to improve compression. - It does fast trials with filters 0 and 5 to see if this is an improvement over - the existing alpha channel. - - [SEMVER_MINOR] Add a `-a` option to the command line (`alphas` in the struct) which enables 6 different - trials for optimizing the alpha channel, using the previously mentioned fast heuristic. - This option will make optimization of images with transparency somewhat slower, - but may improve compression. - - Fixed a bug in reducing palettes for images with bit depth of two ([#80](https://github.com/shssoichiro/oxipng/issues/80)) - - Fixed another bug in reducing palettes for images with bit depth less than eight ([#82](https://github.com/shssoichiro/oxipng/issues/82)) - - Code cleanup - - Bump `image` to 0.15 + +- [SEMVER_MAJOR] Bump minimum required rustc version to 1.19.0 +- [SEMVER_MINOR] Oxipng will now, by default, attempt to change all transparent pixels to `rgba(0, 0, 0, 0)` to improve compression. + It does fast trials with filters 0 and 5 to see if this is an improvement over + the existing alpha channel. +- [SEMVER_MINOR] Add a `-a` option to the command line (`alphas` in the struct) which enables 6 different + trials for optimizing the alpha channel, using the previously mentioned fast heuristic. + This option will make optimization of images with transparency somewhat slower, + but may improve compression. +- Fixed a bug in reducing palettes for images with bit depth of two ([#80](https://github.com/shssoichiro/oxipng/issues/80)) +- Fixed another bug in reducing palettes for images with bit depth less than eight ([#82](https://github.com/shssoichiro/oxipng/issues/82)) +- Code cleanup +- Bump `image` to 0.15 ### Version 0.16.3 - - Fix command-line help text ([#70](https://github.com/shssoichiro/oxipng/issues/70)) + +- Fix command-line help text ([#70](https://github.com/shssoichiro/oxipng/issues/70)) ### Version 0.16.2 - - Publicly export `error` module + +- Publicly export `error` module ### Version 0.16.1 - - Fix rayon's breaking changes that they made in a point release + +- Fix rayon's breaking changes that they made in a point release ### Version 0.16.0 - - [SEMVER_MAJOR] Bump minimum rustc version to 1.17.0 - - Bump `image` to 0.14 - - Bump `rayon` to 0.8 + +- [SEMVER_MAJOR] Bump minimum rustc version to 1.17.0 +- Bump `image` to 0.14 +- Bump `rayon` to 0.8 ### Version 0.15.2 - - Bump `image` to 0.13 ([#65](https://github.com/shssoichiro/oxipng/pull/65)) - - Bump `rayon` to 0.7 - - Bump `itertools` to 0.6 + +- Bump `image` to 0.13 ([#65](https://github.com/shssoichiro/oxipng/pull/65)) +- Bump `rayon` to 0.7 +- Bump `itertools` to 0.6 ### Version 0.15.1 - - Ignore color reductions that would increase file size ([#61](https://github.com/shssoichiro/oxipng/issues/61)) + +- Ignore color reductions that would increase file size ([#61](https://github.com/shssoichiro/oxipng/issues/61)) ### Version 0.15.0 - - [SEMVER_MINOR] Check images for correctness before writing result ([#60](https://github.com/shssoichiro/oxipng/issues/60)) - - Fix invalid output when reducing image to a different color type but file size does not improve ([#60](https://github.com/shssoichiro/oxipng/issues/60)) - - Don't write new file if moving from interlaced to non-interlaced if new file would be larger + +- [SEMVER_MINOR] Check images for correctness before writing result ([#60](https://github.com/shssoichiro/oxipng/issues/60)) +- Fix invalid output when reducing image to a different color type but file size does not improve ([#60](https://github.com/shssoichiro/oxipng/issues/60)) +- Don't write new file if moving from interlaced to non-interlaced if new file would be larger ### Version 0.14.4 - - Fix bug when reducing RGBA to Indexed if image has 256 colors plus a background color + +- Fix bug when reducing RGBA to Indexed if image has 256 colors plus a background color ### Version 0.14.3 - - Fix multiple bugs when reducing transparency palettes + +- Fix multiple bugs when reducing transparency palettes ### Version 0.14.2 - - Fix a bug when reducing palette in images with bit depth less than 8 - - Fix a bug when reducing palette in images with transparency + +- Fix a bug when reducing palette in images with bit depth less than 8 +- Fix a bug when reducing palette in images with transparency ### Version 0.14.1 - - Remove zlib dependency and switch entirely to miniz, since zlib 1.2.11 was not working with oxipng. This costs some performance, but is better than having a broken application. + +- Remove zlib dependency and switch entirely to miniz, since zlib 1.2.11 was not working with oxipng. This costs some performance, but is better than having a broken application. ### Version 0.14.0 - - Performance optimizations - - [SEMVER_MAJOR] Bump minimum rustc version to 1.13.0 - - Add categories on crates.io + +- Performance optimizations +- [SEMVER_MAJOR] Bump minimum rustc version to 1.13.0 +- Add categories on crates.io ### Version 0.13.1 - - Bump regex dependency to 0.2 - - Bump byteorder dependency to 1.0 - - Bump rayon dependency to 0.6 + +- Bump regex dependency to 0.2 +- Bump byteorder dependency to 1.0 +- Bump rayon dependency to 0.6 ### Version 0.13.0 - - Fix bug in certain PNG headers when reducing color type ([#52](https://github.com/shssoichiro/oxipng/issues/52)) - - [SEMVER_MAJOR] Reduction functions now take `&mut PngData` and return a `bool` indicating whether the image was reduced - - [SMEVER_MAJOR] Bump minimum required rustc version to 1.12.0 + +- Fix bug in certain PNG headers when reducing color type ([#52](https://github.com/shssoichiro/oxipng/issues/52)) +- [SEMVER_MAJOR] Reduction functions now take `&mut PngData` and return a `bool` indicating whether the image was reduced +- [SMEVER_MAJOR] Bump minimum required rustc version to 1.12.0 ### Version 0.12.0 - - Performance optimizations - - Fix processing filenames that contain commas (@aliceatlas [#50](https://github.com/shssoichiro/oxipng/pull/50)) - - [SEMVER_MINOR] Add zopfli option (-Z), disabled by default. Gives about 10% better compression, but is currently 50-100x slower. + +- Performance optimizations +- Fix processing filenames that contain commas (@aliceatlas [#50](https://github.com/shssoichiro/oxipng/pull/50)) +- [SEMVER_MINOR] Add zopfli option (-Z), disabled by default. Gives about 10% better compression, but is currently 50-100x slower. ### Version 0.11.0 - - [SEMVER_MAJOR] Bump minimum rustc version to 1.9.0, required by dependencies - - [SEMVER_MINOR] Allow calling optimization presets via crate using `Options::from_preset` - - [SEMVER_MAJOR] Return proper `PngError` type which implements `std::error::Error` from `Result`s - - [SEMVER_MAJOR] Rename module `deflate::deflate` to `deflate` - - Performance optimizations + +- [SEMVER_MAJOR] Bump minimum rustc version to 1.9.0, required by dependencies +- [SEMVER_MINOR] Allow calling optimization presets via crate using `Options::from_preset` +- [SEMVER_MAJOR] Return proper `PngError` type which implements `std::error::Error` from `Result`s +- [SEMVER_MAJOR] Rename module `deflate::deflate` to `deflate` +- Performance optimizations ### Version 0.10.0 - - [SEMVER_MINOR] Make clap and regex dependencies optional - - Enabled by default, needed for executable build; can be disabled for use in crates - - Remove reduction from palette to grayscale, which was not working and provided minimal benefit + +- [SEMVER_MINOR] Make clap and regex dependencies optional + - Enabled by default, needed for executable build; can be disabled for use in crates +- Remove reduction from palette to grayscale, which was not working and provided minimal benefit ### Version 0.9.0 - - [SEMVER_MAJOR] Significant refactoring of modules - - Use `itertools` to cleanup areas of code - - Use multiple threads for filtering trials + +- [SEMVER_MAJOR] Significant refactoring of modules +- Use `itertools` to cleanup areas of code +- Use multiple threads for filtering trials ### Version 0.8.2 - - Fix issue where images smaller than 4px width would crash on interlacing ([#42](https://github.com/shssoichiro/oxipng/issues/42)) + +- Fix issue where images smaller than 4px width would crash on interlacing ([#42](https://github.com/shssoichiro/oxipng/issues/42)) ### Version 0.8.1 - - Minor optimizations - - Fix issue where interlaced images with certain widths would fail to optimize + +- Minor optimizations +- Fix issue where interlaced images with certain widths would fail to optimize ### Version 0.8.0 - - [SEMVER_MINOR] Add support for optimizing PNGs already loaded into memory via library function + +- [SEMVER_MINOR] Add support for optimizing PNGs already loaded into memory via library function ### Version 0.7.0 - - Minor compression improvement on interlaced images - - Performance optimizations - - [SEMVER_MINOR] Move default Options into a Default impl - - [SEMVER_MINOR] Add option for setting number of threads ([#39](https://github.com/shssoichiro/oxipng/issues/39)) + +- Minor compression improvement on interlaced images +- Performance optimizations +- [SEMVER_MINOR] Move default Options into a Default impl +- [SEMVER_MINOR] Add option for setting number of threads ([#39](https://github.com/shssoichiro/oxipng/issues/39)) ### Version 0.6.0 - - Fix issue where output directory would not be created if it did not exist - - Use miniz for compression strategies where it outperforms zlib - - [SEMVER_MINOR] Partially implement -p / --preserve, as far as stable Rust will allow for now - - [SEMVER_MINOR] Implement --fix to ignore CRC errors and recalculate correct CRC in output + +- Fix issue where output directory would not be created if it did not exist +- Use miniz for compression strategies where it outperforms zlib +- [SEMVER_MINOR] Partially implement -p / --preserve, as far as stable Rust will allow for now +- [SEMVER_MINOR] Implement --fix to ignore CRC errors and recalculate correct CRC in output ### Version 0.5.0 - - [SEMVER_MINOR] Palette entries can now reduced, on by default ([#11](https://github.com/shssoichiro/oxipng/issues/11)) - - Don't report that we are in pretend mode if verbosity is set to none - - Add cargo bench suite ([#7](https://github.com/shssoichiro/oxipng/issues/7)) + +- [SEMVER_MINOR] Palette entries can now reduced, on by default ([#11](https://github.com/shssoichiro/oxipng/issues/11)) +- Don't report that we are in pretend mode if verbosity is set to none +- Add cargo bench suite ([#7](https://github.com/shssoichiro/oxipng/issues/7)) ### Version 0.4.0 - - Performance optimizations - - [SEMVER_MAJOR] `-s` automatically infers `--strip safe` ([#31](https://github.com/shssoichiro/oxipng/issues/31)) - - Update byteorder and clap crates - - Fix issue where interlaced images incorrectly applied filters on the first line of a pass + +- Performance optimizations +- [SEMVER_MAJOR] `-s` automatically infers `--strip safe` ([#31](https://github.com/shssoichiro/oxipng/issues/31)) +- Update byteorder and clap crates +- Fix issue where interlaced images incorrectly applied filters on the first line of a pass ### Version 0.3.0 - - Properly decode interlaced images - - [SEMVER_MINOR] Allow converting between progressive and interlaced images ([#3](https://github.com/shssoichiro/oxipng/issues/3)) - - Fix a bug that would cause oxipng to crash on very small images + +- Properly decode interlaced images +- [SEMVER_MINOR] Allow converting between progressive and interlaced images ([#3](https://github.com/shssoichiro/oxipng/issues/3)) +- Fix a bug that would cause oxipng to crash on very small images ### Version 0.2.2 - - Limit number of threads to 1.5x number of cores - - Significantly improve memory usage, especially with high optimization levels. ([#32](https://github.com/shssoichiro/oxipng/issues/32)) - - Refactor output code ([#19](https://github.com/shssoichiro/oxipng/issues/19)) + +- Limit number of threads to 1.5x number of cores +- Significantly improve memory usage, especially with high optimization levels. ([#32](https://github.com/shssoichiro/oxipng/issues/32)) +- Refactor output code ([#19](https://github.com/shssoichiro/oxipng/issues/19)) ### Version 0.2.1 - - Add rustdoc for public methods and structs - - Improve filter mode 5 heuristic ([#16](https://github.com/shssoichiro/oxipng/issues/16)) - - Add tests for edge-case images with subtitles ([#29](https://github.com/shssoichiro/oxipng/issues/29)) + +- Add rustdoc for public methods and structs +- Improve filter mode 5 heuristic ([#16](https://github.com/shssoichiro/oxipng/issues/16)) +- Add tests for edge-case images with subtitles ([#29](https://github.com/shssoichiro/oxipng/issues/29)) ### Version 0.2.0 - - Fix program version that is displayed when running `oxipng -V` - - Ensure `--quiet` mode is actually quiet (@SethDusek [#20](https://github.com/shssoichiro/oxipng/pull/20)) - - Write status/debug information to stderr instead of stdout - - Use heuristics to determine best combination for `-o1` ([#21](https://github.com/shssoichiro/oxipng/issues/21)) - - [SEMVER_MAJOR] Allow 'safe', 'all', or comma-separated list as options for `--strip` - - [SEMVER_MINOR] Add `-s` alias for `--strip` + +- Fix program version that is displayed when running `oxipng -V` +- Ensure `--quiet` mode is actually quiet (@SethDusek [#20](https://github.com/shssoichiro/oxipng/pull/20)) +- Write status/debug information to stderr instead of stdout +- Use heuristics to determine best combination for `-o1` ([#21](https://github.com/shssoichiro/oxipng/issues/21)) +- [SEMVER_MAJOR] Allow 'safe', 'all', or comma-separated list as options for `--strip` +- [SEMVER_MINOR] Add `-s` alias for `--strip` ### Version 0.1.1 - - Fix `oxipng *` writing all input files to one output file ([#15](https://github.com/shssoichiro/oxipng/issues/15)) + +- Fix `oxipng *` writing all input files to one output file ([#15](https://github.com/shssoichiro/oxipng/issues/15)) ### Version 0.1.0 - - Initial beta release - - Reduce color type and bit depth - - Recompress with zlib - - Multithreading - - Strip headers option - - Backup file before writing option - - Write to stdout option + +- Initial beta release +- Reduce color type and bit depth +- Recompress with zlib +- Multithreading +- Strip headers option +- Backup file before writing option +- Write to stdout option diff --git a/Cargo.lock b/Cargo.lock index 698b9550..d5171e4e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -48,9 +48,9 @@ checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" [[package]] name = "bitflags" -version = "1.2.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "build_const" @@ -60,9 +60,9 @@ checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" [[package]] name = "bytemuck" -version = "1.7.0" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9966d2ab714d0f785dbac0a0396251a35280aeb42413281617d0209ab4898435" +checksum = "72957246c41db82b8ef88a5486143830adeb8227ef9837740bdec67724cf2c5b" [[package]] name = "byteorder" @@ -72,9 +72,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "cc" -version = "1.0.68" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a72c244c1ff497a746a7e1fb3d14bd08420ecda70c8f25c7112f2781652d787" +checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" [[package]] name = "cfg-if" @@ -145,9 +145,9 @@ dependencies = [ [[package]] name = "crc" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10c2722795460108a7872e1cd933a85d6ec38abc4baecad51028f702da28889f" +checksum = "49fc9a695bca7f35f5f4c15cddc84415f66a74ea78eef08e90c5024f2b540e23" dependencies = [ "crc-catalog", ] @@ -179,9 +179,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" +checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -229,9 +229,9 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "filetime" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d34cfa13a63ae058bfa601fe9e313bbdb3746427c1459185464ce0fcf62e1e8" +checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" dependencies = [ "cfg-if", "libc", @@ -303,9 +303,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.98" +version = "0.2.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790" +checksum = "fbe5e23404da5b4f555ef85ebed98fb4083e55a00c317800bc2a50ede9f3d219" [[package]] name = "libdeflate-sys" @@ -354,12 +354,11 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.4.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082" dependencies = [ "adler", - "autocfg", ] [[package]] @@ -415,13 +414,13 @@ dependencies = [ [[package]] name = "oxipng" -version = "5.0.0" +version = "5.0.1" dependencies = [ "bit-vec", "byteorder", "clap", "cloudflare-zlib", - "crc 2.0.0", + "crc 2.1.0", "crossbeam-channel", "filetime", "image", @@ -429,7 +428,7 @@ dependencies = [ "itertools", "libdeflater", "log", - "miniz_oxide 0.4.4", + "miniz_oxide 0.5.1", "rayon", "rgb", "rustc_version", @@ -477,18 +476,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab49abadf3f9e1c4bc499e8845e152ad87d2ad2d30371841171169e9d75feee" +checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" dependencies = [ "bitflags", ] [[package]] name = "rgb" -version = "0.8.27" +version = "0.8.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fddb3b23626145d1776addfc307e1a1851f60ef6ca64f376bcb889697144cf0" +checksum = "a27fa03bb1e3e2941f52d4a555a395a72bf79b0a85fbbaab79447050c97d978c" dependencies = [ "bytemuck", ] @@ -510,9 +509,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "semver" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f3aac57ee7f3272d8395c6e4f502f434f0e289fcd62876f70daa008c20dcabe" +checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" [[package]] name = "stderrlog" @@ -579,9 +578,9 @@ checksum = "a9b2228007eba4120145f785df0f6c92ea538f5a3635a612ecf4e334c8c1446d" [[package]] name = "unicode-width" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "vec_map" diff --git a/Cargo.toml b/Cargo.toml index 6facd7cc..c1bc2d2e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ license = "MIT" name = "oxipng" repository = "https://github.com/shssoichiro/oxipng" build = "build.rs" -version = "5.0.0" +version = "5.0.1" [badges] travis-ci = { repository = "shssoichiro/oxipng", branch = "master" } @@ -34,7 +34,7 @@ byteorder = "^1.4.2" crc = "^2.0.0" itertools = "^0.10.0" zopfli = { version = "^0.4.0", optional = true } -miniz_oxide = "0.4" +miniz_oxide = "0.5" rgb = "0.8.25" indexmap = "1.6.1" libdeflater = { version = "0.7.1", optional = true }