Skip to content

v1.9.0

Latest

Choose a tag to compare

@Snesnopic Snesnopic released this 13 Jul 06:16

Big housekeeping release

What's new

Critical fix

  • Fixed iOS's xcframework builds silently missing libtiff symbols because of a change in libtiff's CMakeLists

Processor correctness audit

Fixed a lot of bugs and edge cases

  • WebP: lossless encoding was sometimes lossy; now truly lossless, including animated WebP
  • TIFF: fixed corruption of 16/32 bit, floating-point, CMYK, and palette images
  • PE (EXE/DLL/OCX/SCR/CPL): the optimizer now consistently reduces file sizes
  • Lua bytecode: fixed crashes on many compiled scripts
  • STL: fixed malformed files silently producing wrong 3D geometry
  • ICO: fixed icons with incorrect height failing to load or render incorrectly
  • MNG/JNG, PCX/DCX, PNM, JPEG 2000, TGA, BMP, GIF: fixed various data losses, wrong colors, and metadata loseses bugs
  • PDF, OOXML/OpenDocument, Archive, WOFF/WOFF2: fixed corruption and metadata handling bugs
  • SQLite, JSON, vCard, RDB: fixed data loss and precision bugs
  • MP3, Ogg, JPEG XL, APE/Musepack/TTA, WavPack: fixed audio corruption, crashes, and integrity-check gaps. WavPack cover art is now optimized instead of just copied through
  • Kanzi, Cab, Brotli, Lz4, Zstd, Bzip2, Lzma/XZ, Gzip, SWF: fixed missing integrity checks, and truncation bugs on multi-stream files
  • JPEG, PNG, XML/SVG/HTML, Matroska, ICNS: assorted metadata and minor corruption fixes

Reliability

  • Fixed a data race on internal result arrays across worker threads
  • Fixed --output-dir silently discarding Phase 2's recompression for "mixed" processors (FLAC, APE, Ogg, MKV, XML) that both recompress and extract embedded content
  • Fixed a rare hang when cancelling a run while files were still queued
  • Hardened archive extraction against some edge case, and fixed orphaned temp files left behind when optimization failed partway

CLI

  • Redesigned console output during processing

Dependencies

  • Updated mseedout which is now faster, lower memory usage, and no longer crashes on large files
  • Updated mp3packercpp to provide mp3 checking via its minimp3
  • Updatedlibmkclean, zopfli to fix some undefined behaviours

macOS: removing the Gatekeeper quarantine

When downloading binaries from the internet, macOS automatically marks them as “quarantined”.
If you try to run chsl and macOS shows a warning like:

“chsl cannot be opened because it is from an unidentified developer”

…you need to remove the quarantine attribute manually.

How to remove the quarantine flag
Open Terminal in the folder where you downloaded chsl and run:

xattr -d com.apple.quarantine ./chsl

To verify that the quarantine flag is gone:

xattr ./chsl

If com.apple.quarantine no longer appears, you're good to go.
Now you can run:

./chsl ...

Note
This issue does not occur if you compile chsl yourself.