lrzip-0.60 update

All files created with lrzip 0.6x are not backward compatible with versions
prior to 0.60. v0.6x can read files generated with earlier versions.

Con Kolivas March 2011.

lrzip-0.50 update

All files created with lrzip 0.5x are not backward compatible with versions
prior to 0.50. v0.50 can read earlier generated files.

lrzip-0.41 update

Files created with lrzip 0.41 and selecting the -z option for
ZPAQ compression are not backwardly compatible.

lrzip-0.40 update!

FILES CREATED WITH LRZIP 0.40+ are not backward compatible with
versions prior to 0.40. The file format was completely changed
to 64bit addressing throughout to allow massive compression windows
on massive files. v0.40+ will detect older version files and
decompress them fine though, but will always generate files in
the new format.

Con Kolivas November 2009.

lrzip-0.24 update!

FILES CREATED WITH LRZIP 0.23 and earlier are NOT
BACKWARD COMPATIBLE if compressed with LZMA.

All other compression schemes are compatible.

The lrz file header is changed. It now stores the encoded
parameters LZMA uses in bytes 16-20. This is a departure
from the method used in lrzip-0.23.

Please preserve the binary of lrzip-0.23 or earlier if you
require access to lrzip files using LZMA compression created
with an earlier version.

FILES CREATED WITH LRZIP-0.22 MAY NOT BE BACKWARD COMPATIBLE!

lrzip-0.22 uses a slightly different and improved method of
compressing and decompressing files compared to lrzip-0.19 and
earlier versions.

ANY FILE COMPRESSED WITH LZMA USING A COMPRESSION LEVEL > 7
cannot be decompressed with any earlier version of lrzip.

ANY FILE COMPRESSED WITH LZMA USING A COMPRESSION LEVEL <=7
CAN be decompressed with earlier versions of lrzip.

ANY FILE COMPRESSED WITH AN EARLIER VERSION OF LRZIP CAN
be decompressed with lrzip-0.22
---------------------------------------------------------
Brief Technical discussion.

Earlier versions of lrzip used a variable dictionary buffer size
when compressing files with LZMA. It used a formula of
Compression Level + 14 bits. LZMA Dictionary buffer size was
computed as 2^(level+14).  2MB, 21 bits had been the default for
compression level 7. Level 8 was 4MB and level 9, 8MB.

The default decompression level was fixed at 23 bits, 8MB. This
was equal to the (then) largest possible dictionary buffer size,
9+14=23, 2^23=8MB. So all data regardless of compression level
could decompress.

Beginning in lrzip-0.22, the default dictionary buffer size is
Level + 16 bits (7+16=23 bits or 8MB). Files compressed with the
default level or lower CAN be decompressed with an earlier lrzip
version.

Since the the maximum dictionary buffer size for lrzip-0.22 is
now 25 bits, or 32MB. Files compressed using level 8 or level 9
(24 or 25 bits) cannot be decompressed with earlier versions of
lrzip since the fixed dictionary buffer size of 8MB used for
decompression in lrzip-0.19 and earlier cannot hold the data from
lrzip-0.22.

Here is a table to show what can and cannot be decompressed with
lrzip-0.19 and earlier

LRZIP-0.22	LRZIP-0.19
COMPRESSION	CAN		DICTIONARY
LEVEL		DECOMPRESS?	BUFFER SIZE
-----------	-----------	-----------
<=7		YES		<=8MB (2^23)
8		NO		16MB  (2^24)
9		NO		32MB  (2^25)

lrzip-0.22 can decompress all earlier files.

lrzip-0.22 uses three bytes in the compressed file to store the
compression level used. Thus, when decompressing, lrzip will read
the proper dictionary buffer size and use it when decompressing
the file. See the file magic.header.txt for more information.

January 2008
Peter Hyman
pete@peterhyman.com
