]> git.ipfire.org Git - thirdparty/xz.git/log
thirdparty/xz.git
2 years agoTests: Add a few test files.
Jia Tan [Fri, 23 Feb 2024 15:09:59 +0000 (23:09 +0800)] 
Tests: Add a few test files.

2 years agoTests: Add MicroLZMA test.
Jia Tan [Fri, 23 Feb 2024 12:58:36 +0000 (20:58 +0800)] 
Tests: Add MicroLZMA test.

2 years agoBuild: Define HAVE_MICROLZMA when it is configured.
Jia Tan [Fri, 23 Feb 2024 12:57:59 +0000 (20:57 +0800)] 
Build: Define HAVE_MICROLZMA when it is configured.

2 years agoxz: Fix Capsicum sandbox compile error.
Jia Tan [Fri, 23 Feb 2024 12:27:15 +0000 (20:27 +0800)] 
xz: Fix Capsicum sandbox compile error.

user_abort_pipe[] was still being used instead of the parameters.

2 years agoBuild: Fix ARM64 CRC32 instruction feature test.
Jia Tan [Fri, 23 Feb 2024 08:12:32 +0000 (16:12 +0800)] 
Build: Fix ARM64 CRC32 instruction feature test.

Old versions of Clang reported the unsupported function attribute and
__crc32d() function as warnings instead of errors, so the feature test
passed when it shouldn't have, causing a compile error at build time.
-Werror was added to this feature test to fix this. The change is not
needed for CMake because check_c_source_compiles() also performs
linking and the error is caught then.

Thanks to Sebastian Andrzej Siewior for reporting this.

2 years agoCMake: Add LOCALEDIR to the windres workaround.
Lasse Collin [Thu, 22 Feb 2024 17:16:35 +0000 (19:16 +0200)] 
CMake: Add LOCALEDIR to the windres workaround.

LOCALEDIR may contain spaces like in "C:\Program Files".

2 years agoxz: Landlock: Fix error message if input file is a directory.
Lasse Collin [Thu, 22 Feb 2024 13:18:25 +0000 (15:18 +0200)] 
xz: Landlock: Fix error message if input file is a directory.

If xz is given a directory, it should look like this:

    $ xz /usr/bin
    xz: /usr/bin: Is a directory, skipping

The Landlock rules didn't allow opening directories for reading:

    $ xz /usr/bin
    xz: /usr/bin: Permission denied

The simplest fix was to allow opening directories for reading.
While it's a bit silly to allow it solely for the error message,
it shouldn't make the sandbox significantly weaker.

The single-file use case (like when called from GNU tar) is
still as strict as possible: all Landlock restrictions are
enabled before (de)compression starts.

2 years agoliblzma: Disable branchless C version in range decoder.
Lasse Collin [Thu, 22 Feb 2024 12:41:29 +0000 (14:41 +0200)] 
liblzma: Disable branchless C version in range decoder.

Thanks to Sebastian Andrzej Siewior and Sam James for
benchmarking on various systems.

2 years agoINSTALL: Clarify that --disable-assembler affects only 32-bit x86.
Lasse Collin [Wed, 21 Feb 2024 15:41:32 +0000 (17:41 +0200)] 
INSTALL: Clarify that --disable-assembler affects only 32-bit x86.

2 years agoWindows: build.bash: Include COPYING.0BSD in the package.
Lasse Collin [Mon, 19 Feb 2024 16:41:37 +0000 (18:41 +0200)] 
Windows: build.bash: Include COPYING.0BSD in the package.

2 years agoWindows: build.bash: include liblzma-crt-mixing.txt in the package.
Lasse Collin [Sun, 18 Feb 2024 15:59:46 +0000 (17:59 +0200)] 
Windows: build.bash: include liblzma-crt-mixing.txt in the package.

2 years agoWindows: Major update to Windows build instructions.
Lasse Collin [Sun, 18 Feb 2024 15:17:43 +0000 (17:17 +0200)] 
Windows: Major update to Windows build instructions.

2 years agoWindows: Update windows/README-Windows.txt.
Lasse Collin [Sun, 18 Feb 2024 13:15:04 +0000 (15:15 +0200)] 
Windows: Update windows/README-Windows.txt.

It's for binary packages built with windows/build.bash.

