Releases: runestubbe/Crinkler
Releases · runestubbe/Crinkler
Crinkler 3.0
Features:
- Support any number of parts, instead of just code and data.
- /TEXTPART option to control creation of a text data part.
- Revamped set of reuse modes, specifying how much is reused: NOTHING, PARTS, SECTIONS, MODELS, ALL.
- /REUSEGUI option to pop up a dialog to select reuse mode.
- Light and dark themes for the compression report.
- Icon for the compression report.
- Include filename and size in the title of the compression report.
- Select range of bytes in the compression report to measure size of region.
Optimizations:
- Improved model hashing using the CRC32 instruction, saving 3 bytes in header.
- Optimized linking and report generation, making /COMPMODE:INSTANT and /REUSEMODE:ALL runs much faster.
Fixes:
- Fixed excessive memory usage of hash table size optimization.
- Ideal and real compressed sizes now include model overhead.
- Fixed local labels sometimes being shown in the wrong section.
- Fixed label links sometimes pointing to a local label instead.
- Expand target label when clicking on a label link.
- Fixed progress bar not updating properly beyond 65535.
Compatibility:
- Crinkler and the EXE files it produces now require SSE4.2.
- Crinkler now requires Windows 10 or later, but can still target older Windows versions.
- Upgraded project to Visual Studio 2022 and C++20.
- Uncompressed size is now limited to 64k per part.
- Dropped support for /REPLACEDLL during recompression.
Crinkler 2.3
- The size of
/TINYHEADERreduced by another 3 bytes. - Faster hash size optimization, especially with many cores.
- Error messages about symbols that cannot be found now include the name of the function containing the reference to that symbol.
- When using functions from
msvcrt.dll, it is no longer necessary to supply an oldmsvcrt.lib. Crinkler now automatically links tomsvcrt.dll, similarly to how the Microsoft linker automatically links to its corresponding runtime. - For
CONSOLEapplications, when not specifying a custom entry point, Crinkler will insert a smallmainCRTStartupwhich handles commandline arguments. - The automatic
msvcrt.dlllinking and entry point can be disabled by using the/NODEFAULTLIBoption. - Added support for legacy format lib files with only the first linker member. Files like this are emitted from
rustc, for example. - When an imported DLL contains no export table (which is the case for some Wine DLLs), Crinkler will no longer crash. Instead, it will report an error, instructing the user to supply genuine Windows DLLs when crinkling on Wine.
- Only one dump file is written if several threads crash.