XZ Utils 5.6.3 and 5.7.1alpha are available at
<https://tukaani.org/xz/#_source_packages>.

The SHA-256 hashes of the release packages and official patches are
available in the Git repository in the "master" branch in the file
doc/SHA256SUMS. This way it's possible to verify that upstream hasn't
created and signed multiple variants of identically-named releases.
A direct link to an up-to-date plain text version:

    
https://raw.githubusercontent.com/tukaani-project/xz/refs/heads/master/doc/SHA256SUMS

Extracts from the NEWS file:

5.6.4 (2025-01-23)

    * liblzma: Fix LZMA/LZMA2 encoder on big endian ARM64.

    * xz:

        - Fix --filters= and --filters1= ... --filters9= options
          parsing. They require an argument, thus "xz --filters lzma2"
          should work in addition to "xz --filters=lzma2".

        - On the man page, note in the --compress and --decompress
          options that the default behavior is to delete the input
          file unless writing to standard output. It was already
          documented in the DESCRIPTION section but new users in
          a hurry might miss it.

    * Windows (native builds, not Cygwin): Fix regressions introduced
      in XZ Utils 5.6.3 which caused non-ASCII characters to display
      incorrectly. Only builds with translation support were affected
      (--enable-nls or ENABLE_NLS=ON). The following changes affect
      builds that have translations enabled:

        - Require UCRT because MSVCRT doesn't support UTF-8
          locales and thus translations won't be readable on
          Windows 10 version 1903 and later. (MSVCRT builds
          are still possible with --disable-nls or ENABLE_NLS=OFF.)

        - Require gettext-runtime >= 0.23.1 because older versions
          don't autodetect the use of the UTF-8 code page. This
          resulted in garbled non-ASCII characters even with UCRT.

        - Partially fix alignment issues in xz --verbose --list
          with translated messages. Chinese (simplified),
          Chinese (traditional), and Korean column headings
          are misaligned still because Windows and MinGW-w64
          don't provide wcwidth() and XZ Utils doesn't include
          a replacement function either.

    * CMake: Explicitly disable unity builds. This prevents build
      failures when another project uses XZ Utils via CMake's
      FetchContent module, and that project enables unity builds.

    * Update Chinese (traditional) and Serbian translations.


5.7.1alpha (2025-01-23)

    * All fixes from 5.6.4.

    * liblzma:

        - Improve LZMA/LZMA2 encoder speed on 64-bit PowerPC (both
          endiannesses) and those 64-bit RISC-V processors that
          support fast unaligned access.

        - x86/x86-64/E2K CLMUL CRC code was rewritten. It's faster and
          doesn't cause false positives from sanitizers. Attributes
          like __attribute__((__no_sanitize_address__)) are no longer
          present.

        - On 32-bit x86, CLMUL CRC and the old (but still good)
          assembly versions now co-exist with runtime detection.
          Both Autotools and CMake build systems handle this
          automatically now.

        - Use the CRC32 instructions on LoongArch to make CRC32
          calculation faster.

        - Add low-level APIs for RISC-V, ARM64, and x86 BCJ filters
          to lzma/bcj.h. These are primarily for erofs-utils.

        - Minor tweaks to ARM64 CRC32 code and BCJ filters were made.

    * xz:

        - Synchronize the output file and its directory before deleting
          the input file using fsync(). This reduces the probability of
          data loss after a system crash. However, it can be a major
          performance hit if processing many small files.

          NOTE: No syncing is done when xz isn't going to delete
          the input file.

        - Add a new option --no-sync to disable the sync-before-delete
          behavior. It's useful when compressing many small files and
          one doesn't worry about data loss in case of a system crash.

        - Make --single-stream imply --keep.

        - Use automatic word wrapping for the text in --help and
          similar situations to hopefully make the strings easier for
          majority of translators (no need to count spaces anymore).

    * xz, xzdec, lzmainfo: When printing messages, replace
      non-printable characters with question marks. This way
      malicious filenames cannot be used to send escape sequences
      to a terminal. This change is also applied to filenames shown
      in "xz --robot --list".

    * xz and xzdec on Linux: Add support for Landlock ABI versions 5
      and 6.

    * CMake updates:

        - Increase the minimum required CMake version to 3.20.

        - Revise the configuration variables and some of their options.
          Document them in the file INSTALL.

        - Attempt to produce liblzma.pc so that the paths are based on
          ${prefix}, which makes it simpler to override the paths
          if the liblzma files have been moved.

        - To enable translations, gettext-tools is now required. The
          CMake build no longer supports installing pre-compiled
          message catalog binary files (po/*.gmo).

        - Apple: Use Mach-O shared library versioning that is
          compatible with GNU Libtool. This should make it easier to
          switch between the build systems on Apple OSes that enforce
          the correct compatibility_version (macOS >= 12 doesn't?).
          This change is backward compatible: binaries linked against
          old CMake-built liblzma will run with liblzma that uses
          Libtool style versioning.

        - Windows (not Cygwin): Document CMAKE_DLL_NAME_WITH_SOVERSION
          (CMake >= 3.27) in the file INSTALL. This option should
          usually be left to its default value (OFF). It can be set
          to ON if the liblzma DLL filename must be compatible with
          the versioned filename produced by GNU Libtool. For example,
          binaries distributed in MSYS2 use a versioned DLL filename.

        - CMake support is no longer experimental. (It was already
          not experimental when building for native Windows.)

    * Windows: Building liblzma with Visual Studio 2013 is no longer
      supported. Visual Studio 2015 or later (with CMake) can be used
      to build liblzma and the command line tools.

    * Add preliminary Georgian translation. This already contains
      translations of most of the strings that are now automatically
      word wrapped.

    * Add build-aux/license-check.sh. Without arguments, it checks that
      no license information has been forgotten. With the -v argument,
      it shows the license info (or the lack of it) for each file.

      If the .git directory is available, only the files in the
      repository are checked. Without the .git directory, a clean tree
      from an extracted release tarball is expected.

-- 
Lasse Collin

Reply via email to