]> git.ipfire.org Git - thirdparty/xz.git/log
thirdparty/xz.git
17 months 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.

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

17 months 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.

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

17 months 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.

17 months 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.

17 months 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.

17 months 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>
17 months agoTranslations: Update the Spanish translation.
Jia Tan [Sat, 17 Feb 2024 13:05:07 +0000 (21:05 +0800)] 
Translations: Update the Spanish translation.

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

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

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

17 months 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.

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

17 months 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.

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

17 months 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.

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

17 months 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?).

17 months 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.

17 months 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.

17 months 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.

17 months 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.

17 months 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.

17 months 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.

17 months 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.

17 months 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.

17 months 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.

17 months 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.

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

17 months 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.

17 months 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

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

17 months 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.

17 months 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.

17 months 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.

17 months 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.

17 months 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.

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

17 months 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.

17 months 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.

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

17 months 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().

17 months 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.

17 months 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.

17 months 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.

17 months 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.

17 months 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.

17 months 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.

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

17 months 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.

17 months 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.

17 months 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.

17 months 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.

17 months 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.

17 months agoxzdiff, xzgrep, and xzmore: Rewrite the man pages.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
xzdiff, xzgrep, and xzmore: Rewrite the man pages.

The main reason is a kind of silly one:

xz-man.pot contains strings from all man pages in XZ Utils.
The man pages of xzdiff, xzgrep, and xzmore were under GPLv2
and the rest under 0BSD. Thus xz-man.pot contained strings
under two licences. po4a creates the translated man pages
from the combined 0BSD+GPLv2 xz-man.pot.

I haven't liked this mixing in xz-man.pot but the
Translation Project requires that all man pages must be
in the same .pot file. So a separate xz-man-gpl.pot
wasn't an option.

Since these man pages are short, rewriting them was quick enough.
Now xz-man.pot is entirely under 0BSD and marking the per-file
licenses is simpler.

As a bonus, some wording hopefully is now slightly better
although it's perhaps a matter of taste.

NOTE: In xzgrep.1, the EXIT STATUS section was written by me
in the commit d796b6d7fdb8b7238b277056cf9146cce25db604 so that's
why that section could be taken as is from the old xzgrep.1.

17 months agoxzless: Update man page slightly.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
xzless: Update man page slightly.

The xz tool can decompress three file formats and xzless
has always supported uncompressed files too.

17 months agoTranslations: Change po/Makevars to add a copyright notice to po/xz.pot.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
Translations: Change po/Makevars to add a copyright notice to po/xz.pot.

17 months agoTranslations: Update po/Makevars to use the template from gettext 0.22.4.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
Translations: Update po/Makevars to use the template from gettext 0.22.4.

Also add SPDX license identifier now that there is a known license.

17 months agoliblzma: Include the SPDX license identifier 0BSD to generated files.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
liblzma: Include the SPDX license identifier 0BSD to generated files.

Perhaps the generated files aren't even copyrightable but
using the same license for them as for the rest of the liblzma
keeps things more consistent for tools that look for license info.

17 months agoliblzma: Fix compilation of price_tablegen.c.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
liblzma: Fix compilation of price_tablegen.c.

It is built and run only manually so this didn't matter
unless one wanted to regenerate the price_table.c.

17 months agoAdd SPDX license identifiers to GPL, LGPL, and FSFULLR files.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
Add SPDX license identifiers to GPL, LGPL, and FSFULLR files.

17 months agoAdd SPDX license identifier into 0BSD source code files.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
Add SPDX license identifier into 0BSD source code files.

17 months agoliblzma: Sync the AUTHORS fix about SHA-256 to lzma.h.
Lasse Collin [Mon, 12 Feb 2024 21:25:54 +0000 (23:25 +0200)] 
liblzma: Sync the AUTHORS fix about SHA-256 to lzma.h.

17 months agoChange most public domain parts to 0BSD.
Lasse Collin [Mon, 12 Feb 2024 15:09:10 +0000 (17:09 +0200)] 
Change most public domain parts to 0BSD.

Translations and doc/xz-file-format.txt and doc/lzma-file-format.txt
were not touched.

COPYING.0BSD was added.

17 months agoFix SHA-256 authors.
Lasse Collin [Fri, 9 Feb 2024 15:20:31 +0000 (17:20 +0200)] 
Fix SHA-256 authors.

The initial commit 5d018dc03549c1ee4958364712fb0c94e1bf2741
in 2007 had a comment in sha256.c that the code is based on
Crypto++ Library 5.5.1. In 2009 the Authors list in sha256.c
and the AUTHORS file was updated with information that the
code had come from Crypto++ but via 7-Zip. I know I had viewed
7-Zip's SHA-256 code but back then the C code has been identical
enough with Crypto++, so I don't why I thought the author info
would need that extra step via 7-Zip for this single file.

Another error is that I had mixed sha.* and shacal2.* files
when checking for author info in Crypto++. The shacal2.* files
aren't related to liblzma's sha256.c and thus Kevin Springle's
code in Crypto++ isn't either.

