Crinkler
Introduction
Crinkler is an executable file compressor (or rather, a
compressing linker) for Windows specifically targeted towards
compressing 4k intros.
Crinkler is being developed by Rune L. H. Stubbe (Mentor/TBC)
and Aske Simon Christensen (Blueberry/Loonies).
History
- 12.01.08: Version 1.1 released.
Support for weak externals (virtual C++ destructors).
Output EXE files are now compatible with Data Execution Prevention.
/REPORT option to get an HTML compression report showing detailed
compression ratios for every byte of code or data.
/TRUNCATEFLOATS option to truncate float constants to a specified
number of bits.
/SAFEIMPORT is now default, disabled with /UNSAFEIMPORT.
Slightly smaller import code overhead if range importing is not used.
Fixed some crash problems with compressing very small files.
/VERBOSE:FUNCTIONS removed, as it is subsumed by /REPORT.
Remaining /VERBOSE options renamed to /PRINT to avoid conflict with
the /VERBOSE options of the Visual Studio linker.
Maximum number of ORDERTRIES increased to 100000, for those who
really have lots of patience.
- 07.01.07: Version 1.0a released.
New /VERBOSE:FUNCTIONS options to sort the functions.
Various verbose output fixes.
Various crash fixes.
A fix to the /FIX Crinkler version recognizer.
- 27.12.06: Version 1.0 released with lots of new features!
Output EXE files are now Windows Vista compatible.
Compression tweak for greatly improved compression ratio.
Much faster compression.
Automatically takes advantage of multiple processors.
Improved Visual Studio 2005 integration.
/COMPMODE:INSTANT option for very quick compression.
/ORDERTRIES option to try out different section orderings.
/SAFEIMPORT option to insert a check for nonexisting DLLs.
/PROGRESSGUI option for a graphical progress bar.
/REPLACEDLL option to replace one DLL with another.
/FIX option to fix compatibility problems of older versions.
- 09.02.06: Version 0.4a released:
Fixed linker crash problem with blank member entries
in some library files (such as glut32).
The /PRIORITY option was not mentioned in the
commandline usage help.
- 18.12.05: Version 0.4 released:
Changed header and import code to make output EXE files
compatible with 64-bit versions of Windows.
Fixed a bug in the ordinal range import mechanism.
Added a switch to control the process priority.
Added a warning for range import of an unused DLL.
Some more header squeezing.
- 31.10.05: Version 0.3 released:
Output EXE files are now Windows 2000 compatible.
Added a number of verbose options to output useful
information about the program being compressed.
Added an option for transforming function calls to
use absolute offsets to improve compression.
Fixed a bug in the linker regarding identically named
sections.
Fixed a potential crash bug in the linker.
Various small tweaks and optimizations.
- 23.07.05: Version 0.2 released:
Fixed bug in the decompressor.
Changed the behaviour of the /CRINKLER option.
Added timing to the progress bars.
Some updates to the manual and usage description.
- 21.07.05: Version 0.1 released.
Download
Crinkler is free (as in beer).
Download the newest version of Crinkler (1.1)
here.
Support
You can help us make Crinkler a better piece of software. We are
currently very interested in:
- Feedback: Any problems, comments or suggestions? Tell us
what you think about Crinkler in the Pouet.net
forum.
- Test data: Send us the object files of your uncompressed
4k intros (preferrably a release version). This will help us a lot in
testing the program. You can reach us at
authors@crinkler.net
- Bug reports: If Crinkler does not work with your intro or
in your system, tell us about it and (if possible) include the object
files and/or code you tried to compress.