Release Notes: Building lbzip2 on Debian Unstable showed that the "lfs.sh" build script, due to a typo, did not invoke the "getconf" utility in a SUSv2-conformant way. This bug has been corrected.
Release Notes: Code examination revealed that lbzip2-0.18 introduced a race between the following two code paths: the muxer thread displays an error message when it encounters a write error; and the main thread, in preparation to terminate the process, frees the output file name after an INT or TERM signal is delivered to it. This bug had a negligible chance to occur, but it was fixed nonetheless.
Release Notes: This release works around a GNU/kFreeBSD standards-compliance problem. GNU/kFreeBSD does not define some STREAMS-related errno macros mandated by SUSv2. Consequently, lbzip2-0.18 cannot be built on GNU/kFreeBSD. This version checks if those (and some other) macros are defined before relying on them.
Release Notes: Non-regular input files passed on the command line are skipped (symbolic links are followed, because lbzip2 doesn't remove input files). Instead of exiting, lbzip2 skips input files passed on the command line that it cannot open, or for which it cannot create the corresponding output files. Standard output is also closed with --stdout and file operands, not just in filter mode. Signal handling has been cleaned up; lbzip2 can now be interrupted during skipping many files in a row. Writing an error message to a broken pipe doesn't result in an incomplete output file anymore.
Release Notes: A bug has been fixed where the single-worker decompressor could theoretically skip decompression of the last part of the compressed input and incorrectly signify premature EOF instead. In this release, logically independent buffer sizes are detached from each other. Several buffer sizes should be more I/O-friendly now. The splitter block size of the multiple-workers decompressor was recalculated; an effort was made to deduce it formally in comments. The "malloc_trace.pl" script tracks peak memory usage. The documentation was refined.
Release Notes: Testing on a 128-core HP SuperDome showed a known bottleneck in the multiple-workers decompressor to be significant on many-core machines: whenever there were fewer input blocks than cores, the work was distributed unevenly. Hence, the splitter-to-workers queue of "scan and decompress" tasks was replaced with two queues: a low priority, splitter-to-workers one of "scan" tasks, and a high priority, workers-to-workers one of "decompress" tasks. Alas, this also increased the number of context switches. The new worker broadcast conditions were formally proven in the comments.