Skip to content

v1.7.0

Choose a tag to compare

@Snesnopic Snesnopic released this 18 Jun 18:43

Major release featuring a libmagic replacement and six new processors.

What's new

New processors

  • CAB (Microsoft Cabinet): Added CabProcessor to optimize MSZIP blocks inside legacy Microsoft .cab files.
  • GZip: Moved .gz file processing to new GzProcessor.
  • LZ4: Added Lz4Processor to support LZ4 streams.
  • Lua: Added LuaProcessor to optimize Lua bytecode by stripping (thanks Leanify).
  • STL: Added StlProcessor to optimize 3D printing STL files.
  • MIME: Added MimeProcessor to parse multipart messages (like .eml), extracting Base64 attachments, optimizing them, and re-encoding them.

Bye bye libmagic

  • Replaced libmagic with qadmimes: libmagic was too heavy of a dependency; to make sure it worked properly, a lot of CMake boilerplate was needed, and the magic database was embedded in the binary and decompressed on first boot, to make sure it was always present. Chisel now uses a lighter replacement, qadmimes, which currently has around 700 rules built into the binary directly.

Architectural changes & deprecations

  • The parallel processing mode has been deprecated. Kind of pointless tbh
  • Dropped support for RAR extraction. It was never compatible, it just was erroneously marked as such.

General improvements

  • Fixed some memory leaks in the ApeProcessor, default-initialized several variables, packed internal structs, and improved JPEG error handling to prevent crashes on corrupt payloads.
  • Cleaned up the raw_equal interface across the board. Removed redundant overrides for many processors, relying instead on the base get_raw_checksum matching. Added a robust semantic equivalence check for the JSON processor.
  • The FileLogSink now always explicitly flushes at the end of operations, so of a file causes a hard crash, the log is guaranteed to be written to disk before the process dies.
  • Added various CMake options to avoid compiling unnecessary components, so builds are now a bit faster.

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.