17 months agoRemove macosx/build.sh.
Lasse Collin [Fri, 9 Feb 2024 15:20:31 +0000 (17:20 +0200)] 
Remove macosx/build.sh.

It was last updated in 2013.

17 months agoDoc: Remove doc/examples_old.
Lasse Collin [Fri, 9 Feb 2024 15:20:31 +0000 (17:20 +0200)] 
Doc: Remove doc/examples_old.

It was good to keep these around in parallel with the newer examples
but I think it's OK to remove the old ones at this point.

18 months agoTests: Add RISC-V filter support in a few places.
Jia Tan [Tue, 13 Feb 2024 14:38:58 +0000 (22:38 +0800)] 
Tests: Add RISC-V filter support in a few places.

18 months agoliblzma: Fix build error if only RISC-V BCJ filter is enabled.
Jia Tan [Tue, 13 Feb 2024 14:37:07 +0000 (22:37 +0800)] 
liblzma: Fix build error if only RISC-V BCJ filter is enabled.

If any other BCJ filter was enabled for encoding or decoding, then this
was not a problem.

18 months agoTranslations: Update the Korean translation.
Jia Tan [Tue, 13 Feb 2024 14:56:24 +0000 (22:56 +0800)] 
Translations: Update the Korean translation.

18 months agoTranslations: Update the Korean man page translations.
Jia Tan [Mon, 12 Feb 2024 17:55:53 +0000 (01:55 +0800)] 
Translations: Update the Korean man page translations.

18 months agoTranslations: Update the Chinese (simplified) translation.
Jia Tan [Mon, 12 Feb 2024 17:53:33 +0000 (01:53 +0800)] 
Translations: Update the Chinese (simplified) translation.

18 months agoxzless: Use ||- in LESSOPEN with with "less" 451 and newer.
Lasse Collin [Fri, 9 Feb 2024 21:21:01 +0000 (23:21 +0200)] 
xzless: Use ||- in LESSOPEN with with "less" 451 and newer.

18 months agoxzless: Use --show-preproc-errors with "less" 632 and newer.
Lasse Collin [Fri, 9 Feb 2024 21:00:05 +0000 (23:00 +0200)] 
xzless: Use --show-preproc-errors with "less" 632 and newer.

This makes "less" show a warning if a decompression error occurred.

18 months agoliblzma: Fix typo discovered by codespell.
Jia Tan [Fri, 9 Feb 2024 15:59:54 +0000 (23:59 +0800)] 
liblzma: Fix typo discovered by codespell.

18 months agoTranslations: Update the Swedish translation.
Jia Tan [Fri, 9 Feb 2024 12:01:06 +0000 (20:01 +0800)] 
Translations: Update the Swedish translation.

18 months agoTranslations: Update the Spanish translation.
Jia Tan [Thu, 8 Feb 2024 12:09:04 +0000 (20:09 +0800)] 
Translations: Update the Spanish translation.

18 months agoTranslations: Update the Spanish translation.
Jia Tan [Wed, 7 Feb 2024 13:34:35 +0000 (21:34 +0800)] 
Translations: Update the Spanish translation.

18 months agoTranslations: Update the Polish translation.
Jia Tan [Wed, 7 Feb 2024 13:28:32 +0000 (21:28 +0800)] 
Translations: Update the Polish translation.

18 months agoTranslations: Update the German translation.
Jia Tan [Wed, 7 Feb 2024 11:40:12 +0000 (19:40 +0800)] 
Translations: Update the German translation.

18 months agoTranslations: Update the German man page translations.
Jia Tan [Wed, 7 Feb 2024 11:27:25 +0000 (19:27 +0800)] 
Translations: Update the German man page translations.

18 months agoTranslations: Update the Romanian translation.
Jia Tan [Tue, 6 Feb 2024 15:44:06 +0000 (23:44 +0800)] 
Translations: Update the Romanian translation.

18 months agoTranslations: Update the Romanian man page translations.
Jia Tan [Tue, 6 Feb 2024 15:45:02 +0000 (23:45 +0800)] 
Translations: Update the Romanian man page translations.

18 months agoTranslations: Update the Ukrainian translation.
Jia Tan [Wed, 7 Feb 2024 12:56:57 +0000 (20:56 +0800)] 
Translations: Update the Ukrainian translation.

18 months agoTranslations: Update the Ukrainian man page translations.
Jia Tan [Tue, 6 Feb 2024 15:30:03 +0000 (23:30 +0800)] 
Translations: Update the Ukrainian man page translations.

18 months agoUpdate AUTHORS.
Jia Tan [Thu, 1 Feb 2024 17:39:28 +0000 (01:39 +0800)] 
Update AUTHORS.

18 months agoliblzma: Update Authors list in crc32_arm64.h.
Jia Tan [Thu, 1 Feb 2024 17:38:51 +0000 (01:38 +0800)] 
liblzma: Update Authors list in crc32_arm64.h.

18 months agoliblzma: Check HAVE_USABLE_CLMUL before omitting CRC32 table.
Jia Tan [Thu, 1 Feb 2024 08:07:03 +0000 (16:07 +0800)] 
liblzma: Check HAVE_USABLE_CLMUL before omitting CRC32 table.

