Releases: johannesvollmer/exrs
Performance Improvements (Breaking Changes)
Still supports Rust 1.59.0
. Thanks to @Shnatsel for the support.
Restrict version of `half` to maintain compiler backwards compatibility
see #213
thanks to @michaelciraci for the quick reaction :)
see starkat99/half-rs#97
the new package is available on https://crates.io/crates/exr
Various Performance Improvements by @Shantsel
Various Improvements in encoding and decoding speed, yay!
Huge thanks to @Shnatsel for all of these:
- Faster Zip1 & Zip16 & PXR24 decoding (encoding unchaged yet) (by using a new dependency)
- Faster RLE encoding and decoding (by utilizing cpu vectorization where supported)
- Faster packing and unpacking of RLE & Zip1 & Zip16 images (by utilizing cpu vectorization where supported)
Various Improvements
Big thanks to our two new contributors :)
- @anfedotoff fix multiplication overflow in preview attribute: #166
- @Shnatsel pass bounds to zip compression: #167
Zip Compression Speedup & Official (Incomplete) Big Endian Support
- Replaced
inflate
&deflate
dependency withminiz_oxide
, improving decompression performance and compression ratio (Thanks to @Shnatsel for the suggestion) for compression methodsZIP1
,ZIP16
,PXR24
. - Officially started supporting big endian architectures. The functionality is almost fully implemented already. Only the
PXR24
compression method is not supported yet, it will return an error when compressed or decompressed on such an architecture. lebe
dependency license changed to standardized BSD-3-Clause
Quick Fixes
Fuzzing revealed a panic in IntegerBounds
, this was fixed, and the auto-cropping algorithm behaviour and performance was improved, thanks to the help of @saethlin.
B44 Compression Method and Larger Tuples for Channels
I'm honoured to announce this new release, which largely consists of two great community contributions.
- The B44 and B44A compression methods are now supported (the first lossy method), thanks to Dorian Fevrier
- When using a tuple to store your channels, you can now use 32 channels instead of only 8, thanks to Karel Peeters
Other changes have also been made.
- low-level interface restructured - was one monolithic function, has become multiple composable objects
- parallel compression bug resolved (excessive memory usage)
- updated dependencies
- documentation improvements
The RGBA API now works with arbitrary channels
This release generalizes the beloved rgba callback, so that it can be used with any combination of channels, yay!
Furthermore, it is now easier to create images with multiple layers where each layer has a different type.
At last, this release also includes a dedicated GUIDE.MD
, which is an introduction to the concepts in this library. This should help you to get started more easily than just examples.
- read and write specific channels, by name, and inferred sample type
- dedicated introductory guide
- write multiple layers with different types
- many other small improvements
`exrs v1.0.0` lays architectural groundwork
Hi! I'm proud to announce that I declare this libary version 1.0
today.
However, this is not because of full exr support yet. Instead, I came to the conclusion that the remaining missing features should not be added in a hurry. The recent architecture rework is an improvement that enables us to do all the other missing exr features smoothly. That's why this restructuring lifts this crate to version 1.0
.
Improvements:
- support auto crop for all image types and with more control
- the beloved closure style for reading rgba images now supports multiple layers
- arbitrary channels now support reading only one layer and skipping the rest
- even simpler "one liner" rgba read and write functions
- reduce code duplication within exrs
- allow you to insert your own modular reader or writer, supporting custom pixel storage types, channels, or even layers
- documentation improvements and lots of improved names
New Attributes and Auto Cropping
There's some new features in this new exrs
release!
- new attributes: software name, far and near clip, vertical and horizontal field of view
- a basic auto crop function (but an example is missing)
- checks meta data before creating file on system
- some things have been renamed