2 years agoWindows: Update windows/build.bash.
Lasse Collin [Sun, 18 Feb 2024 13:15:04 +0000 (15:15 +0200)] 
Windows: Update windows/build.bash.

Support for the old MinGW was dropped. Only MinGW-w64 with GCC
is supported now.

The script now supports also cross-compilation from GNU/Linux
(tests are not run). MSYS2 and also the old MSYS 1.0.11 work
for building on Windows. The i686 and x86_64 toolchains must
be in PATH to build both 32-bit and 64-bit versions.

Parallel builds are done if "nproc" from GNU coreutils is available.

MinGW-w64 runtime copyright information file was renamed from
COPYING-Windows.txt to COPYING.MinGW-w64-runtime.txt which
is the filename used by MinGW-w64 itself. Its existence
is now mandatory, it's checked at the beginning of the script.

The file TODO is no longer copied to the package.

2 years agoTranslations: Update the Romanian man page translations.
Jia Tan [Tue, 20 Feb 2024 15:32:22 +0000 (23:32 +0800)] 
Translations: Update the Romanian man page translations.

2 years agoTranslations: Update the Korean man page translations.
Jia Tan [Tue, 20 Feb 2024 15:30:25 +0000 (23:30 +0800)] 
Translations: Update the Korean man page translations.

2 years agoTranslations: Update the Spanish translation.
Jia Tan [Tue, 20 Feb 2024 13:03:53 +0000 (21:03 +0800)] 
Translations: Update the Spanish translation.

2 years agoTranslations: Update the Romanian translation.
Jia Tan [Tue, 20 Feb 2024 12:18:07 +0000 (20:18 +0800)] 
Translations: Update the Romanian translation.

2 years agoTranslations: Update the Croatian translation.
Jia Tan [Tue, 20 Feb 2024 12:15:50 +0000 (20:15 +0800)] 
Translations: Update the Croatian translation.

2 years agoTranslations: Update the German man page translations.
Jia Tan [Tue, 20 Feb 2024 12:05:44 +0000 (20:05 +0800)] 
Translations: Update the German man page translations.

2 years agoTranslations: Update the German translation.
Jia Tan [Tue, 20 Feb 2024 11:58:25 +0000 (19:58 +0800)] 
Translations: Update the German translation.

2 years agoTranslations: Update the Hungarian translation.
Jia Tan [Tue, 20 Feb 2024 11:56:52 +0000 (19:56 +0800)] 
Translations: Update the Hungarian translation.

2 years agoCMake: Fix building of lzmainfo when translations are enabled.
Lasse Collin [Mon, 19 Feb 2024 14:48:05 +0000 (16:48 +0200)] 
CMake: Fix building of lzmainfo when translations are enabled.

2 years agoCMake: Don't assume that -fvisibility=hidden is supported outside Windows.
Lasse Collin [Mon, 19 Feb 2024 11:38:42 +0000 (13:38 +0200)] 
CMake: Don't assume that -fvisibility=hidden is supported outside Windows.

The original code was good enough for supporting GNU/Linux
and a few others but it wasn't very portable.

CMake doesn't support Solaris Studio's -xldscope=hidden.
If it ever does, things should still work with this commit
as Solaris Studio supports not only its own __global but also
the GNU C __attribute__((visibility("default"))). Support for the
attribute was added in 2007 to Sun Studio 12 compiler version 5.9.

2 years agoCMake: Revise the component splitting.
Lasse Collin [Mon, 19 Feb 2024 10:20:59 +0000 (12:20 +0200)] 
CMake: Revise the component splitting.

2 years agoCMake: Update the main comment and document CMAKE_BUILD_TYPE=Release.
Lasse Collin [Sat, 17 Feb 2024 19:45:07 +0000 (21:45 +0200)] 
CMake: Update the main comment and document CMAKE_BUILD_TYPE=Release.

2 years agoCMake: Use -O2 instead of -O3 in CMAKE_BUILD_TYPE=Release.
Lasse Collin [Sat, 17 Feb 2024 19:27:48 +0000 (21:27 +0200)] 
CMake: Use -O2 instead of -O3 in CMAKE_BUILD_TYPE=Release.

