QuickLZ 1.40 beta test website

Precompiled executables

Please download qpress from the front page.

Help beta testing 1.40

If you have some spare CPU cycles you can help beta testing version 1.40 with our automated test tools. Sources and perl build scripts are included, and they are portable, but only Windows is supported here.

The tools are testing following:

One test tool is inmem.zip which takes a file as argument and repeatedly selects a random offset and length to compress and validate, until a total of 1 GB has been compressed. The zip file contains 108 executables compiled with different configurations of the flags described in the manual. You can execute them all one by one with inmem.bat:

inmem.bat d:\largefile.xml

Another test tool is diskfiles.zip which will compress and validate all files in a user given directory, recursively. It takes part in-memory and doesn't use disk space or much memory. You can execute them all one by one with diskfiles.bat:

diskfiles.bat d:\

All executables are running in IDLE_PRIORITY_CLASS so that they can run in the background without disturbing too much. They can take hours or days to complete but you can cancel them any time.

In case of detected errors, crash or freeze, please note the executable filename, the data file which caused the error and other information printed on screen and contact lar@quicklz.com.

Changes since 1.30

C version

Download quicklz.c, quicklz.h
Manual manual.html
Sample code compress_file.c, decompress_file.c, stream_compress.c, stream_decompress.c
Changelog
Beta 9 06-May-2008 Decreased QLZ_SCRATCH_DECOMPRESS of level 1 to the accurate value required. It had some slack space before.
Beta 8 10-Apr-2008 Eliminated some warnings on the cc compiler. No further changes.
Beta 7 08-Mar-2008 Added an #ifndef QLZ_COMPRESSION_LEVEL around user settings in quicklz.h which makes it possible to define them from the outside. Turned qlz_memory_safe into upper case in get_setting().
Beta 6 23-Feb-2008 Added the #define memory_safe flag like found in 1.30. Removed the QLZ_SIMPLE_API flag and the new level introduced in beta 2 to keep things simple. We are planning some proving techniques for parts of the code. Feature freeze - from now on the only changes will be bugfixes.
Beta 5 18-Jan-2008 Increased compression speed of level 1 by 8-10% on most RISC architectures.
Beta 4 15-Jan-2008 Tuned the hash function for a tiny speed and compression gain.
Beta 3 05-Jan-2008 Introduced a new #define QLZ_SIMPLE_API flag which, when set, avoids scratch buffer arguments.
Beta 2 18-Dec-2007 Added a new compression level with compression speed between level 1 and 2.
Beta 1 12-Dec-2007 First release.

Precompiled DLLs

DLLs 140dll.zip
C# demo csharp.zip
Visual Basic 6 demo vb6.zip
PowerBASIC demo powerbasic.zip
Changelog Always latest C version compiled into DLLs

This is the C version compiled into DLLs. Some languages or wrappers may perform memory allocation or conversion on input and output data which adds some time overhead.

The DLLs are compiled with each their setting of the QLZ_COMPRESSION_LEVEL, QLZ_STREAMING_BUFFER and QLZ_MEMROY_SAFE flags:

Please see the manual for the C version for descriptions of these flags. Remember that data must be decompressed with the same setting of QLZ_COMPRESSION_LEVEL and QLZ_STREAMING_BUFFER as it was compressed.

QuickLZ Sharp

Download QuickLZ.cs
Changelog
Beta 2 29-Apr-2008 Added sizeCompressed() and sizeDecompressed() functions. Changed function names to leading lower case letter. Other minor changes.
Beta 1 08-Mar-2008 First release, derived from the beta 6 C version.

This is a native C# version with no unsafe code. Compression and decompression is roughly half as fast as the C and DLL versions.

Only a subset of the library has been ported, namely the setting QLZ_COMPRESSION_LEVEL = 1 and QLZ_STREAMING_BUFFER = 0 (compression level 1 and streaming mode disabled). Data compressed with QuickLZ Sharp can be decompressed by both the C and DLL versions and vice versa, prodivded that they are using these settings.

QuickLZ Sharp is also not using the QLZ_MEMORY_SAFE flag, so decompression may crash if fed with corrputed data. Because C# is managed you can place decompression in a try...catch block instead.

Usage is so simple it hardly needs description. Just call the functions byte[] compress(byte[] src) and byte [] decompress(byte[] src).

QuickLZ Java

Download QuickLZ.java
Changelog
Beta 2 29-Apr-2008 Added sizeCompressed() and sizeDecompressed() functions. Changed function names to leading lower case letter. Changed QuickLZ to be a static class in a packet named "quicklz". Other minor changes.
Beta 1 16-Mar-2008 First release, derived from the C# beta 1 version.

This is a native Java port. Its description is exactly the same as for the C# version above.