XZ Utils Changelog

What's new in XZ Utils 5.2.4

Apr 30, 2018
  • liblzma:
  • Allow 0 as memory usage limit instead of returning LZMA_PROG_ERROR. Now 0 is treated as if 1 byte was specified, which effectively is the same as 0.
  • Use "noexcept" keyword instead of "throw()" in the public headers when a C++11 (or newer standard) compiler is used.
  • Added a portability fix for recent Intel C Compilers.
  • Microsoft Visual Studio build files have been moved under windows/vs2013 and windows/vs2017.
  • xz:
  • Fix "xz --list --robot missing_or_bad_file.xz" which would try to print an unitialized string and thus produce garbage output. Since the exit status is non-zero, most uses of such a command won't try to interpret the garbage output.
  • "xz --list foo.xz" could print "Internal error (bug)" in a corner case where a specific memory usage limit had been set.

New in XZ Utils 5.2.3 (Dec 31, 2016)

  • xz:
  • Always close a file before trying to delete it to avoid problems on some operating system and file system combinations.
  • Fixed copying of file timestamps on Windows.
  • Added experimental (disabled by default) sandbox support using Capsicum (FreeBSD >= 10). See --enable-sandbox in INSTALL.
  • C99/C11 conformance fixes to liblzma. The issues affected at leastsome builds using link-time optimizations.
  • Fixed bugs in the rarely-used function lzma_index_dup().
  • Use of external SHA-256 code is now disabled by default. It can still be enabled by passing --enable-external-sha256 to configure. The reasons to disable it by default (see INSTALL for more details)...
  • Some OS-specific SHA-256 implementations conflict with OpenSSL and cause problems in programs that link against both liblzma and libcrypto. At least FreeBSD 10 and MINIX 3.3.0 are affected.
  • The internal SHA-256 is faster than the SHA-256 code in some operating systems.
  • Changed CPU core count detection to use sched_getaffinity() on GNU/Linux and GNU/kFreeBSD.
  • Fixes to the build-system and xz to make xz buildable even when encoders, decoders, or threading have been disabled from libilzma using configure options. These fixes added two new #defines to config.h: HAVE_ENCODERS and HAVE_DECODERS.

New in XZ Utils 5.2.2 (Sep 30, 2015)

  • Fixed bugs in QNX-specific code.
  • Omitted the use of pipe2() even if it is available to avoid portability issues with some old Linux and glibc combinations.
  • Updated German translation.
  • Added project files to build static and shared liblzma (not the whole XZ Utils) with Visual Studio 2013 update 2 or later.
  • Documented that threaded decompression hasn't been implemented yet. A 5.2.0 NEWS entry describing multi-threading support had incorrectly said "decompression" when it should have said "compression".

New in XZ Utils 5.2.1 (Feb 26, 2015)

  • Fixed a compression-ratio regression in fast mode of LZMA1 and LZMA2. The bug is present in 5.1.4beta and 5.2.0 releases.
  • Fixed a portability problem in xz that affected at least OpenBSD.
  • Fixed xzdiff to be compatible with FreeBSD's mktemp which differs from most other mktemp implementations.
  • Changed CPU core count detection to use cpuset_getaffinity() on FreeBSD.

New in XZ Utils 5.2.0 (Dec 22, 2014)

  • All fixes from 5.0.8
  • liblzma: Fixed lzma_stream_encoder_mt_memusage() when a preset was used.
  • xzdiff: If mktemp isn't installed, mkdir will be used as a fallback to create a temporary directory. Installing mktemp is still recommended.
  • Updated French, German, Italian, Polish, and Vietnamese translations.

New in XZ Utils 5.0.7 (Sep 20, 2014)

  • All fixes from 5.0.6
  • liblzma: Fixed the use of presets in threaded encoder initialization.
  • xz --block-list and --block-size can now be used together in single-threaded mode. Previously the combination only worked in multi-threaded mode.
  • Added support for LZMA_IGNORE_CHECK to liblzma and made it available in xz as --ignore-check.
  • liblzma speed optimizations:
  • Initialization of a new LZMA1 or LZMA2 encoder has been optimized. (The speed of reinitializing an already-allocated encoder isn't affected.) This helps when compressing many small buffers with lzma_stream_buffer_encode() and other similar situations where an already-allocated encoder state isn't reused. This speed-up is visible in xz too if one compresses many small files one at a time instead running xz once and giving all files as command-line arguments.
  • Buffer comparisons are now much faster when unaligned access is allowed (configured with --enable-unaligned-access). This speeds up encoding significantly. There is arch-specific code for 32-bit and 64-bit x86 (32-bit needs SSE2 for the best results and there's no run-time CPU detection for now). For other archs there is only generic code which probably isn't as optimal as arch-specific solutions could be.
  • A few speed optimizations were made to the SHA-256 code. (Note that the builtin SHA-256 code isn't used on all operating systems.)
  • liblzma can now be built with MSVC 2013 update 2 or later using windows/config.h.
  • Vietnamese translation was added.

New in XZ Utils 5.0.6 (Sep 15, 2014)

  • liblzma: Fixed the use of presets in threaded encoder initialization.
  • xz --block-list and --block-size can now be used together in single-threaded mode. Previously the combination only worked in multi-threaded mode.
  • Added support for LZMA_IGNORE_CHECK to liblzma and made it available in xz as --ignore-check.
  • liblzma speed optimizations:
  • Initialization of a new LZMA1 or LZMA2 encoder has been optimized. (The speed of reinitializing an already-allocated encoder isn't affected.) This helps when compressing many small buffers with lzma_stream_buffer_encode() and other similar situations where an already-allocated encoder state isn't reused. This speed-up is visible in xz too if one compresses many small files one at a time instead running xz once and giving all files as command-line arguments.
  • Buffer comparisons are now much faster when unaligned access is allowed (configured with --enable-unaligned-access). This speeds up encoding significantly. There is arch-specific code for 32-bit and 64-bit x86 (32-bit needs SSE2 for the best results and there's no run-time CPU detection for now). For other archs there is only generic code which probably isn't as optimal as arch-specific solutions could be.
  • A few speed optimizations were made to the SHA-256 code. (Note that the builtin SHA-256 code isn't used on all operating systems.)
  • liblzma can now be built with MSVC 2013 update 2 or later using windows/config.h.
  • Vietnamese translation was added.