QuickLZ 1.5.x
Home | Changelog | Testimonials | Order | Contact

Version numbering is on the form major.minor.revision. When revision is incremented, full backwards compatibility for both compressed data and programming API is maintained. You can simply replace the files and recompile/rebundle.

Versions in the same blue box are compatible for compressed data but can have different programming API and feature set. See the manuals for details.

Version and compatibility Download Bugs Changes
1.5.1 29-Mar-2011
Increased compression speed of level 1 of the C version from 308 to 341 MB/s on 64-bit x64. Other architectures and compression level 2 and 3 are not affected.

Also fixed a condition where QLZ_MEMORY_SAFE could fail detecting corrupted data. Thanks to Pascal Cuoq and Kerstin Hartig who used Frama-C's value analysis.
1.5.0 08-Jan-2011
See front page
Improves compression speed of level 1 by yet another 13 - 28% on 64-bit architectures and slightly on 32-bit architectures - wow! Decompression speeds and level 2 and 3 are unchanged.

Takes qlz_state_compress and qlz_state_decompress structs as argument instead of char *scratch buffers. This has cleaned up pointer arithmetic and #ifdef alot.

Added support for level 3 to the C# and Java versions.
1.4.1 22-Apr-2010
Improves compression ratio and compression speed for level 1 for data which contains sequences of the same byte (such as zero initialized data or same-colored pixels in raw images).

An example is a byte sequence like 0x85, 0x1b, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xc8, 0xc2 where version 1.4.0 in level 1 would require an additional sequence of 0x00 in the past in order to compress it. This restriction has been removed in 1.4.1.
1.4.0 04-Oct-2008
Introduced the new level 2, having almost the same compression ratio as old level 3 but more than twice as fast.

Optimized away some constant time overhead from old level 0 (now level 1) so that it's better suited for small input data.

Optimized away the need for the user flags #define test_rle and #define speedup_incompressible because methods have been developed which do not decrease performance for kinds of data where they are not needed. These are at the same time much simpler.

Fewer casts and cleaner #ifdef. Because backwards compatibility had to be lost anyway the opportunity was also taken to simplify the data formats. All in all, total line count decreased from 948 to 891. Not all software is affected by code growth :-)

Added QLZ_ and qlz_ prefixes on all publics.
1.3.1 04-Feb-2008
This version fixes a bug found in 1.30. Read a full bug report here.
1.3.0 14-Aug-2007
Now supports four compression levels: 0, 1, 2 and 3: Level 0 is using a new algorithm which is compressing both faster and better than version 1.20, but on the cost of decompression speed. Level 3 gives the best compression ratio and the fastest decompression speed.

Auto detection of architecture so that the #define x86x64_only flag is no longer needed.

Removed the qlz_compress_packet() and qlz_decompress_packet() functions to enable streaming compression through the #define STREAMING_MODE flag instead.
1.2.0 15-Mar-2007
Now with streaming compression for optimal compression ratio of small packets down to 400-500 bytes in size. See the new qlz_compress_packet() and qlz_decompress_packet() functions.

Also optimized away both constant size and constant time overhead from the normal qlz_compress() so that it is suitable for smaller data sources.
1.1.0 26-Nov-2006
Now compatible with x86, x64, IA64, Alpha, SPARC, MIPS, POWER, ARM and the like by avoiding unaligned memory access on these architectures.

For x86/x64: Increased average speed of compression by 3 Mbyte/s and decompression by 19 Mbyte/s on the test machines.
1.0.0 09-Nov-2006
First QuickLZ version.