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
