Tuesday, 10 March 2015


As if often the case, once I find time to work on a project, a few releases back to back usually follow. The same happened with lrzip, and here is version 0.621


and the git source code page:


For fun I compressed all stable linux kernels from 1.0 to 3.19 with lrzip as posted here:

Commemorative linux-1.0-3.19 compressed tarball
This was a 29GB tarball that compressed to 355MB and can be downloaded here:

What's new
- Substantial speed ups for the rzip stage in both regular and unlimited modes.
- Lrzip now supports long command line options.
- Proper support for the various forms of TMPDIR environment variables.
- More unix portability fixes.
- OSX fixes.
- Fixed order of lrzip.conf search.
- Addressed all warnings created with pedantic compiler settings and clang
- Fixes for some stderr messages being swallowed up.
- Fixed being unable to decompress to STDOUT when in a non-writable directory.
- Changed broken liblrzip callback function API to match lrzip proper.

* Fix libzpaq.cpp warnings
* Fix warnings in LzmaLib.c
* Making the high buffer only one page size is faster for sliding mmap mode
* Fix incompatible log callback in liblrzip
* Use PRId64 instead of lld in fscanf
* Use int64_t for i64
* Fix ISO C warning in lrzip.c
* Fix ISO C warning in lrzip.c
* Fix ISO C warning in runzip.c
* Fix ISO C warnings in rzip.c
* Fix iso c warning in util.c
* Fix EOL to unix on libzpaq
* control->tmpdir fixes
* Null terminate long options to find unhandled options
* Trivial date
* Add long option support
* Brace failure lead to broken dump to stdout
* fflush messages on print_err
* Fix inverse logic
* Honour the proper unix environment variable for temporary directory and then
try variations
* Attempt to decompress file in ram only if we are unable to create temporary
files when decompressing to stdout
* Avoid checking return values repeatedly on compress that only lead to failures
* Microoptimisation
* Don't check for failure condition that can no longer occur
* Don't check twice for failure conditions that are fatal in hot paths
* Cache the chunk bytes value to avoid setting it on each read_header call
* fake_mremap is only used when defined to mremap
* Remove unused cksem functions
* Fix remaining use of mutexes lock/unlocking in different threads with cksems,
corecting cksem usage on osx
* Update copyright dates
* Make match_len a function completely removing all indirect calls to get_sb,
significantly speeding up the single_get_sb case
* Make full_tag a pointer allowing us to avoid a function call for get_sb
* Call sliding_get_sb directly in sliding_next_tag
* Make next_tag a pointer to allow ordinary mapping to avoid an extra function
* fix order of lrzip.conf search


  1. Thanks, great work! It has replaced 7z / xz here long time ago.

    One slight inconvenience: The lrztar command cannot deal with multiple source files/directories:
    lrztar -z -o archive.tar.lrz dir1 dir2

    The error message is:
    lrzip only works directly on FILES.
    Use lrztar or pipe through tar for compressing directories.
    Fatal error - exiting

    The error message is wrong too. lrztar works on directories:
    lrztar -z -o archive.tar.lrz dir1

  2. lrztar is not an application, it's just a shortcut for tarring one directory to that directory's name tarred compress: directory.tar.lrz . Given that, there is no valid way to tar up multiple directories to a single valid name.