**Status:** June 2023
The 4.5.0 release is a minor release with minor image quality improvements, and multiple build system quality-of-life improvements.
* **General:**
* **Bug-fix:** Improved handling compiler arguments in CMake, including consistent use of MSVC-style command line arguments for ClangCL.
* **Bug-fix:** Invariant Clang builds now use `-ffp-model=precise` with `-ffp-contract=off` which is needed to restore invariance due to recent changes in compiler defaults.
* **Change:** macOS binary releases are now distributed as a single universal binary for all platforms.
* **Change:** Windows binary releases are now compiled with VS2022.
* **Change:** Invariant MSVC builds for VS2022 now use `/fp:precise` instead of `/fp:strict`, which is is now possible because precise no longer implies contraction. This should improve performance for MSVC builds.
* **Change:** Non-invariant Clang builds now use `-ffp-model=precise` with `-ffp-contract=on`. This should improve performance on older Clang versions which defaulted to no contraction.
* **Change:** Non-invariant MSVC builds for VS2022 now use `/fp:precise` with `/fp:contract`. This should improve performance for MSVC builds.
* **Change:** CMake config variables now use an `ASTCENC_` prefix to add a namespace and group options when the library is used in a larger project.
* **Change:** CMake config `ASTCENC_UNIVERSAL_BUILD` for building macOS universal binaries has been improved to include the `x86_64h` slice for AVX2 builds. Universal builds are now on by default for macOS, and always include NEON (arm64), SSE4.1 (x86_64), and AVX2 (x86_64h) variants.
* **Change:** CMake config `ASTCENC_NO_INVARIANCE` has been inverted to remove the negated option, and is now `ASTCENC_INVARIANCE` with a default of `ON`. Disabling this option can substantially improve performance, but images can different across platforms and compilers.
* **Optimization:** Color quantization and packing for LDR RGB and RGBA has been vectorized to improve performance.
* **Change:** Color quantization for LDR RGB and RGBA endpoints will now try multiple quantization packing methods, and pick the one with the lowest endpoint encoding error. This gives a minor image quality improvement, for no significant performance impact when combined with the vectorization optimizations.
Binary release sha256 checksums
fe2a1e5c8e57fc77175c6e9d0e1a10e583816507c82c748c568694bf39ae9f57 astcenc-4.5.0-linux-x64.zip
bc8895222820106135575b7dd1bef4d9f184be7ef7de6e684ab563b64c22d163 astcenc-4.5.0-macos-universal.zip
7c63f167558c65e607f72a4dc30b86d631ae3b561cffaee9d2afb5d5149d72e0 astcenc-4.5.0-windows-x64.zip