
Originally Posted by
Stephan Busch
And I like the idea that all libraries are attached to the executable.
Yes, it simplifies things. The only downsides I see is that executables get bloated (Windows versions are 1 MB each, though UPX can compress them to 300 KB), but I could start releasing additional "slim" versions (e.g. only deflate without bZip2, packJPG) if it gets too extreme.
A strange thing I noticed is that my (Windows) version of UPX won't compress the Linux executable. It says it needs 6 passes and stops with the message "premature end of file" after the third one. Also, the Linux version is only 430 KB. As JPG recompression works under Linux and the compiler settings are the same, I suspect the Windows version to be larger as needed, containing some unnecessary debug information or something like this.

Originally Posted by
Stephan Busch
Just wondering why it doesn't see the deflated content of WISE installers.
Looking at one of the WISE installers (WISE copernicagentbasic.exe, 3.546.360 bytes) with rawdet from Shelwien's reflate shows the streams we're looking for. The first one is:
Code:
beg=00004D2F last=1 type=2 size=3336 unplen=16824
end=000060F0 bufbeg=00000004 bufend=00000000
It detects 46 of those ranging from 479 to 103680 bytes decompressed. Precomp detects them too, but only in brute mode, and they are difficult to spot because of all the additional misdetected streams:
Code:
(0.56%) Possible zLib-Stream (brute mode) found at position 19759, windowbits = 15
Can be decompressed to 16824 bytes
No matches
[...]
New size: 3548304 instead of 3546360
Time: 10 hour(s), 59 minute(s), 18 second(s)
[...]
Brute mode streams: 9/1195
[...]
-zl49,53 -d1
Additionally to the fact that I need to catch up with reflate's diff mechanism that allows to recompress every detected stream (the GIF rewrite was kind of a training for this, though it's almost trivial compared to the complexity of deflate), I see a need for a better (and especially faster!) detection of raw streams - rawdet takes some seconds to show the list of streams, Precomp takes 10 hours for the complete run. A first step will be a "analysis only" brute mode that doesn't try to recompress, but only lists decompressed sizes above a certain threshold. After that, I'll have a look at changing the detection code for intense and brute mode, sorting many misdetected streams out, but trying not to lose small valid streams. The goal of course is implementing complete deflate recompression similar to reflate.