|
2 | 2 | XZ Utils Release Notes
|
3 | 3 | ======================
|
4 | 4 |
|
| 5 | +5.8.0 (2025-03-25) |
| 6 | + |
| 7 | + This bumps the minor version of liblzma because new features were |
| 8 | + added. The API and ABI are still backward compatible with liblzma |
| 9 | + 5.6.x, 5.4.x, 5.2.x, and 5.0.x. |
| 10 | + |
| 11 | + * liblzma on 32/64-bit x86: When possible, use SSE2 intrinsics |
| 12 | + instead of memcpy() in the LZMA/LZMA2 decoder. In typical cases, |
| 13 | + this may reduce decompression time by 0-5 %. However, when built |
| 14 | + against musl libc, over 15 % time reduction was observed with |
| 15 | + highly compressed files. |
| 16 | + |
| 17 | + * CMake: Make the feature test macros match the Autotools-based |
| 18 | + build on NetBSD, Darwin, and mingw-w64. |
| 19 | + |
| 20 | + * Update the Croatian, Italian, Portuguese, and Romanian |
| 21 | + translations. |
| 22 | + |
| 23 | + * Update the German, Italian, Korean, Romanian, Serbian, and |
| 24 | + Ukrainian man page translations. |
| 25 | + |
| 26 | + Summary of changes in the 5.7.x development releases: |
| 27 | + |
| 28 | + * Mark the following LZMA Utils script aliases as deprecated: |
| 29 | + lzcmp, lzdiff, lzless, lzmore, lzgrep, lzegrep, and lzfgrep. |
| 30 | + |
| 31 | + * liblzma: |
| 32 | + |
| 33 | + - Improve LZMA/LZMA2 encoder speed on 64-bit PowerPC (both |
| 34 | + endiannesses) and those 64-bit RISC-V processors that |
| 35 | + support fast unaligned access. |
| 36 | + |
| 37 | + - Add low-level APIs for RISC-V, ARM64, and x86 BCJ filters |
| 38 | + to lzma/bcj.h. These are primarily for erofs-utils. |
| 39 | + |
| 40 | + - x86/x86-64/E2K CLMUL CRC code was rewritten. |
| 41 | + |
| 42 | + - Use the CRC32 instructions on LoongArch. |
| 43 | + |
| 44 | + * xz: |
| 45 | + |
| 46 | + - Synchronize the output file and its directory using fsync() |
| 47 | + before deleting the input file. No syncing is done when xz |
| 48 | + isn't going to delete the input file. |
| 49 | + |
| 50 | + - Add --no-sync to disable the sync-before-delete behavior. |
| 51 | + |
| 52 | + - Make --single-stream imply --keep. |
| 53 | + |
| 54 | + * xz, xzdec, lzmainfo: When printing messages, replace |
| 55 | + non-printable characters with question marks. |
| 56 | + |
| 57 | + * xz and xzdec on Linux: Support Landlock ABI versions 5 and 6. |
| 58 | + |
| 59 | + * CMake: Revise the configuration variables and some of their |
| 60 | + options, and document them in the file INSTALL. CMake support |
| 61 | + is no longer experimental. (It was already not experimental |
| 62 | + when building for native Windows.) |
| 63 | + |
| 64 | + * Add build-aux/license-check.sh. |
| 65 | + |
| 66 | + |
| 67 | +5.7.2beta (2025-03-08) |
| 68 | + |
| 69 | + * On the man pages, mark the following LZMA Utils script aliases as |
| 70 | + deprecated: lzcmp, lzdiff, lzless, lzmore, lzgrep, lzegrep, and |
| 71 | + lzfgrep. The commands that start with xz* instead of lz* have |
| 72 | + identical behavior. |
| 73 | + |
| 74 | + The LZMA Utils aliases lzma, unlzma, and lzcat aren't deprecated |
| 75 | + because some of these aliases are still in common use. lzmadec |
| 76 | + and lzmainfo aren't deprecated either. |
| 77 | + |
| 78 | + * xz: In the ENVIRONMENT section of the man page, warn about |
| 79 | + problems that some uses of XZ_DEFAULTS and XZ_OPT may create. |
| 80 | + |
| 81 | + * Windows (native builds, not Cygwin): In xz, xzdec, and lzmadec, |
| 82 | + avoid an error message on broken pipe. |
| 83 | + |
| 84 | + * Autotools: Fix out-of-tree builds when using the bundled |
| 85 | + getopt_long. |
| 86 | + |
| 87 | + * Translations: |
| 88 | + |
| 89 | + - Updated: Chinese (traditional), Croatian, Finnish, Georgian, |
| 90 | + German, Korean, Polish, Romanian, Serbian, Spanish, Swedish, |
| 91 | + Turkish, and Ukrainian |
| 92 | + |
| 93 | + - Added: Dutch |
| 94 | + |
| 95 | + * Man page translations: |
| 96 | + |
| 97 | + - Updated: German, Korean, Romanian, and Ukrainian |
| 98 | + |
| 99 | + - Added: Italian and Serbian |
| 100 | + |
| 101 | + |
| 102 | +5.7.1alpha (2025-01-23) |
| 103 | + |
| 104 | + * All fixes from 5.6.4. |
| 105 | + |
| 106 | + * liblzma: |
| 107 | + |
| 108 | + - Improve LZMA/LZMA2 encoder speed on 64-bit PowerPC (both |
| 109 | + endiannesses) and those 64-bit RISC-V processors that |
| 110 | + support fast unaligned access. |
| 111 | + |
| 112 | + - x86/x86-64/E2K CLMUL CRC code was rewritten. It's faster and |
| 113 | + doesn't cause false positives from sanitizers. Attributes |
| 114 | + like __attribute__((__no_sanitize_address__)) are no longer |
| 115 | + present. |
| 116 | + |
| 117 | + - On 32-bit x86, CLMUL CRC and the old (but still good) |
| 118 | + assembly versions now co-exist with runtime detection. |
| 119 | + Both Autotools and CMake build systems handle this |
| 120 | + automatically now. |
| 121 | + |
| 122 | + - Use the CRC32 instructions on LoongArch to make CRC32 |
| 123 | + calculation faster. |
| 124 | + |
| 125 | + - Add low-level APIs for RISC-V, ARM64, and x86 BCJ filters |
| 126 | + to lzma/bcj.h. These are primarily for erofs-utils. |
| 127 | + |
| 128 | + - Minor tweaks to ARM64 CRC32 code and BCJ filters were made. |
| 129 | + |
| 130 | + * xz: |
| 131 | + |
| 132 | + - Synchronize the output file and its directory before deleting |
| 133 | + the input file using fsync(). This reduces the probability of |
| 134 | + data loss after a system crash. However, it can be a major |
| 135 | + performance hit if processing many small files. |
| 136 | + |
| 137 | + NOTE: No syncing is done when xz isn't going to delete |
| 138 | + the input file. |
| 139 | + |
| 140 | + - Add a new option --no-sync to disable the sync-before-delete |
| 141 | + behavior. It's useful when compressing many small files and |
| 142 | + one doesn't worry about data loss in case of a system crash. |
| 143 | + |
| 144 | + - Make --single-stream imply --keep. |
| 145 | + |
| 146 | + - Use automatic word wrapping for the text in --help and |
| 147 | + similar situations to hopefully make the strings easier for |
| 148 | + majority of translators (no need to count spaces anymore). |
| 149 | + |
| 150 | + * xz, xzdec, lzmainfo: When printing messages, replace |
| 151 | + non-printable characters with question marks. This way |
| 152 | + malicious filenames cannot be used to send escape sequences |
| 153 | + to a terminal. This change is also applied to filenames shown |
| 154 | + in "xz --robot --list". |
| 155 | + |
| 156 | + * xz and xzdec on Linux: Add support for Landlock ABI versions 5 |
| 157 | + and 6. |
| 158 | + |
| 159 | + * CMake updates: |
| 160 | + |
| 161 | + - Increase the minimum required CMake version to 3.20. |
| 162 | + |
| 163 | + - Revise the configuration variables and some of their options. |
| 164 | + Document them in the file INSTALL. |
| 165 | + |
| 166 | + - Attempt to produce liblzma.pc so that the paths are based on |
| 167 | + ${prefix}, which makes it simpler to override the paths |
| 168 | + if the liblzma files have been moved. |
| 169 | + |
| 170 | + - To enable translations, gettext-tools is now required. The |
| 171 | + CMake build no longer supports installing pre-compiled |
| 172 | + message catalog binary files (po/*.gmo). |
| 173 | + |
| 174 | + - Apple: Use Mach-O shared library versioning that is |
| 175 | + compatible with GNU Libtool. This should make it easier to |
| 176 | + switch between the build systems on Apple OSes that enforce |
| 177 | + the correct compatibility_version (macOS >= 12 doesn't?). |
| 178 | + This change is backward compatible: binaries linked against |
| 179 | + old CMake-built liblzma will run with liblzma that uses |
| 180 | + Libtool style versioning. |
| 181 | + |
| 182 | + - Windows (not Cygwin): Document CMAKE_DLL_NAME_WITH_SOVERSION |
| 183 | + (CMake >= 3.27) in the file INSTALL. This option should |
| 184 | + usually be left to its default value (OFF). It can be set |
| 185 | + to ON if the liblzma DLL filename must be compatible with |
| 186 | + the versioned filename produced by GNU Libtool. For example, |
| 187 | + binaries distributed in MSYS2 use a versioned DLL filename. |
| 188 | + |
| 189 | + - CMake support is no longer experimental. (It was already |
| 190 | + not experimental when building for native Windows.) |
| 191 | + |
| 192 | + * Windows: Building liblzma with Visual Studio 2013 is no longer |
| 193 | + supported. Visual Studio 2015 or later (with CMake) can be used |
| 194 | + to build liblzma and the command line tools. |
| 195 | + |
| 196 | + * Add preliminary Georgian translation. This already contains |
| 197 | + translations of most of the strings that are now automatically |
| 198 | + word wrapped. |
| 199 | + |
| 200 | + * Add build-aux/license-check.sh. Without arguments, it checks that |
| 201 | + no license information has been forgotten. With the -v argument, |
| 202 | + it shows the license info (or the lack of it) for each file. |
| 203 | + |
| 204 | + If the .git directory is available, only the files in the |
| 205 | + repository are checked. Without the .git directory, a clean tree |
| 206 | + from an extracted release tarball is expected. |
| 207 | + |
| 208 | + |
5 | 209 | 5.6.4 (2025-01-23)
|
6 | 210 |
|
7 | 211 | * liblzma: Fix LZMA/LZMA2 encoder on big endian ARM64.
|
|
0 commit comments