NEWS for lbzip2                                                 -*- outline -*-


* What's new in lbzip2 2.5

** Bug fixes

   Version 2.5 fixes a compressor bug introduced in lbzip2 2.4.  This
   bug manifests in assertion failure or deadlock when compressing
   data.

   This version also fixes a performance bug which prevented
   sequential compressor from fully utilizing all available threads,
   which resultes in very poor performance.

* What's new in lbzip2 2.4

** Bug fixes

   Version 2.4 fixes a bug in compression code which could lead to undefined
   behavior (usually segmentation fault) when compressing certain kinds
   highly-redundant data.

   A decompression bug in bz2 header parsing code was fixed.  This bug could
   cause some valid compressed files to be rejected with "CRC mismatch" error.

** New features

   Version 2.4 of lbzip2 introduces sequential mode of operation, which is not
   used by default but can be activated with a command-line switch.  This new
   mode usually improves compression ratio and decreases CPU usage ("user
   time") at cost of degraded scalability.

* What's new in lbzip2 2.3

** Bug fixes

   Version 2.3 fixes an assertion failure bug that could cause core dumps when
   compressing some kind of data.

   A bug which prevented symbolic links to be opened in some situations (when
   compressing or decompressing files to stdout or when discarding output) was
   fixed.

   Version 2.3 fixes a bug that caused SIGXFSZ to be handled incorrectly on
   32-bit systems.

** New features

   When decompressing with both --force and --stdout options given lbzip2 2.3
   will simply copy files that are not in bzip2 format (instead of reporting
   invalid file format), but will still reject files that appear to be in bzip2
   format but are damaged or malformed somehow. This mimics behavior of gzip.

* What's new in lbzip2 2.2

** Bug fixes

   In version 2.2 decompressor was made more bzip2-compatible. All valid bzip2
   files should now be properly decompressed by lbzip2.

   Memory allocation was reduced significantly. Previous versions could
   allocate large amounts of memory during decompression and testing of highly
   compressed files.

   Version 2.2 fixes a bug that caused some legitimate bz2 files to be rejected
   during decompression with a CRC error message.

** New features

   Compression performance is increased significantly by inclusion of new
   block-sorting code using divsufsort algorithm.

** Abandoned features

   The new block-sorting algorithm made `--exponential' command-line switch
   irrelevant. The switch is retained for compatibility with bzip2 and older
   versions of lbzip2, but otherwise has no effect.

   File write errors caused by broken pipes or exceeded file size limits are no
   longer reported to standard error.

* What's new in lbzip2 2.1

** Bug fixes

   Version 2.1 fixes a use-after-free security vulnerability in decompressor
   code responsible for displaying progress information.

* What's new in lbzip2 2.0

** Bug fixes

   Now lbzip2 creates one compressed stream per bzip2 file instead of multiple
   concatenated streams.

   lbzip2 now doesn't decompress streams embedded within trailing garbage after
   initial sequence of streams.

   Now lbzip2 detects and rejects more kinds of invalid bzip2 files (files with
   invalid stream CRCs, files with blocks larger than stated in stream headers
   and some others).

** New features

   Both compression and decompression speed is increased significantly.

   When invoked with `-v' or `--verbose' options lbzip2 now displays
   information about progress of compression or decompression, provided that
   stderr is connected to a terminal.

   When invoked with `-v' or `--verbose' options lbzip2 now displays
   compression ratio and space savings for each compressed or decompressed
   file.

   lbzip2 now supports `--exponential' option with the same semantics as
   bzip2's one.  More information in the manual.

   Now lbzip2 displays more detailed messages on decompression failure.

** Changed features

   Help and version information is now printed to standard output instead of
   standard error stream.

** Abandoned features

   Support for tracing memory allocation by setting the environmental
   variable `LBZIP2_TRACE_ALLOC' was dropped.

** Other

   lbzip2 is now licensed under the terms of GPL v3.0 or any later version.
   Former versions used to be released under GPL v2+.

   lbzip2 doesn't depend on libbz2 any longer.  Now it uses its own
   implementation of bzip2 compression and decompression algorithms.

   Now lbzip2's build process is managed by the GNU build system.