This was split from the prior commit so it could be easily applied to
the 5.4 branch.

Closes: https://github.com/tukaani-project/xz/pull/77
18 months agoliblzma: Check HAVE_USABLE_CLMUL before omitting CRC64 table.
Jia Tan [Thu, 1 Feb 2024 08:06:29 +0000 (16:06 +0800)] 
liblzma: Check HAVE_USABLE_CLMUL before omitting CRC64 table.

If liblzma is configured with --disable-clmul-crc
CFLAGS="-msse4.1 -mpclmul", then it will fail to compile because the
generic version must be used but the CRC tables were not included.

18 months agoliblzma: Only use ifunc in crcXX_fast.c if its needed.
Jia Tan [Tue, 23 Jan 2024 10:02:13 +0000 (18:02 +0800)] 
liblzma: Only use ifunc in crcXX_fast.c if its needed.

The code was using HAVE_FUNC_ATTRIBUTE_IFUNC instead of CRC_USE_IFUNC.
With ARM64, ifunc is incompatible because it requires non-inline
function calls for runtime detection.

18 months agoDocs: Add --disable-arm64-crc32 description to INSTALL.
Jia Tan [Mon, 22 Jan 2024 14:08:45 +0000 (22:08 +0800)] 
Docs: Add --disable-arm64-crc32 description to INSTALL.

18 months agoliblzma: Omit CRC tables when not needed with ARM64 optimizations.
Jia Tan [Mon, 22 Jan 2024 13:36:09 +0000 (21:36 +0800)] 
liblzma: Omit CRC tables when not needed with ARM64 optimizations.

This is similar to the existing x86-64 CLMUL conditions to omit the
tables. They were slightly refactored to improve readability.

18 months agoliblzma: Rename crc32_aarch64.h to crc32_arm64.h.
Jia Tan [Mon, 22 Jan 2024 12:54:56 +0000 (20:54 +0800)] 
liblzma: Rename crc32_aarch64.h to crc32_arm64.h.

Even though the proper name for the architecture is aarch64, this
project uses ARM64 throughout. So the rename is for consistency.

Additionally, crc32_arm64.h was slightly refactored for the following
changes:

   * Added MSVC, FreeBSD, and macOS support in
     is_arch_extension_supported().

   * crc32_arch_optimized() now checks the size when aligning the
     buffer.

   * crc32_arch_optimized() loop conditions were slightly modified to
     avoid both decrementing the size and incrementing the buffer
     pointer.

   * Use the intrinsic wrappers defined in <arm_acle.h> because GCC and
     Clang name them differently.

   * Minor spacing and comment changes.

18 months agoliblzma: Refactor crc_common.h.
Jia Tan [Mon, 22 Jan 2024 12:49:30 +0000 (20:49 +0800)] 
liblzma: Refactor crc_common.h.

The CRC_GENERIC is now split into CRC32_GENERIC and CRC64_GENERIC, since
the ARM64 optimizations will be different between CRC32 and CRC64.

For the same reason, CRC_ARCH_OPTIMIZED is split into
CRC32_ARCH_OPTIMIZED and CRC64_ARCH_OPTIMIZED.

ifunc will only be used with x86-64 CLMUL because the runtime detection
methods needed with ARM64 are not compatible with ifunc.

18 months agoCMake: Add support for ARM64 CRC32 instruction detection.
Jia Tan [Sun, 21 Jan 2024 16:42:28 +0000 (00:42 +0800)] 
CMake: Add support for ARM64 CRC32 instruction detection.

18 months agoBuild: Add support for ARM64 CRC32 instruction detection.
Jia Tan [Sun, 21 Jan 2024 16:36:47 +0000 (00:36 +0800)] 
Build: Add support for ARM64 CRC32 instruction detection.

This adds --enable-arm64-crc32/--disable-arm64-crc32 (enabled by
default) for using the ARM64 CRC32 instruction. This can be disabled if
one knows the binary will never need to run on an ARM64 machine
with this instruction extension.

18 months agoSpeed up CRC32 calculation on ARM64
Chenxi Mao [Tue, 9 Jan 2024 09:23:11 +0000 (17:23 +0800)] 
Speed up CRC32 calculation on ARM64

The CRC32 instructions in ARM64 can calculate the CRC32 result
for 8 bytes in a single operation, making the use of ARM64
instructions much faster compared to the general CRC32 algorithm.

Optimized CRC32 will be enabled if ARM64 has CRC extension
running on Linux.

Signed-off-by: Chenxi Mao <chenxi.mao2013@gmail.com>
18 months agoBump version number for 5.5.1alpha. v5.5.1alpha
Jia Tan [Fri, 26 Jan 2024 11:05:51 +0000 (19:05 +0800)] 
Bump version number for 5.5.1alpha.

18 months agoAdd NEWS for 5.5.1alpha
Jia Tan [Fri, 26 Jan 2024 11:00:52 +0000 (19:00 +0800)] 
Add NEWS for 5.5.1alpha