All releases of Lbzip2

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: Sanity checks were added to both decompressors. Input FILE operands
are now removed. The --keep and --force options were added. Owner, group,
permission bits, access time, modification time are copied to regular
output files. Logging was cleaned up and internally categorized into
INFO, WARNING, and FATAL levels. A separate exit status was introduced
for the case when a warning message was printed. The decompressor
robustness tests were re-executed. The author has finally replaced bzip2
with lbzip2 on his system.

Release Notes: Uninitialized fields were accessed on the stack in a structure assignment expression. Theoretically, this might have entailed read accesses to trap representations. Since those fields weren't initialized because they weren't used at all in the first place, this portability bug was fixed by introducing a dedicated structure without those fields.

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: Features like settable compression block size and working with file operands were implemented. lbzip2 can now be considered a multi-threaded, command-line compatible replacement for bzip2 in most situations. Lbzip2 never deletes or overwrites files, however. The workaround for an earlier GNU getconf bug was extended to EGLIBC in the large file support build script. The development status was degraded to beta.

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: The single-worker decompressor's multiplexer, while passing back all accrued released input slots to the splitter, wrote out at most one decompressed sub-block per one iteration of its outermost loop. In case of a slowly progressing muxer, this could lead to skyrocketing memory allocation on part of the worker. Now the SWD's muxer writes out all accrued decompressed sub-blocks per iteration. The documentation has been updated. The build system has received a minuscule portability improvement.

Release Notes: The shell script test.sh tests the installed instance of lbzip2, which can be different from the currently built one. pbzip2 is not a requirement for testing anymore, but test.sh will try to measure its performance if it's available. The same applies to the bzip2 module of 7za (from p7zip). Some GNU/Linux specific hints on enabling SUSv2 conformance (which is required for building and testing) were added to the README.