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.