-O3 doesn't seem useful for speed but it makes the code bigger.
CMake makes is difficult for users to simply override the
optimization level: CFLAGS / CMAKE_C_FLAGS aren't helpful because
they go before CMAKE_C_FLAGS_RELEASE. Of course, users can override
CMAKE_C_FLAGS_RELEASE directly but then they have to remember to
add also -DNDEBUG to disable assertions.

This commit changes -O3 to -O2 in CMAKE_C_FLAGS_RELEASE if and only if
CMAKE_C_FLAGS_RELEASE cache variable doesn't already exist. So if
a custom value is passed on the command line (or reconfiguring an
already-configured build), the cache variable won't be modified.

2 years agoCMake: Handle symbol versioning on MicroBlaze specially.
Lasse Collin [Sun, 18 Feb 2024 12:59:52 +0000 (14:59 +0200)] 
CMake: Handle symbol versioning on MicroBlaze specially.

This is to match configure.ac.

2 years agoCMake: Keep build working even if lib/*.[ch] are removed.
Lasse Collin [Sat, 17 Feb 2024 20:18:12 +0000 (22:18 +0200)] 
CMake: Keep build working even if lib/*.[ch] are removed.

2 years agoCMake: Install documentation.
Lasse Collin [Sat, 17 Feb 2024 16:10:40 +0000 (18:10 +0200)] 
CMake: Install documentation.

2 years agoCMake: Bump maximum policy version to 3.28.
Lasse Collin [Sat, 17 Feb 2024 13:35:35 +0000 (15:35 +0200)] 
CMake: Bump maximum policy version to 3.28.

CMP0154 doesn't affect us since we don't use FILE_SET.

2 years agoCMake: Build lzmainfo.
Lasse Collin [Sat, 17 Feb 2024 13:35:35 +0000 (15:35 +0200)] 
CMake: Build lzmainfo.

2 years agoCMake: Build lzmadec.
Lasse Collin [Sat, 17 Feb 2024 13:35:35 +0000 (15:35 +0200)] 
CMake: Build lzmadec.

2 years agoCMake: Add test_scripts.sh to the tests.
Lasse Collin [Sat, 17 Feb 2024 13:35:35 +0000 (15:35 +0200)] 
CMake: Add test_scripts.sh to the tests.

In contrast to Automake, skipping of this test when decoders
are disabled is handled at CMake side instead of test_scripts.sh
because CMake-build doesn't create config.h.

2 years agoCMake: Install scripts.
Lasse Collin [Sat, 17 Feb 2024 13:35:35 +0000 (15:35 +0200)] 
CMake: Install scripts.

Compared to the Autotools-based build, this has simpler handling
for the shell (@POSIX_SHELL@) and extra PATH entry for the scripts
(configure has --enable-path-for-scripts=PREFIX). The simpler
metho should be enough for non-ancient systems and Solaris.

2 years agoScripts: Use @PACKAGE_VERSION@ instead of @VERSION@.
Lasse Collin [Sat, 17 Feb 2024 13:35:35 +0000 (15:35 +0200)] 
Scripts: Use @PACKAGE_VERSION@ instead of @VERSION@.

PACKAGE_VERSION was already used in liblzma.pc.in.
This way only one version @foo@ is used.

2 years agoCMake: Simplify symlink creation and install translated man pages.
Lasse Collin [Sat, 17 Feb 2024 13:35:35 +0000 (15:35 +0200)] 
CMake: Simplify symlink creation and install translated man pages.

It helps that cmake_install.cmake doesn't parallelize installation
so symlinks can be created so that the target is always known to
exist (a requirement on Windows in some cases).

This bumps the minimum CMake version from 3.13 to 3.14 to use
file(CREATE_LINK ...). It could be made to work on 3.13 by
calling "cmake -E create_symlink" but it's uglier code and
slower in "make install". 3.14 should be a reasonable version
to require nowadays, especially since the Autotools build
is still the primary build system for most OSes.

2 years agoCMake: Add support for building and installing xz with translations.
Lasse Collin [Sat, 17 Feb 2024 13:35:35 +0000 (15:35 +0200)] 
CMake: Add support for building and installing xz with translations.

If gettext tools are available, the .po files listed in po/LINGUAS
are converted using msgfmt. This allows building with translations
directly from xz.git without Autotools.

If gettext tools aren't available, the Autotools-created .gmo files
in the "po" directory will be used. This allows CMake-based build
to use translations from Autotools-generated tarball.

If translation support is found (Intl_FOUND) but both the
gettext tools and the pre-generated .gmo files are missing,
then "make" will fail.

2 years agoliblzma: Remove commented-out code.
Lasse Collin [Mon, 19 Feb 2024 09:58:33 +0000 (11:58 +0200)] 
liblzma: Remove commented-out code.

2 years agoxz: Delete old commented-out code.
Lasse Collin [Sat, 17 Feb 2024 21:07:35 +0000 (23:07 +0200)] 
xz: Delete old commented-out code.

2 years agoxz: Use stricter pledge(2) and Landlock sandbox.
Lasse Collin [Sat, 17 Feb 2024 21:07:35 +0000 (23:07 +0200)] 
xz: Use stricter pledge(2) and Landlock sandbox.

This makes these sandboxing methods stricter when no files are
created or deleted. That is, it's a middle ground between the
initial sandbox and the strictest single-file-to-stdout sandbox:
this allows opening files for reading but output has to go to stdout.

2 years agoxz: Support Landlock ABI version 4.
Lasse Collin [Sat, 17 Feb 2024 21:07:35 +0000 (23:07 +0200)] 
xz: Support Landlock ABI version 4.

Linux 6.7 added support for ABI version 4 which restricts
TCP connections which xz won't need and thus those can be
forbidden now. Since the ABI version is handled at runtime,
supporting version 4 won't cause any compatibility issues.

Note that new enough kernel headers are required to get
version 4 support enabled at build time.

2 years agoxz: Move sandboxing code to sandbox.c and improve Landlock sandbox.
Lasse Collin [Sat, 17 Feb 2024 21:07:35 +0000 (23:07 +0200)] 
xz: Move sandboxing code to sandbox.c and improve Landlock sandbox.

Landlock is now always used just like pledge(2) is: first in more
permissive mode and later (under certain common conditions) in
a strict mode that doesn't allow opening more files.

I put pledge(2) first in sandbox.c because it's the simplest API
to use and still somewhat fine-grained for basic applications.
So it's the simplest thing to understand for anyone reading sandbox.c.

2 years agoxz: Tweak comments.
Lasse Collin [Sat, 17 Feb 2024 21:07:35 +0000 (23:07 +0200)] 
xz: Tweak comments.

2 years agoxz: Fix message_init() description.
Lasse Collin [Sat, 17 Feb 2024 21:07:35 +0000 (23:07 +0200)] 
xz: Fix message_init() description.

Also explicitly initialize progress_automatic to make it clear
that it can be read before message_init() sets it. Static variable
was initialized to false by default already so this is only for
clarity.

2 years agoBuild: Makefile.am: Sort EXTRA_DIST.
Lasse Collin [Sat, 17 Feb 2024 17:35:47 +0000 (19:35 +0200)] 
Build: Makefile.am: Sort EXTRA_DIST.

Dirs first, then files in case-sensitive ASCII order.

2 years agoBuild: Don't install TODO.
Lasse Collin [Sat, 17 Feb 2024 17:25:05 +0000 (19:25 +0200)] 
Build: Don't install TODO.

2 years agoTranslations: Update the Korean man page translations.
Jia Tan [Sat, 17 Feb 2024 17:09:11 +0000 (01:09 +0800)] 
Translations: Update the Korean man page translations.

2 years agoTranslations: Update the Korean translation.
Jia Tan [Sat, 17 Feb 2024 17:08:32 +0000 (01:08 +0800)] 
Translations: Update the Korean translation.

2 years agoBuild: Install translated lzmainfo man pages.
Lasse Collin [Sat, 17 Feb 2024 14:23:14 +0000 (16:23 +0200)] 
Build: Install translated lzmainfo man pages.

All other translated man pages were being installed but
lzmainfo had been forgotten.

2 years agoliblzma: Avoid implementation-defined behavior in the RISC-V filter.
Lasse Collin [Sat, 17 Feb 2024 14:01:32 +0000 (16:01 +0200)] 
liblzma: Avoid implementation-defined behavior in the RISC-V filter.

GCC docs promise that it works and a few other compilers do
too. Clang/LLVM is documented source code only but unsurprisingly
it behaves the same as others on x86-64 at least. But the
certainly-portable way is good enough here so use that.

2 years agoliblzma: Wrap a line exceeding 80 chars.
Lasse Collin [Sat, 17 Feb 2024 13:48:28 +0000 (15:48 +0200)] 
liblzma: Wrap a line exceeding 80 chars.

2 years agoliblzma/rangecoder: Exclude x32 from the x86-64 optimisation.
Sebastian Andrzej Siewior [Fri, 16 Feb 2024 20:50:15 +0000 (21:50 +0100)] 
liblzma/rangecoder: Exclude x32 from the x86-64 optimisation.

The x32 port has a x86-64 ABI in term of all registers but uses only
32bit pointer like x86-32. The assembly optimisation fails to compile on
x32. Given the state of x32 I suggest to exclude it from the
optimisation rather than trying to fix it.

Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
2 years agoTranslations: Update the Spanish translation.
Jia Tan [Sat, 17 Feb 2024 13:05:07 +0000 (21:05 +0800)] 
Translations: Update the Spanish translation.

2 years agoTranslations: Update the Swedish translation.
Jia Tan [Sat, 17 Feb 2024 12:43:29 +0000 (20:43 +0800)] 
Translations: Update the Swedish translation.

2 years agoTranslations: Update the Polish translation.
Jia Tan [Sat, 17 Feb 2024 12:41:38 +0000 (20:41 +0800)] 
Translations: Update the Polish translation.

2 years agoTranslations: Update the Ukrainian translation.
Jia Tan [Sat, 17 Feb 2024 12:41:02 +0000 (20:41 +0800)] 
Translations: Update the Ukrainian translation.

2 years agoTranslations: Use the same sentence in xz.pot-header that the TP uses.
Lasse Collin [Fri, 16 Feb 2024 15:53:34 +0000 (17:53 +0200)] 
Translations: Use the same sentence in xz.pot-header that the TP uses.

2 years agoFix typos discovered by codespell.
Jia Tan [Fri, 16 Feb 2024 14:53:46 +0000 (22:53 +0800)] 
Fix typos discovered by codespell.

2 years agoTranslations: Update the Ukrainian man page translations.
Jia Tan [Fri, 16 Feb 2024 14:52:41 +0000 (22:52 +0800)] 
Translations: Update the Ukrainian man page translations.

2 years agoTranslations: Update the Ukrainian translation.
Jia Tan [Fri, 16 Feb 2024 14:51:04 +0000 (22:51 +0800)] 
Translations: Update the Ukrainian translation.

2 years agoTranslations: Omit the generic copyright line from man page headers.
Lasse Collin [Thu, 15 Feb 2024 20:32:52 +0000 (22:32 +0200)] 
Translations: Omit the generic copyright line from man page headers.

2 years agoUpdate m4/.gitignore.
Jia Tan [Thu, 15 Feb 2024 14:26:43 +0000 (22:26 +0800)] 
Update m4/.gitignore.

2 years agoTests: tuktest.h: Treat Clang separately from GCC.
Lasse Collin [Wed, 14 Feb 2024 19:11:49 +0000 (21:11 +0200)] 
Tests: tuktest.h: Treat Clang separately from GCC.

Don't assume that Clang defines __GNUC__ as the extensions
are available in clang-cl as well (and possibly in some other
Clang variants?).

2 years agoTests: tuktest.h: Add a missing word to a comment.
Lasse Collin [Wed, 14 Feb 2024 19:11:03 +0000 (21:11 +0200)] 
Tests: tuktest.h: Add a missing word to a comment.

2 years agoTests: tuktest.h: Fix the comment about STest.
Lasse Collin [Wed, 14 Feb 2024 19:10:10 +0000 (21:10 +0200)] 
Tests: tuktest.h: Fix the comment about STest.

2 years agoBump version for 5.5.2beta. v5.5.2beta
Jia Tan [Wed, 14 Feb 2024 17:53:40 +0000 (01:53 +0800)] 
Bump version for 5.5.2beta.

2 years agoliblzma: Fix validate_map.sh.
Lasse Collin [Wed, 14 Feb 2024 17:46:11 +0000 (19:46 +0200)] 
liblzma: Fix validate_map.sh.

Adding the SPDX license identifier changed the line numbers.

2 years agoBuild: Start the generated ChangeLog from around 5.4.0 instead of 5.2.0.
Lasse Collin [Wed, 14 Feb 2024 17:38:34 +0000 (19:38 +0200)] 
Build: Start the generated ChangeLog from around 5.4.0 instead of 5.2.0.

2 years agoFixed NEWS for 5.5.2beta.
Lasse Collin [Wed, 14 Feb 2024 17:27:46 +0000 (19:27 +0200)] 
Fixed NEWS for 5.5.2beta.

2 years agoliblzma: Silence warnings in --enable-small build.
Lasse Collin [Wed, 14 Feb 2024 17:21:45 +0000 (19:21 +0200)] 
liblzma: Silence warnings in --enable-small build.

2 years agoBuild: Install COPYING.0BSD as part of docs.
Lasse Collin [Wed, 14 Feb 2024 17:15:58 +0000 (19:15 +0200)] 
Build: Install COPYING.0BSD as part of docs.

2 years agoDocs: List COPYING.0BSD in README.
Lasse Collin [Wed, 14 Feb 2024 17:14:05 +0000 (19:14 +0200)] 
Docs: List COPYING.0BSD in README.

2 years agoDocs: Include doc/examples/11_file_info.c in tarballs.
Lasse Collin [Wed, 14 Feb 2024 17:11:48 +0000 (19:11 +0200)] 
Docs: Include doc/examples/11_file_info.c in tarballs.

It was added in 2017 in c2e29f06a7d1e3ba242ac2fafc69f5d6e92f62cd
but it never got into any release tarballs because it was
forgotten to be added to Makefile.am.

2 years agoliblzma: Silence a warning.
Lasse Collin [Wed, 14 Feb 2024 17:05:58 +0000 (19:05 +0200)] 
liblzma: Silence a warning.

2 years agoAdd NEWS for 5.5.2beta.
Lasse Collin [Wed, 14 Feb 2024 16:32:27 +0000 (18:32 +0200)] 
Add NEWS for 5.5.2beta.

2 years agoxz: Mention lzmainfo if trying to use 'lzma --list'.
Lasse Collin [Tue, 13 Feb 2024 12:32:47 +0000 (14:32 +0200)] 
xz: Mention lzmainfo if trying to use 'lzma --list'.

This kind of fixes the problem reported here:
https://bugs.launchpad.net/ubuntu/+source/xz-utils/+bug/1291020

2 years agoliblzma: Add comments.
Lasse Collin [Wed, 14 Feb 2024 12:58:36 +0000 (14:58 +0200)] 
liblzma: Add comments.

2 years agoScripts: Add lz4 support to xzgrep and xzdiff.
Lasse Collin [Tue, 13 Feb 2024 15:00:17 +0000 (17:00 +0200)] 
Scripts: Add lz4 support to xzgrep and xzdiff.

2 years agoliblzma: Choose the range decoder variants using a bitmask macro.
Lasse Collin [Tue, 13 Feb 2024 12:05:13 +0000 (14:05 +0200)] 
liblzma: Choose the range decoder variants using a bitmask macro.

2 years agoxz: Fix outdated threading related info on the man page.
Lasse Collin [Tue, 13 Feb 2024 09:38:10 +0000 (11:38 +0200)] 
xz: Fix outdated threading related info on the man page.

2 years agoliblzma: Range decoder: Add x86-64 inline assembly.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
liblzma: Range decoder: Add x86-64 inline assembly.

It's compatible with GCC and Clang.

2 years agoliblzma: Range decoder: Add branchless C code.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
liblzma: Range decoder: Add branchless C code.

It's used only for basic bittrees and fixed-size reverse bittree
because those showed a clear benefit on x86-64 with GCC and Clang.
The other methods were more mixed and thus are commented out but
they should be tested on other archs.

2 years agoliblzma: Clarify a comment.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
liblzma: Clarify a comment.

2 years agoliblzma: LZMA decoder: Optimize loop comparison.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
liblzma: LZMA decoder: Optimize loop comparison.

But now it needs one more local variable.

2 years agoliblzma: Optimize literal_subcoder() macro slightly.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
liblzma: Optimize literal_subcoder() macro slightly.

2 years agoliblzma: LZ decoder: Add unlikely().
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
liblzma: LZ decoder: Add unlikely().

2 years agoliblzma: LZ decoder: Remove a useless unlikely().
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
liblzma: LZ decoder: Remove a useless unlikely().

2 years agoliblzma: Optimize LZ decoder slightly.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
liblzma: Optimize LZ decoder slightly.

Now extra buffer space is reserved so that repeating bytes for
any single match will never need to copy from two places (both
the beginning and the end of the buffer). This simplifies
dict_repeat() and helps a little with speed.

This seems to reduce .lzma decompression time about 2 %, so
with .xz and CRC it could be slightly less. The small things
add up still.

2 years agoliblzma: LZMA decoder: Get rid of next_state[].
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
liblzma: LZMA decoder: Get rid of next_state[].

It's not completely obvious if this is better in the decoder.
It should be good if compiler can avoid creating a branch
(like using CMOV on x86).

This also makes lzma_encoder.c use the new macros.

2 years agoliblzma: LZMA decoder improvements.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
liblzma: LZMA decoder improvements.

This adds macros for bittree decoding which prepares the code
for alternative C versions and inline assembly.

2 years agoliblzma: Creates Non-resumable and Resumable modes for lzma_decoder.
Jia Tan [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
liblzma: Creates Non-resumable and Resumable modes for lzma_decoder.

The new decoder resumes the first decoder loop in the Resumable mode.
Then, the code executes in Non-resumable mode until it detects that it
cannot guarantee to have enough input/output to decode another symbol.

The Resumable mode is how the decoder has always worked. Before decoding
every input bit, it checks if there is enough space and will save its
location to be resumed later. When the decoder has more input/output,
it jumps back to the correct sequence in the Resumable mode code.

When the input/output buffers are large, the Resumable mode is much
slower than the Non-resumable because it has more branches and is harder
for the compiler to optimize since it is in a large switch block.

Early benchmarking shows significant time improvement (8-10% on gcc and
clang x86) by using the Non-resumable code as much as possible.

2 years agoliblzma: Creates separate "safe" range decoder mode.
Jia Tan [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
liblzma: Creates separate "safe" range decoder mode.

The new "safe" range decoder mode is the same as old range decoder, but
now the default behavior of the range decoder will not check if there is
enough input or output to complete the operation. When the buffers are
close to fully consumed, the "safe" operations must be used instead. This
will improve speed because it will reduce the number of branches needed
for most of the range decoder operations.

2 years agodoxygen/footer.html: Add missing closing tags and don't open a new tab.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
doxygen/footer.html: Add missing closing tags and don't open a new tab.

The footer template from Doxygen has the closing </body> </html>
as Doxygen doesn't add them otherwise.

target="_blank" was omitted as it's not useful here but
it can be slightly annoying as one cannot just go back
in the browser history.

Since the footer links to the license file in the same
directory and not to CC website, the rel attributes
can be omitted.

2 years agoTweak the expressions in AUTHORS.
Lasse Collin [Tue, 13 Feb 2024 11:19:10 +0000 (13:19 +0200)] 
Tweak the expressions in AUTHORS.

2 years agoTranslations: Add the man page translators into man page header comment.
Lasse Collin [Tue, 13 Feb 2024 11:07:33 +0000 (13:07 +0200)] 
Translations: Add the man page translators into man page header comment.

It looked odd to only have the original English authors listed
in the header comments of the translated files.

2 years agoTranslations: Translate also messages of lzmainfo.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
Translations: Translate also messages of lzmainfo.

lzmainfo has had translation support since 2009 at least but
it was never added to po/POTFILES.in so the messages weren't
translated. It's a very rarely needed tool so it's not too bad.

This also adds src/xz/mytime.c to po/POTFILES.in although there
are no translatable strings. It's simpler this way so that it
won't be forgotten if strings were ever added to that file.

2 years agoTranslations: Add custom .pot header with SPDX license identifier.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
Translations: Add custom .pot header with SPDX license identifier.

The same is used for both po/xz.pot and po4a/xz-man.pot.

2 years agoTranslations: po4a/update-po: Add copyright notice to xz-man.pot.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
Translations: po4a/update-po: Add copyright notice to xz-man.pot.

All man pages are under 0BSD now so this is simple now.

2 years agoUpdate COPYING about the man pages of the scripts.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
Update COPYING about the man pages of the scripts.