- Due to C99 used in liblzma, Visual Studio 2013 or higher is needed
(2013 untested, 2015 works)
- Using the CRC32 implementations in C instead of the assembler ones
that won't work
- msinttypes not needed anymore
- .gitignore adjusted
- I won't be able to maintain multiple Visual Studio solutions, sorry
- Precomf should be added as build config (using -DCOMFORT) instead of
seperate project
- LZMA_CONCATENATED flag removed (not needed because of a single stream)
- Code adapted from liblzma decompress.cpp example
- Sleep in own_fwrite removed
- liblzma source code added (we don't want to use a DLL)
- Moved lzma.h and lzma subfolder to api subfolder
- Removed some unnecessary files (liblzma.def, lzma_dll.txt)
- Adjusted make.bat, added some "echo" statements to show build state.
- Can be compiled, but using "-cl" or "-cx" give errors (specified
filter chain is not supported), "-cm" gives a crash
liblzma is a public domain general-purpose data compression library with a zlib-like API. The native file format is .xz, but also the old .lzma format and raw (no headers) streams are supported. Multiple compression algorithms (filters) are supported. Currently LZMA2 is the primary filter.
liblzma is part of XZ Utils <http://tukaani.org/xz/>. XZ Utils includes a gzip-like command line tool named xz and some other tools. XZ Utils is developed and maintained by Lasse Collin.
Major parts of liblzma are based on Igor Pavlov's public domain LZMA SDK <http://7-zip.org/sdk.html>.
- Before: Only compression level 1-9 was shown
- After. Compression and memory level are shown similar to -zl parameter
(e.g. compression level 5, memory level 6 shows as "level combination
56")
- original compressed size is tracked now
- trying combination stop has a new constraint: new compressed size must
be the same as the original compressed size
- fixed some usages of identical_bytes_decomp (instead of
best_identical_bytes_decomp) that could lead to "No matches" although
matches were found
- there were cases where everything was decompressed, but penalty bytes
were used and trying combinations was stopped too early
- penalty byte must now be 0 before trying combinations is stopped
- Merged compare_file_mem and compare_files_penalty
- There was a temporary file between the two functions before which is
not needed anymore, comparisons are done in memory on 512 byte chunks
- Result on silesia.zip: 15% faster (30,7 s => 26,2 s)
- See issue #14
- Only some files used partial matches, on most of them, compression was
worse with them
- Now "recompression failed" is printed instead and the stream doesn't
get processed further
- compare_files_penalty for "real identical bytes" is useless now, as it
gives the same result as the compare_files_penalty done before
- file truncation is unnecessary