mirror of
https://github.com/facebook/zstd.git
synced 2025-03-06 16:56:49 +02:00
initial commit
This commit is contained in:
parent
dc39409a03
commit
610c8b9e33
@ -7,8 +7,6 @@ jobs:
|
|||||||
# preinstalled to reduce installation time.
|
# preinstalled to reduce installation time.
|
||||||
docker:
|
docker:
|
||||||
- image: fbopensource/zstd-circleci-primary:0.0.1
|
- image: fbopensource/zstd-circleci-primary:0.0.1
|
||||||
# TODO: Re-enable aarch64 build:
|
|
||||||
# make aarch64build && make clean
|
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- run:
|
- run:
|
||||||
@ -36,6 +34,7 @@ jobs:
|
|||||||
make ppc64build V=1; make clean
|
make ppc64build V=1; make clean
|
||||||
make ppcbuild V=1; make clean
|
make ppcbuild V=1; make clean
|
||||||
make armbuild V=1; make clean
|
make armbuild V=1; make clean
|
||||||
|
make aarch64build V=1; make clean
|
||||||
make -C tests test-legacy test-longmatch; make clean
|
make -C tests test-legacy test-longmatch; make clean
|
||||||
make -C lib libzstd-nomt; make clean
|
make -C lib libzstd-nomt; make clean
|
||||||
# This step should only be run in a cron job
|
# This step should only be run in a cron job
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
FROM circleci/buildpack-deps:bionic
|
FROM circleci/buildpack-deps:focal
|
||||||
|
|
||||||
RUN sudo dpkg --add-architecture i386
|
RUN sudo dpkg --add-architecture i386
|
||||||
RUN sudo apt-get -y -qq update
|
RUN sudo apt-get -y -qq update
|
||||||
|
127
.github/workflows/dev-long-tests.yml
vendored
127
.github/workflows/dev-long-tests.yml
vendored
@ -13,7 +13,7 @@ jobs:
|
|||||||
make-all:
|
make-all:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: make all
|
- name: make all
|
||||||
run: make all
|
run: make all
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ jobs:
|
|||||||
DEVNULLRIGHTS: 1
|
DEVNULLRIGHTS: 1
|
||||||
READFROMBLOCKDEVICE: 1
|
READFROMBLOCKDEVICE: 1
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: make test
|
- name: make test
|
||||||
run: make test
|
run: make test
|
||||||
|
|
||||||
@ -32,28 +32,28 @@ jobs:
|
|||||||
make-test-osx:
|
make-test-osx:
|
||||||
runs-on: macos-latest
|
runs-on: macos-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: OS-X test
|
- name: OS-X test
|
||||||
run: make test # make -c lib all doesn't work because of the fact that it's not a tty
|
run: make test # make -c lib all doesn't work because of the fact that it's not a tty
|
||||||
|
|
||||||
no-intrinsics-fuzztest:
|
no-intrinsics-fuzztest:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: no intrinsics fuzztest
|
- name: no intrinsics fuzztest
|
||||||
run: MOREFLAGS="-DZSTD_NO_INTRINSICS" make -C tests fuzztest
|
run: MOREFLAGS="-DZSTD_NO_INTRINSICS" make -C tests fuzztest
|
||||||
|
|
||||||
tsan-zstreamtest:
|
tsan-zstreamtest:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: thread sanitizer zstreamtest
|
- name: thread sanitizer zstreamtest
|
||||||
run: CC=clang ZSTREAM_TESTTIME=-T3mn make tsan-test-zstream
|
run: CC=clang ZSTREAM_TESTTIME=-T3mn make tsan-test-zstream
|
||||||
|
|
||||||
ubsan-zstreamtest:
|
ubsan-zstreamtest:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: undefined behavior sanitizer zstreamtest
|
- name: undefined behavior sanitizer zstreamtest
|
||||||
run: CC=clang make uasan-test-zstream
|
run: CC=clang make uasan-test-zstream
|
||||||
|
|
||||||
@ -61,15 +61,26 @@ jobs:
|
|||||||
tsan-fuzztest:
|
tsan-fuzztest:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: thread sanitizer fuzztest
|
- name: thread sanitizer fuzztest
|
||||||
run: CC=clang make tsan-fuzztest
|
run: CC=clang make tsan-fuzztest
|
||||||
|
|
||||||
|
|
||||||
|
big-tests-zstreamtest32:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
|
- name: zstream tests in 32bit mode, with big tests
|
||||||
|
run: |
|
||||||
|
sudo apt-get -qqq update
|
||||||
|
make libc6install
|
||||||
|
CC=clang make -C tests test-zstream32 FUZZER_FLAGS="--big-tests"
|
||||||
|
|
||||||
# lasts ~23mn
|
# lasts ~23mn
|
||||||
gcc-8-asan-ubsan-testzstd:
|
gcc-8-asan-ubsan-testzstd:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: gcc-8 + ASan + UBSan + Test Zstd
|
- name: gcc-8 + ASan + UBSan + Test Zstd
|
||||||
# See https://askubuntu.com/a/1428822
|
# See https://askubuntu.com/a/1428822
|
||||||
run: |
|
run: |
|
||||||
@ -81,14 +92,14 @@ jobs:
|
|||||||
clang-asan-ubsan-testzstd:
|
clang-asan-ubsan-testzstd:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: clang + ASan + UBSan + Test Zstd
|
- name: clang + ASan + UBSan + Test Zstd
|
||||||
run: CC=clang make -j uasan-test-zstd </dev/null V=1
|
run: CC=clang make -j uasan-test-zstd </dev/null V=1
|
||||||
|
|
||||||
gcc-asan-ubsan-testzstd-32bit:
|
gcc-asan-ubsan-testzstd-32bit:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: ASan + UBSan + Test Zstd, 32bit mode
|
- name: ASan + UBSan + Test Zstd, 32bit mode
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get -qqq update
|
sudo apt-get -qqq update
|
||||||
@ -102,7 +113,7 @@ jobs:
|
|||||||
gcc-8-asan-ubsan-fuzz:
|
gcc-8-asan-ubsan-fuzz:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: gcc-8 + ASan + UBSan + Fuzz Test
|
- name: gcc-8 + ASan + UBSan + Fuzz Test
|
||||||
# See https://askubuntu.com/a/1428822
|
# See https://askubuntu.com/a/1428822
|
||||||
run: |
|
run: |
|
||||||
@ -114,14 +125,14 @@ jobs:
|
|||||||
clang-asan-ubsan-fuzz:
|
clang-asan-ubsan-fuzz:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: clang + ASan + UBSan + Fuzz Test
|
- name: clang + ASan + UBSan + Fuzz Test
|
||||||
run: CC=clang FUZZER_FLAGS="--long-tests" make clean uasan-fuzztest
|
run: CC=clang FUZZER_FLAGS="--long-tests" make clean uasan-fuzztest
|
||||||
|
|
||||||
gcc-asan-ubsan-fuzz32:
|
gcc-asan-ubsan-fuzz32:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: ASan + UBSan + Fuzz Test 32bit
|
- name: ASan + UBSan + Fuzz Test 32bit
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get -qqq update
|
sudo apt-get -qqq update
|
||||||
@ -131,7 +142,7 @@ jobs:
|
|||||||
clang-asan-ubsan-fuzz32:
|
clang-asan-ubsan-fuzz32:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: clang + ASan + UBSan + Fuzz Test 32bit
|
- name: clang + ASan + UBSan + Fuzz Test 32bit
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get -qqq update
|
sudo apt-get -qqq update
|
||||||
@ -141,28 +152,28 @@ jobs:
|
|||||||
asan-ubsan-regression:
|
asan-ubsan-regression:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: ASan + UBSan + Regression Test
|
- name: ASan + UBSan + Regression Test
|
||||||
run: make -j uasanregressiontest
|
run: make -j uasanregressiontest
|
||||||
|
|
||||||
clang-ubsan-regression:
|
clang-ubsan-regression:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: clang + ASan + UBSan + Regression Test
|
- name: clang + ASan + UBSan + Regression Test
|
||||||
run: CC=clang make -j uasanregressiontest
|
run: CC=clang make -j uasanregressiontest
|
||||||
|
|
||||||
msan-regression:
|
msan-regression:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: MSan + Regression Test
|
- name: MSan + Regression Test
|
||||||
run: make -j msanregressiontest
|
run: make -j msanregressiontest
|
||||||
|
|
||||||
clang-msan-fuzz:
|
clang-msan-fuzz:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: clang + MSan + Fuzz Test
|
- name: clang + MSan + Fuzz Test
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get -qqq update
|
sudo apt-get -qqq update
|
||||||
@ -173,7 +184,7 @@ jobs:
|
|||||||
clang-msan-testzstd:
|
clang-msan-testzstd:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: clang + MSan + Test Zstd
|
- name: clang + MSan + Test Zstd
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
@ -183,7 +194,7 @@ jobs:
|
|||||||
armfuzz:
|
armfuzz:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: Qemu ARM emulation + Fuzz Test
|
- name: Qemu ARM emulation + Fuzz Test
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get -qqq update
|
sudo apt-get -qqq update
|
||||||
@ -193,7 +204,7 @@ jobs:
|
|||||||
valgrind-fuzz-test:
|
valgrind-fuzz-test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: valgrind + fuzz test stack mode # ~ 7mn
|
- name: valgrind + fuzz test stack mode # ~ 7mn
|
||||||
shell: 'script -q -e -c "bash {0}"'
|
shell: 'script -q -e -c "bash {0}"'
|
||||||
run: |
|
run: |
|
||||||
@ -204,57 +215,31 @@ jobs:
|
|||||||
make -C tests test-fuzzer-stackmode
|
make -C tests test-fuzzer-stackmode
|
||||||
|
|
||||||
mingw-long-test:
|
mingw-long-test:
|
||||||
runs-on: windows-2019
|
runs-on: windows-latest
|
||||||
strategy:
|
defaults:
|
||||||
fail-fast: false
|
run:
|
||||||
matrix:
|
shell: msys2 {0}
|
||||||
include: [
|
|
||||||
{ compiler: clang, platform: x64, action: build, script: "MOREFLAGS='--target=x86_64-w64-mingw32 -Werror -Wconversion -Wno-sign-conversion -Wno-unused-command-line-argument -Wno-implicit-int-float-conversion' make -j allzstd V=1"},
|
|
||||||
{ compiler: gcc, platform: x64, action: test, script: ""},
|
|
||||||
]
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: Mingw long test
|
- uses: msys2/setup-msys2@v2
|
||||||
|
with:
|
||||||
|
msystem: MINGW64
|
||||||
|
install: make
|
||||||
|
update: true
|
||||||
|
# Based on https://ariya.io/2020/07/on-github-actions-with-msys2
|
||||||
|
- name: install mingw gcc
|
||||||
|
run: pacman --noconfirm -S gcc
|
||||||
|
- name: MINGW64 gcc fuzztest
|
||||||
run: |
|
run: |
|
||||||
$env:PATH_ORIGINAL = $env:PATH
|
export CC="gcc"
|
||||||
$env:PATH_MINGW32 = "C:\msys64\mingw32\bin"
|
export CXX="g++"
|
||||||
$env:PATH_MINGW64 = "C:\msys64\mingw64\bin"
|
export FUZZERTEST="-T2mn"
|
||||||
COPY C:\msys64\usr\bin\make.exe C:\msys64\mingw32\bin\make.exe
|
export ZSTREAM_TESTTIME="-T2mn"
|
||||||
COPY C:\msys64\usr\bin\make.exe C:\msys64\mingw64\bin\make.exe
|
echo "Testing $CC $CXX MINGW64"
|
||||||
IF ("${{matrix.platform}}" -eq "x64")
|
make -v
|
||||||
{
|
$CC --version
|
||||||
$env:PATH = $env:PATH_MINGW64 + ";" + $env:PATH_ORIGINAL
|
$CXX --version
|
||||||
}
|
make -C tests fuzztest
|
||||||
ELSEIF ("${{matrix.platform}}" -eq "x86")
|
|
||||||
{
|
|
||||||
$env:PATH = $env:PATH_MINGW32 + ";" + $env:PATH_ORIGINAL
|
|
||||||
}
|
|
||||||
IF ("${{matrix.action}}" -eq "build")
|
|
||||||
{
|
|
||||||
make -v
|
|
||||||
sh -c "${{matrix.compiler}} -v"
|
|
||||||
ECHO "Building zlib to static link"
|
|
||||||
$env:CC = "${{matrix.compiler}}"
|
|
||||||
sh -c "cd .. && git clone --depth 1 --branch v1.2.11 https://github.com/madler/zlib"
|
|
||||||
sh -c "cd ../zlib && make -f win32/Makefile.gcc libz.a"
|
|
||||||
ECHO "Building zstd"
|
|
||||||
$env:CPPFLAGS = "-I../../zlib"
|
|
||||||
$env:LDFLAGS = "../../zlib/libz.a"
|
|
||||||
sh -c "${{matrix.script}}"
|
|
||||||
}
|
|
||||||
ELSEIF ("${{matrix.action}}" -eq "test")
|
|
||||||
{
|
|
||||||
ECHO "Testing ${{matrix.compiler}} ${{matrix.platform}}"
|
|
||||||
$env:CC = "gcc"
|
|
||||||
$env:CXX = "g++"
|
|
||||||
MKDIR build\cmake\build
|
|
||||||
CD build\cmake\build
|
|
||||||
$env:FUZZERTEST = "-T2mn"
|
|
||||||
$env:ZSTREAM_TESTTIME = "-T2mn"
|
|
||||||
cmake -G "Visual Studio 14 2015 Win64" ..
|
|
||||||
cd ..\..\..
|
|
||||||
make clean
|
|
||||||
}
|
|
||||||
|
|
||||||
# lasts ~20mn
|
# lasts ~20mn
|
||||||
oss-fuzz:
|
oss-fuzz:
|
||||||
@ -279,7 +264,7 @@ jobs:
|
|||||||
dry-run: false
|
dry-run: false
|
||||||
sanitizer: ${{ matrix.sanitizer }}
|
sanitizer: ${{ matrix.sanitizer }}
|
||||||
- name: Upload Crash
|
- name: Upload Crash
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # tag=v3.1.2
|
||||||
if: failure() && steps.build.outcome == 'success'
|
if: failure() && steps.build.outcome == 'success'
|
||||||
with:
|
with:
|
||||||
name: ${{ matrix.sanitizer }}-artifacts
|
name: ${{ matrix.sanitizer }}-artifacts
|
||||||
|
304
.github/workflows/dev-short-tests.yml
vendored
304
.github/workflows/dev-short-tests.yml
vendored
@ -14,21 +14,21 @@ jobs:
|
|||||||
linux-kernel:
|
linux-kernel:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: linux kernel, library + build + test
|
- name: linux kernel, library + build + test
|
||||||
run: make -C contrib/linux-kernel test CFLAGS="-Werror -Wunused-const-variable -Wunused-but-set-variable"
|
run: make -C contrib/linux-kernel test CFLAGS="-Werror -Wunused-const-variable -Wunused-but-set-variable"
|
||||||
|
|
||||||
benchmarking:
|
benchmarking:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: make benchmarking
|
- name: make benchmarking
|
||||||
run: make benchmarking
|
run: make benchmarking
|
||||||
|
|
||||||
check-32bit: # designed to catch https://github.com/facebook/zstd/issues/2428
|
check-32bit: # designed to catch https://github.com/facebook/zstd/issues/2428
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: make check on 32-bit
|
- name: make check on 32-bit
|
||||||
run: |
|
run: |
|
||||||
sudo apt update
|
sudo apt update
|
||||||
@ -38,7 +38,7 @@ jobs:
|
|||||||
check-x32:
|
check-x32:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: make check on x32 ABI # https://en.wikipedia.org/wiki/X32_ABI
|
- name: make check on x32 ABI # https://en.wikipedia.org/wiki/X32_ABI
|
||||||
env:
|
env:
|
||||||
CHECK_CONSTRAINED_MEM: true
|
CHECK_CONSTRAINED_MEM: true
|
||||||
@ -47,10 +47,19 @@ jobs:
|
|||||||
APT_PACKAGES="gcc-multilib" make apt-install
|
APT_PACKAGES="gcc-multilib" make apt-install
|
||||||
CFLAGS="-mx32 -O1 -fstack-protector" make check V=1
|
CFLAGS="-mx32 -O1 -fstack-protector" make check V=1
|
||||||
|
|
||||||
|
build-c89:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
|
- name: ensure zstd can be build with c89/c90 compilers (+ long long support + variadic macros)
|
||||||
|
run: |
|
||||||
|
make c89build V=1
|
||||||
|
|
||||||
|
|
||||||
gcc-7-libzstd:
|
gcc-7-libzstd:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: gcc-7 + libzstdmt compilation
|
- name: gcc-7 + libzstdmt compilation
|
||||||
# See https://askubuntu.com/a/1428822
|
# See https://askubuntu.com/a/1428822
|
||||||
run: |
|
run: |
|
||||||
@ -67,7 +76,7 @@ jobs:
|
|||||||
cmake-build-and-test-check:
|
cmake-build-and-test-check:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: cmake build and test check
|
- name: cmake build and test check
|
||||||
run: |
|
run: |
|
||||||
FUZZERTEST=-T1mn ZSTREAM_TESTTIME=-T1mn make cmakebuild
|
FUZZERTEST=-T1mn ZSTREAM_TESTTIME=-T1mn make cmakebuild
|
||||||
@ -78,7 +87,7 @@ jobs:
|
|||||||
cpp-gnu90-c99-compatibility:
|
cpp-gnu90-c99-compatibility:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: C++, gnu90 and c99 compatibility
|
- name: C++, gnu90 and c99 compatibility
|
||||||
run: |
|
run: |
|
||||||
make cxxtest
|
make cxxtest
|
||||||
@ -92,7 +101,7 @@ jobs:
|
|||||||
mingw-cross-compilation:
|
mingw-cross-compilation:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: mingw cross-compilation
|
- name: mingw cross-compilation
|
||||||
run: |
|
run: |
|
||||||
# sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix; (doesn't work)
|
# sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix; (doesn't work)
|
||||||
@ -103,7 +112,7 @@ jobs:
|
|||||||
armbuild:
|
armbuild:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: ARM Build Test
|
- name: ARM Build Test
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get -qqq update
|
sudo apt-get -qqq update
|
||||||
@ -113,7 +122,7 @@ jobs:
|
|||||||
bourne-shell:
|
bourne-shell:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: Bourne shell compatibility (shellcheck)
|
- name: Bourne shell compatibility (shellcheck)
|
||||||
run: |
|
run: |
|
||||||
wget https://github.com/koalaman/shellcheck/releases/download/v0.7.1/shellcheck-v0.7.1.linux.x86_64.tar.xz
|
wget https://github.com/koalaman/shellcheck/releases/download/v0.7.1/shellcheck-v0.7.1.linux.x86_64.tar.xz
|
||||||
@ -123,7 +132,7 @@ jobs:
|
|||||||
zlib-wrapper:
|
zlib-wrapper:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: zlib wrapper test
|
- name: zlib wrapper test
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get -qqq update
|
sudo apt-get -qqq update
|
||||||
@ -134,7 +143,7 @@ jobs:
|
|||||||
lz4-threadpool-libs:
|
lz4-threadpool-libs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: LZ4, thread pool, and libs build testslib wrapper test
|
- name: LZ4, thread pool, and libs build testslib wrapper test
|
||||||
run: |
|
run: |
|
||||||
make lz4install
|
make lz4install
|
||||||
@ -148,7 +157,7 @@ jobs:
|
|||||||
gcc-make-tests-32bit:
|
gcc-make-tests-32bit:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: Make all, 32bit mode
|
- name: Make all, 32bit mode
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get -qqq update
|
sudo apt-get -qqq update
|
||||||
@ -158,7 +167,7 @@ jobs:
|
|||||||
gcc-8-make:
|
gcc-8-make:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: gcc-8 build
|
- name: gcc-8 build
|
||||||
# See https://askubuntu.com/a/1428822
|
# See https://askubuntu.com/a/1428822
|
||||||
run: |
|
run: |
|
||||||
@ -170,7 +179,7 @@ jobs:
|
|||||||
implicit-fall-through:
|
implicit-fall-through:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: -Wimplicit-fallthrough build
|
- name: -Wimplicit-fallthrough build
|
||||||
run: |
|
run: |
|
||||||
make clean
|
make clean
|
||||||
@ -178,20 +187,65 @@ jobs:
|
|||||||
make clean
|
make clean
|
||||||
CC=clang MOREFLAGS="-Werror -Wimplicit-fallthrough -O0" make -C lib -j libzstd.a ZSTD_LEGACY_SUPPORT=0
|
CC=clang MOREFLAGS="-Werror -Wimplicit-fallthrough -O0" make -C lib -j libzstd.a ZSTD_LEGACY_SUPPORT=0
|
||||||
|
|
||||||
cmake-visual-2019:
|
meson-linux:
|
||||||
runs-on: windows-2019
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
|
- name: Install packages
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get -y install build-essential python3-pip ninja-build liblz4-dev
|
||||||
|
pip install --pre meson
|
||||||
|
- name: Build with Meson
|
||||||
|
run: |
|
||||||
|
meson setup \
|
||||||
|
--buildtype=debugoptimized \
|
||||||
|
-Db_lundef=false \
|
||||||
|
-Dauto_features=enabled \
|
||||||
|
-Dbin_programs=true \
|
||||||
|
-Dbin_tests=true \
|
||||||
|
-Dbin_contrib=true \
|
||||||
|
-Ddefault_library=both \
|
||||||
|
build/meson builddir
|
||||||
|
ninja -C builddir/
|
||||||
|
meson test -C builddir/ --print-errorlogs
|
||||||
|
meson install -C builddir --destdir staging/
|
||||||
|
|
||||||
|
meson-windows:
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
|
- name: Install packages
|
||||||
|
run: pip install --pre meson
|
||||||
|
- name: Initialize the MSVC dev command prompt
|
||||||
|
uses: ilammy/msvc-dev-cmd@cec98b9d092141f74527d0afa6feb2af698cfe89
|
||||||
|
- name: Configure with Meson
|
||||||
|
run: |
|
||||||
|
meson setup build/meson/ builddir -Dbin_tests=true -Dbin_programs=true -Dbin_contrib=true
|
||||||
|
- name: Build with Meson
|
||||||
|
run: |
|
||||||
|
ninja -C builddir/
|
||||||
|
- name: Test with Meson
|
||||||
|
run: |
|
||||||
|
meson test -C builddir/ --print-errorlogs
|
||||||
|
- name: Install with Meson
|
||||||
|
run: |
|
||||||
|
meson install -C builddir --destdir staging/
|
||||||
|
|
||||||
|
cmake-visual-2022:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- generator: "Visual Studio 16 2019"
|
- generator: "Visual Studio 17 2022"
|
||||||
flags: "-A x64"
|
flags: "-A x64"
|
||||||
- generator: "Visual Studio 16 2019"
|
- generator: "Visual Studio 17 2022"
|
||||||
flags: "-A Win32"
|
flags: "-A Win32"
|
||||||
- generator: "MinGW Makefiles"
|
- generator: "MinGW Makefiles"
|
||||||
|
runs-on: windows-2022
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: Add MSBuild to PATH
|
- name: Add MSBuild to PATH
|
||||||
uses: microsoft/setup-msbuild@v1.1.3
|
uses: microsoft/setup-msbuild@v1.3
|
||||||
- name: Build
|
- name: Build
|
||||||
working-directory: ${{env.GITHUB_WORKSPACE}}
|
working-directory: ${{env.GITHUB_WORKSPACE}}
|
||||||
run: |
|
run: |
|
||||||
@ -201,45 +255,47 @@ jobs:
|
|||||||
cmake.exe -G "${{matrix.generator}}" ${{matrix.flags}} ..
|
cmake.exe -G "${{matrix.generator}}" ${{matrix.flags}} ..
|
||||||
cmake.exe --build .
|
cmake.exe --build .
|
||||||
|
|
||||||
visual-2019:
|
msbuild-visual-studio:
|
||||||
runs-on: windows-2019
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
platform: [x64, Win32]
|
include: [
|
||||||
configuration: [Debug, Release]
|
{ name: "VS 2022 x64 Debug", platform: x64, configuration: Debug, toolset: v143, runner: "windows-2022"},
|
||||||
|
{ name: "VS 2022 Win32 Debug", platform: Win32, configuration: Debug, toolset: v143, runner: "windows-2022"},
|
||||||
|
{ name: "VS 2022 x64 Release", platform: x64, configuration: Release, toolset: v143, runner: "windows-2022"},
|
||||||
|
{ name: "VS 2022 Win32 Release", platform: Win32, configuration: Release, toolset: v143, runner: "windows-2022"},
|
||||||
|
{ name: "VS 2019 x64 Release", platform: Win32, configuration: Release, toolset: v142, runner: "windows-2019"},
|
||||||
|
{ name: "VS 2019 Win32 Release", platform: x64, configuration: Release, toolset: v142, runner: "windows-2019"},
|
||||||
|
]
|
||||||
|
runs-on: ${{matrix.runner}}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: Add MSBuild to PATH
|
- name: Add MSBuild to PATH
|
||||||
uses: microsoft/setup-msbuild@v1.1.3
|
uses: microsoft/setup-msbuild@v1.3
|
||||||
- name: Build
|
- name: Build
|
||||||
working-directory: ${{env.GITHUB_WORKSPACE}}
|
working-directory: ${{env.GITHUB_WORKSPACE}}
|
||||||
# See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
|
# See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
|
||||||
run: >
|
run: >
|
||||||
msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=v142
|
msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=${{matrix.toolset}}
|
||||||
/t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}}
|
/t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}}
|
||||||
|
|
||||||
# TODO: fix as part of https://github.com/facebook/zstd/issues/3064
|
# This tests that we don't accidently grow the size too much.
|
||||||
# visual-2015:
|
# If the size grows intentionally, you can raise these numbers.
|
||||||
# # only GH actions windows-2016 contains VS 2015
|
# But we do need to think about binary size, since it is a concern.
|
||||||
# runs-on: windows-2016
|
libzstd-size:
|
||||||
# strategy:
|
runs-on: ubuntu-latest
|
||||||
# matrix:
|
steps:
|
||||||
# platform: [x64, Win32]
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
# configuration: [Debug, Release]
|
- name: libzstd size test
|
||||||
# steps:
|
run: |
|
||||||
# - uses: actions/checkout@v3
|
make clean && make -j -C lib libzstd && ./tests/check_size.py lib/libzstd.so 1100000
|
||||||
# - name: Add MSBuild to PATH
|
make clean && make -j -C lib libzstd ZSTD_LIB_COMPRESSION=0 ZSTD_LIB_DICTBUILDER=0 && ./tests/check_size.py lib/libzstd.so 400000
|
||||||
# uses: microsoft/setup-msbuild@v1.1.3
|
make clean && make -j -C lib libzstd ZSTD_LIB_MINIFY=1 && ./tests/check_size.py lib/libzstd.so 300000
|
||||||
# - name: Build
|
make clean && make -j -C lib libzstd ZSTD_LIB_MINIFY=1 ZSTD_LIB_COMPRESSION=0 ZSTD_LIB_DICTBUILDER=0 && ./tests/check_size.py lib/libzstd.so 80000
|
||||||
# working-directory: ${{env.GITHUB_WORKSPACE}}
|
|
||||||
# run: >
|
|
||||||
# msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=v140
|
|
||||||
# /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}}
|
|
||||||
|
|
||||||
minimal-decompressor-macros:
|
minimal-decompressor-macros:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: minimal decompressor macros
|
- name: minimal decompressor macros
|
||||||
run: |
|
run: |
|
||||||
make clean && make -j all ZSTD_LIB_MINIFY=1 MOREFLAGS="-Werror"
|
make clean && make -j all ZSTD_LIB_MINIFY=1 MOREFLAGS="-Werror"
|
||||||
@ -254,7 +310,7 @@ jobs:
|
|||||||
dynamic-bmi2:
|
dynamic-bmi2:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: dynamic bmi2 tests
|
- name: dynamic bmi2 tests
|
||||||
run: |
|
run: |
|
||||||
make clean && make -j check MOREFLAGS="-O0 -Werror -mbmi2"
|
make clean && make -j check MOREFLAGS="-O0 -Werror -mbmi2"
|
||||||
@ -266,7 +322,7 @@ jobs:
|
|||||||
test-variants:
|
test-variants:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: make all variants & validate
|
- name: make all variants & validate
|
||||||
run: |
|
run: |
|
||||||
make -j -C programs allVariants MOREFLAGS=-O0
|
make -j -C programs allVariants MOREFLAGS=-O0
|
||||||
@ -275,7 +331,7 @@ jobs:
|
|||||||
|
|
||||||
qemu-consistency:
|
qemu-consistency:
|
||||||
name: QEMU ${{ matrix.name }}
|
name: QEMU ${{ matrix.name }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-20.04
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed.
|
fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed.
|
||||||
matrix:
|
matrix:
|
||||||
@ -292,7 +348,7 @@ jobs:
|
|||||||
XCC: ${{ matrix.xcc }}
|
XCC: ${{ matrix.xcc }}
|
||||||
XEMU: ${{ matrix.xemu }}
|
XEMU: ${{ matrix.xemu }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: apt update & install
|
- name: apt update & install
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
@ -335,52 +391,58 @@ jobs:
|
|||||||
LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
|
LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
|
||||||
|
|
||||||
mingw-short-test:
|
mingw-short-test:
|
||||||
runs-on: windows-2019
|
runs-on: windows-latest
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed.
|
||||||
matrix:
|
matrix:
|
||||||
include: [
|
include: [
|
||||||
{ compiler: gcc, platform: x64, script: "CFLAGS=-Werror make -j allzstd DEBUGLEVEL=2"},
|
{ compiler: gcc, msystem: MINGW32, cflags: "-Werror"},
|
||||||
{ compiler: gcc, platform: x86, script: "CFLAGS=-Werror make -j allzstd"},
|
{ compiler: gcc, msystem: MINGW64, cflags: "-Werror"},
|
||||||
{ compiler: clang, platform: x64, script: "CFLAGS='--target=x86_64-w64-mingw32 -Werror -Wconversion -Wno-sign-conversion' make -j allzstd V=1"},
|
{ compiler: clang, msystem: MINGW64, cflags: "--target=x86_64-w64-mingw32 -Werror -Wconversion -Wno-sign-conversion -Wno-unused-command-line-argument"},
|
||||||
]
|
]
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: msys2 {0}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: Mingw short test
|
- uses: msys2/setup-msys2@v2
|
||||||
|
with:
|
||||||
|
msystem: ${{ matrix.msystem }}
|
||||||
|
install: make diffutils
|
||||||
|
update: true
|
||||||
|
# Based on https://ariya.io/2020/07/on-github-actions-with-msys2
|
||||||
|
- name: install mingw gcc i686
|
||||||
|
if: ${{ (matrix.msystem == 'MINGW32') && (matrix.compiler == 'gcc') }}
|
||||||
|
run: pacman --noconfirm -S mingw-w64-i686-gcc
|
||||||
|
- name: install mingw gcc x86_64
|
||||||
|
if: ${{ (matrix.msystem == 'MINGW64') && (matrix.compiler == 'gcc') }}
|
||||||
|
run: pacman --noconfirm -S mingw-w64-x86_64-gcc
|
||||||
|
- name: install mingw clang i686
|
||||||
|
if: ${{ (matrix.msystem == 'MINGW32') && (matrix.compiler == 'clang') }}
|
||||||
|
run: pacman --noconfirm -S mingw-w64-i686-clang
|
||||||
|
- name: install mingw clang x86_64
|
||||||
|
if: ${{ (matrix.msystem == 'MINGW64') && (matrix.compiler == 'clang') }}
|
||||||
|
run: pacman --noconfirm -S mingw-w64-x86_64-clang
|
||||||
|
- name: run mingw tests
|
||||||
run: |
|
run: |
|
||||||
ECHO "Building ${{matrix.compiler}} ${{matrix.platform}}"
|
|
||||||
$env:PATH_ORIGINAL = $env:PATH
|
|
||||||
$env:PATH_MINGW32 = "C:\msys64\mingw32\bin"
|
|
||||||
$env:PATH_MINGW64 = "C:\msys64\mingw64\bin"
|
|
||||||
COPY C:\msys64\usr\bin\make.exe C:\msys64\mingw32\bin\make.exe
|
|
||||||
COPY C:\msys64\usr\bin\make.exe C:\msys64\mingw64\bin\make.exe
|
|
||||||
IF ("${{matrix.platform}}" -eq "x64")
|
|
||||||
{
|
|
||||||
$env:PATH = $env:PATH_MINGW64 + ";" + $env:PATH_ORIGINAL
|
|
||||||
}
|
|
||||||
ELSEIF ("${{matrix.platform}}" -eq "x86")
|
|
||||||
{
|
|
||||||
$env:PATH = $env:PATH_MINGW32 + ";" + $env:PATH_ORIGINAL
|
|
||||||
}
|
|
||||||
make -v
|
make -v
|
||||||
sh -c "${{matrix.compiler}} -v"
|
export CC=${{ matrix.compiler }}
|
||||||
$env:CC = "${{matrix.compiler}}"
|
$CC --version
|
||||||
sh -c "${{matrix.script}}"
|
CFLAGS="${{ matrix.cflags }}" make -j allzstd
|
||||||
ECHO "Testing ${{matrix.compiler}} ${{matrix.platform}}"
|
echo "Testing $CC ${{ matrix.msystem }}"
|
||||||
make clean
|
make clean
|
||||||
make check
|
MSYS="" make check
|
||||||
|
|
||||||
|
|
||||||
visual-runtime-tests:
|
visual-runtime-tests:
|
||||||
runs-on: windows-2019
|
runs-on: windows-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
platform: [x64, Win32]
|
platform: [x64, Win32]
|
||||||
configuration: [Release]
|
configuration: [Release]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: Add MSBuild to PATH
|
- name: Add MSBuild to PATH
|
||||||
uses: microsoft/setup-msbuild@v1.1.3
|
uses: microsoft/setup-msbuild@v1.3
|
||||||
- name: Build and run tests
|
- name: Build and run tests
|
||||||
working-directory: ${{env.GITHUB_WORKSPACE}}
|
working-directory: ${{env.GITHUB_WORKSPACE}}
|
||||||
env:
|
env:
|
||||||
@ -392,13 +454,39 @@ jobs:
|
|||||||
COPY build\VS2010\bin\${{matrix.platform}}_${{matrix.configuration}}\*.exe tests\
|
COPY build\VS2010\bin\${{matrix.platform}}_${{matrix.configuration}}\*.exe tests\
|
||||||
CD tests
|
CD tests
|
||||||
sh -e playTests.sh
|
sh -e playTests.sh
|
||||||
DIR
|
|
||||||
.\fuzzer.exe -T2m
|
.\fuzzer.exe -T2m
|
||||||
|
|
||||||
|
# Following instructions at: https://github.com/marketplace/actions/install-cygwin-action
|
||||||
|
cygwin-tests:
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- run: git config --global core.autocrlf input
|
||||||
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
|
- uses: cygwin/cygwin-install-action@f5e0f048310c425e84bc789f493a828c6dc80a25 # tag=master
|
||||||
|
with:
|
||||||
|
platform: x86_64
|
||||||
|
packages: >-
|
||||||
|
autoconf,
|
||||||
|
automake,
|
||||||
|
gcc-g++,
|
||||||
|
make,
|
||||||
|
mingw64-x86_64-gcc-g++,
|
||||||
|
patch,
|
||||||
|
perl
|
||||||
|
- name: cygwin tests
|
||||||
|
shell: C:\cygwin\bin\bash.exe --noprofile --norc -eo pipefail '{0}'
|
||||||
|
run: >-
|
||||||
|
export PATH=/usr/bin:$(cygpath ${SYSTEMROOT})/system32 &&
|
||||||
|
export CFLAGS="-Werror -O1" &&
|
||||||
|
ls &&
|
||||||
|
make -j allzstd &&
|
||||||
|
make -C tests fuzzer &&
|
||||||
|
./tests/fuzzer.exe -v -T1m
|
||||||
|
|
||||||
intel-cet-compatibility:
|
intel-cet-compatibility:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: Build Zstd
|
- name: Build Zstd
|
||||||
run: |
|
run: |
|
||||||
make -j zstd V=1
|
make -j zstd V=1
|
||||||
@ -419,7 +507,7 @@ jobs:
|
|||||||
container:
|
container:
|
||||||
image: debian:testing
|
image: debian:testing
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
apt -y update
|
apt -y update
|
||||||
@ -431,18 +519,44 @@ jobs:
|
|||||||
cc -Wall -Wextra -Wpedantic -Werror -o simple examples/simple_compression.c $(pkg-config --cflags --libs libzstd)
|
cc -Wall -Wextra -Wpedantic -Werror -o simple examples/simple_compression.c $(pkg-config --cflags --libs libzstd)
|
||||||
./simple LICENSE
|
./simple LICENSE
|
||||||
|
|
||||||
|
versions-compatibility:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
|
- name: Versions Compatibility Test
|
||||||
|
run: |
|
||||||
|
make -C tests versionsTest
|
||||||
|
|
||||||
# This test currently fails on Github Actions specifically.
|
clangbuild:
|
||||||
# Possible reason : TTY emulation.
|
runs-on: ubuntu-latest
|
||||||
# Note that the same test works fine locally and on travisCI.
|
steps:
|
||||||
# This will have to be fixed before transferring the test to GA.
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
# versions-compatibility:
|
- name: make clangbuild
|
||||||
# runs-on: ubuntu-latest
|
run: |
|
||||||
# steps:
|
make clangbuild
|
||||||
# - uses: actions/checkout@v3
|
|
||||||
# - name: Versions Compatibility Test
|
clang-pgo:
|
||||||
# run: |
|
runs-on: ubuntu-latest
|
||||||
# make -C tests versionsTest
|
steps:
|
||||||
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
|
- name: Build PGO Zstd with Clang
|
||||||
|
env:
|
||||||
|
CC: clang-14
|
||||||
|
LLVM_PROFDATA: llvm-profdata-14
|
||||||
|
run: |
|
||||||
|
make -C programs zstd-pgo
|
||||||
|
./programs/zstd -b
|
||||||
|
|
||||||
|
gcc-pgo:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
|
- name: Build PGO Zstd with GCC
|
||||||
|
env:
|
||||||
|
CC: gcc
|
||||||
|
run: |
|
||||||
|
make -C programs zstd-pgo
|
||||||
|
./programs/zstd -b
|
||||||
|
|
||||||
|
|
||||||
# For reference : icc tests
|
# For reference : icc tests
|
||||||
@ -463,7 +577,7 @@ jobs:
|
|||||||
# sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
|
# sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
|
||||||
# sudo apt-get update
|
# sudo apt-get update
|
||||||
# sudo apt-get install -y intel-basekit intel-hpckit
|
# sudo apt-get install -y intel-basekit intel-hpckit
|
||||||
# - uses: actions/checkout@v3
|
# - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
# - name: make check
|
# - name: make check
|
||||||
# run: |
|
# run: |
|
||||||
# make CC=/opt/intel/oneapi/compiler/latest/linux/bin/intel64/icc check
|
# make CC=/opt/intel/oneapi/compiler/latest/linux/bin/intel64/icc check
|
||||||
|
@ -19,7 +19,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
|
|
||||||
- name: Archive
|
- name: Archive
|
||||||
env:
|
env:
|
||||||
|
8
.github/workflows/scorecards.yml
vendored
8
.github/workflows/scorecards.yml
vendored
@ -27,12 +27,12 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout code"
|
- name: "Checkout code"
|
||||||
uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # tag=v3.0.0
|
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: "Run analysis"
|
- name: "Run analysis"
|
||||||
uses: ossf/scorecard-action@99c53751e09b9529366343771cc321ec74e9bd3d # tag=v2.0.6
|
uses: ossf/scorecard-action@e38b1902ae4f44df626f11ba0734b14fb91f8f86 # tag=v2.1.2
|
||||||
with:
|
with:
|
||||||
results_file: results.sarif
|
results_file: results.sarif
|
||||||
results_format: sarif
|
results_format: sarif
|
||||||
@ -51,7 +51,7 @@ jobs:
|
|||||||
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
|
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
|
||||||
# format to the repository Actions tab.
|
# format to the repository Actions tab.
|
||||||
- name: "Upload artifact"
|
- name: "Upload artifact"
|
||||||
uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # tag=v3.0.0
|
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # tag=v3.1.2
|
||||||
with:
|
with:
|
||||||
name: SARIF file
|
name: SARIF file
|
||||||
path: results.sarif
|
path: results.sarif
|
||||||
@ -59,6 +59,6 @@ jobs:
|
|||||||
|
|
||||||
# Upload the results to GitHub's code scanning dashboard.
|
# Upload the results to GitHub's code scanning dashboard.
|
||||||
- name: "Upload to code-scanning"
|
- name: "Upload to code-scanning"
|
||||||
uses: github/codeql-action/upload-sarif@5f532563584d71fdef14ee64d17bafb34f751ce5 # tag=v1.0.26
|
uses: github/codeql-action/upload-sarif@3ebbd71c74ef574dbc558c82f70e52732c8b44fe # tag=v2.2.1
|
||||||
with:
|
with:
|
||||||
sarif_file: results.sarif
|
sarif_file: results.sarif
|
||||||
|
73
CHANGELOG
73
CHANGELOG
@ -1,37 +1,62 @@
|
|||||||
v1.5.3 (June, 2022)
|
v1.5.4 (Feb 2023)
|
||||||
perf: 5-30% faster dictionary compression at levels 1-4 (#3086, #3114, #3152, @embg)
|
perf: +20% faster huffman decompression for targets that can't compile x64 assembly (#3449, @terrelln)
|
||||||
perf: 5-10% faster streaming compression at levels 1-2 (#3114, @embg)
|
perf: up to +10% faster streaming compression at levels 1-2 (#3114, @embg)
|
||||||
perf: Remove branch in ZSTD_fast_noDict (#3129, @felixhandte)
|
perf: +4-13% for levels 5-12 by optimizing function generation (#3295, @terrelln)
|
||||||
perf: Add option to prefetch CDict tables (#3177, @embg)
|
pref: +3-11% compression speed for `arm` target (#3199, #3164, #3145, #3141, #3138, @JunHe77 and #3139, #3160, @danlark1)
|
||||||
perf: Minor compression ratio improvement (#2983, @Cyan4973)
|
perf: +5-30% faster dictionary compression at levels 1-4 (#3086, #3114, #3152, @embg)
|
||||||
perf: Minor speed improvement for Huffman decoding (#3013, @WojciechMula)
|
perf: +10-20% cold dict compression speed by prefetching CDict tables (#3177, @embg)
|
||||||
perf: Enable STATIC_BMI2 for gcc/clang (#3080, @TocarIP)
|
perf: +1% faster compression by removing a branch in ZSTD_fast_noDict (#3129, @felixhandte)
|
||||||
perf: Optimize ZSTD_row_getMatchMask for ARM levels 8-10 (#3139, #3160, @danlark1)
|
perf: Small compression ratio improvements in high compression mode (#2983, #3391, @Cyan4973 and #3285, #3302, @daniellerozenblit)
|
||||||
perf: aarch64 performance improvements (#3145, #3141, @JunHe77)
|
perf: small speed improvement by better detecting `STATIC_BMI2` for `clang` (#3080, @TocarIP)
|
||||||
perf: Lazy parameters adaptation (#2974, @Cyan4973)
|
perf: Improved streaming performance when `ZSTD_c_stableInBuffer` is set (#2974, @Cyan4973)
|
||||||
cli: Async write for decompression (#2975, @yoniko)
|
cli: Asynchronous I/O for improved cli speed (#2975, #2985, #3021, #3022, @yoniko)
|
||||||
cli: Use buffered output (#2985, @yoniko)
|
cli: Change `zstdless` behavior to align with `zless` (#2909, @binhdvo)
|
||||||
cli: Change zstdless behavior to align with zless (#2909, @binhdvo)
|
cli: Keep original file if `-c` or `--stdout` is given (#3052, @dirkmueller)
|
||||||
cli: AsyncIO compression (#3021, #3022, @yoniko)
|
cli: Keep original files when result is concatenated into a single output with `-o` (#3450, @Cyan4973)
|
||||||
cli: Print zlib/lz4/lzma library versions in verbose version output (#3030, @terrelln)
|
cli: Preserve Permissions and Ownership of regular files (#3432, @felixhandte)
|
||||||
cli: Fix for -r on empty directory (#3027, @brailovich)
|
cli: Print zlib/lz4/lzma library versions with `-vv` (#3030, @terrelln)
|
||||||
cli: Fix required decompression memory usage reported by -vv + --long (#3042, @u1f35c)
|
cli: Print checksum value for single frame files with `-lv` (#3332, @Cyan4973)
|
||||||
|
cli: Print `dictID` when present with `-lv` (#3184, @htnhan)
|
||||||
|
cli: when `stderr` is *not* the console, disable status updates, but preserve final summary (#3458, @Cyan4973)
|
||||||
|
cli: support `--best` and `--no-name` in `gzip` compatibility mode (#3059, @dirkmueller)
|
||||||
|
cli: support for `posix` high resolution timer `clock_gettime()`, for improved benchmark accuracy (#3423, @Cyan4973)
|
||||||
|
cli: improved help/usage (`-h`, `-H`) formatting (#3094, @dirkmueller and #3385, @jonpalmisc)
|
||||||
|
cli: Fix better handling of bogus numeric values (#3268, @ctkhanhly)
|
||||||
|
cli: Fix input consists of multiple files _and_ `stdin` (#3222, @yoniko)
|
||||||
|
cli: Fix tiny files passthrough (#3215, @cgbur)
|
||||||
|
cli: Fix for `-r` on empty directory (#3027, @brailovich)
|
||||||
|
cli: Fix empty string as argument for `--output-dir-*` (#3220, @embg)
|
||||||
|
cli: Fix decompression memory usage reported by `-vv --long` (#3042, @u1f35c, and #3232, @zengyijing)
|
||||||
cli: Fix infinite loop when empty input is passed to trainer (#3081, @terrelln)
|
cli: Fix infinite loop when empty input is passed to trainer (#3081, @terrelln)
|
||||||
cli: Implement more gzip compatibility (#3059, @dirkmueller)
|
cli: Fix `--adapt` doesn't work when `--no-progress` is also set (#3354, @terrelln)
|
||||||
cli: Keep original file if -c or --stdout is given (#3052, @dirkmueller)
|
api: Support for External matchfinder (#3333, @embg)
|
||||||
|
api: Support for in-place decompression (#3432, @terrelln)
|
||||||
|
api: New `ZSTD_CCtx_setCParams()` function, set all parameters defined in a `ZSTD_compressionParameters` structure (#3403, @Cyan4973)
|
||||||
|
api: Streaming decompression detects incorrect header ID sooner (#3175, @Cyan4973)
|
||||||
|
api: Window size resizing optimization for edge case (#3345, @daniellerozenblit)
|
||||||
|
api: More accurate error codes for busy-loop scenarios (#3413, #3455, @Cyan4973)
|
||||||
|
api: Fix limit overflow in `compressBound` and `decompressBound` (#3362, #3373, Cyan4973) reported by @nigeltao
|
||||||
|
api: Deprecate several advanced experimental functions: streaming (#3408, @embg), copy (#3196, @mileshu)
|
||||||
|
bug: Fix corruption that rarely occurs in 32-bit mode with wlog=25 (#3361, @terrelln)
|
||||||
bug: Fix for block-splitter (#3033, @Cyan4973)
|
bug: Fix for block-splitter (#3033, @Cyan4973)
|
||||||
bug: Fixes for Sequence Compression API (#3023, #3040, @Cyan4973)
|
bug: Fixes for Sequence Compression API (#3023, #3040, @Cyan4973)
|
||||||
bug: Fix leaking thread handles on Windows (#3147, @animalize)
|
bug: Fix leaking thread handles on Windows (#3147, @animalize)
|
||||||
bug: Fix timing issues with cmake/meson builds (#3166, #3167, #3170, @Cyan4973)
|
bug: Fix timing issues with cmake/meson builds (#3166, #3167, #3170, @Cyan4973)
|
||||||
build: Allow user to select legacy level for cmake (#3050, @shadchin)
|
build: Allow user to select legacy level for cmake (#3050, @shadchin)
|
||||||
build: Enable legacy support by default in cmake (#3079, @niamster)
|
build: Enable legacy support by default in cmake (#3079, @niamster)
|
||||||
build: Meson improvements (#3039, #3122, @eli-schwartz)
|
build: Meson build script improvements (#3039, #3120, #3122, #3327, #3357, @eli-schwartz and #3276, @neheb)
|
||||||
build: Add aarch64 to supported architectures for zstd_trace (#3054, @ooosssososos)
|
build: Add aarch64 to supported architectures for zstd_trace (#3054, @ooosssososos)
|
||||||
doc: Split help in long and short version, cleanup formatting (#3094, @dirkmueller)
|
build: support AIX architecture (#3219, @qiongsiwu)
|
||||||
doc: Updated man page, providing more details for --train mode (#3112, @Cyan4973)
|
build: Fix `ZSTD_LIB_MINIFY` build macro, which now reduces static library size by half (#3366, @terrelln)
|
||||||
|
build: Fix Windows issues with Multithreading translation layer (#3364, #3380, @yoniko) and ARM64 target (#3320, @cwoffenden)
|
||||||
|
build: Fix `cmake` script (#3382, #3392, @terrelln and #3252 @Tachi107 and #3167 @Cyan4973)
|
||||||
|
doc: Updated man page, providing more details for `--train` mode (#3112, @Cyan4973)
|
||||||
doc: Add decompressor errata document (#3092, @terrelln)
|
doc: Add decompressor errata document (#3092, @terrelln)
|
||||||
misc: Enable Intel CET (#2992, #2994, @hjl-tools)
|
misc: Enable Intel CET (#2992, #2994, @hjl-tools)
|
||||||
misc: Streaming decompression can detect incorrect header ID sooner (#3175, @Cyan4973)
|
misc: Fix `contrib/` seekable format (#3058, @yhoogstrate and #3346, @daniellerozenblit)
|
||||||
|
misc: Improve speed of the one-file library generator (#3241, @wahern and #3005, @cwoffenden)
|
||||||
|
|
||||||
|
v1.5.3 (dev version, unpublished)
|
||||||
|
|
||||||
v1.5.2 (Jan, 2022)
|
v1.5.2 (Jan, 2022)
|
||||||
perf: Regain Minimal memset()-ing During Reuse of Compression Contexts (@Cyan4973, #2969)
|
perf: Regain Minimal memset()-ing During Reuse of Compression Contexts (@Cyan4973, #2969)
|
||||||
|
8
LICENSE
8
LICENSE
@ -2,7 +2,7 @@ BSD License
|
|||||||
|
|
||||||
For Zstandard software
|
For Zstandard software
|
||||||
|
|
||||||
Copyright (c) 2016-present, Facebook, Inc. All rights reserved.
|
Copyright (c) Meta Platforms, Inc. and affiliates. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
are permitted provided that the following conditions are met:
|
are permitted provided that the following conditions are met:
|
||||||
@ -14,9 +14,9 @@ are permitted provided that the following conditions are met:
|
|||||||
this list of conditions and the following disclaimer in the documentation
|
this list of conditions and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
* Neither the name Facebook nor the names of its contributors may be used to
|
* Neither the name Facebook, nor Meta, nor the names of its contributors may
|
||||||
endorse or promote products derived from this software without specific
|
be used to endorse or promote products derived from this software without
|
||||||
prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
6
Makefile
6
Makefile
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) 2015-2021, Yann Collet, Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
@ -123,6 +123,7 @@ contrib: lib
|
|||||||
$(MAKE) -C contrib/seekable_format/examples all
|
$(MAKE) -C contrib/seekable_format/examples all
|
||||||
$(MAKE) -C contrib/seekable_format/tests test
|
$(MAKE) -C contrib/seekable_format/tests test
|
||||||
$(MAKE) -C contrib/largeNbDicts all
|
$(MAKE) -C contrib/largeNbDicts all
|
||||||
|
$(MAKE) -C contrib/externalMatchfinder all
|
||||||
cd build/single_file_libs/ ; ./build_decoder_test.sh
|
cd build/single_file_libs/ ; ./build_decoder_test.sh
|
||||||
cd build/single_file_libs/ ; ./build_library_test.sh
|
cd build/single_file_libs/ ; ./build_library_test.sh
|
||||||
|
|
||||||
@ -142,6 +143,7 @@ clean:
|
|||||||
$(Q)$(MAKE) -C contrib/seekable_format/examples $@ > $(VOID)
|
$(Q)$(MAKE) -C contrib/seekable_format/examples $@ > $(VOID)
|
||||||
$(Q)$(MAKE) -C contrib/seekable_format/tests $@ > $(VOID)
|
$(Q)$(MAKE) -C contrib/seekable_format/tests $@ > $(VOID)
|
||||||
$(Q)$(MAKE) -C contrib/largeNbDicts $@ > $(VOID)
|
$(Q)$(MAKE) -C contrib/largeNbDicts $@ > $(VOID)
|
||||||
|
$(Q)$(MAKE) -C contrib/externalMatchfinder $@ > $(VOID)
|
||||||
$(Q)$(RM) zstd$(EXT) zstdmt$(EXT) tmp*
|
$(Q)$(RM) zstd$(EXT) zstdmt$(EXT) tmp*
|
||||||
$(Q)$(RM) -r lz4
|
$(Q)$(RM) -r lz4
|
||||||
@echo Cleaning completed
|
@echo Cleaning completed
|
||||||
@ -402,7 +404,7 @@ cmakebuild:
|
|||||||
|
|
||||||
c89build: clean
|
c89build: clean
|
||||||
$(CC) -v
|
$(CC) -v
|
||||||
CFLAGS="-std=c89 -Werror -O0" $(MAKE) allmost # will fail, due to missing support for `long long`
|
CFLAGS="-std=c89 -Werror -Wno-attributes -Wpedantic -Wno-long-long -Wno-variadic-macros -O0" $(MAKE) lib zstd
|
||||||
|
|
||||||
gnu90build: clean
|
gnu90build: clean
|
||||||
$(CC) -v
|
$(CC) -v
|
||||||
|
12
README.md
12
README.md
@ -8,7 +8,7 @@ Zstandard's format is stable and documented in [RFC8878](https://datatracker.iet
|
|||||||
This repository represents the reference implementation, provided as an open-source dual [BSD](LICENSE) and [GPLv2](COPYING) licensed **C** library,
|
This repository represents the reference implementation, provided as an open-source dual [BSD](LICENSE) and [GPLv2](COPYING) licensed **C** library,
|
||||||
and a command line utility producing and decoding `.zst`, `.gz`, `.xz` and `.lz4` files.
|
and a command line utility producing and decoding `.zst`, `.gz`, `.xz` and `.lz4` files.
|
||||||
Should your project require another programming language,
|
Should your project require another programming language,
|
||||||
a list of known ports and bindings is provided on [Zstandard homepage](http://www.zstd.net/#other-languages).
|
a list of known ports and bindings is provided on [Zstandard homepage](https://facebook.github.io/zstd/#other-languages).
|
||||||
|
|
||||||
**Development branch status:**
|
**Development branch status:**
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ compiled with [gcc] 9.3.0,
|
|||||||
on the [Silesia compression corpus].
|
on the [Silesia compression corpus].
|
||||||
|
|
||||||
[lzbench]: https://github.com/inikep/lzbench
|
[lzbench]: https://github.com/inikep/lzbench
|
||||||
[Silesia compression corpus]: http://sun.aei.polsl.pl/~sdeor/index.php?page=silesia
|
[Silesia compression corpus]: https://sun.aei.polsl.pl//~sdeor/index.php?page=silesia
|
||||||
[gcc]: https://gcc.gnu.org/
|
[gcc]: https://gcc.gnu.org/
|
||||||
|
|
||||||
| Compressor name | Ratio | Compression| Decompress.|
|
| Compressor name | Ratio | Compression| Decompress.|
|
||||||
@ -56,8 +56,8 @@ on the [Silesia compression corpus].
|
|||||||
| lzf 3.6 -1 | 2.077 | 410 MB/s | 830 MB/s |
|
| lzf 3.6 -1 | 2.077 | 410 MB/s | 830 MB/s |
|
||||||
| snappy 1.1.9 | 2.073 | 550 MB/s | 1750 MB/s |
|
| snappy 1.1.9 | 2.073 | 550 MB/s | 1750 MB/s |
|
||||||
|
|
||||||
[zlib]: http://www.zlib.net/
|
[zlib]: https://www.zlib.net/
|
||||||
[lz4]: http://www.lz4.org/
|
[lz4]: https://lz4.github.io/lz4/
|
||||||
|
|
||||||
The negative compression levels, specified with `--fast=#`,
|
The negative compression levels, specified with `--fast=#`,
|
||||||
offer faster compression and decompression speed
|
offer faster compression and decompression speed
|
||||||
@ -142,6 +142,10 @@ Other available options include:
|
|||||||
The `Makefile` follows the [GNU Standard Makefile conventions](https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html),
|
The `Makefile` follows the [GNU Standard Makefile conventions](https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html),
|
||||||
allowing staged install, standard flags, directory variables and command variables.
|
allowing staged install, standard flags, directory variables and command variables.
|
||||||
|
|
||||||
|
For advanced use cases, specialized compilation flags which control binary generation
|
||||||
|
are documented in [`lib/README.md`](lib/README.md#modular-build) for the `libzstd` library
|
||||||
|
and in [`programs/README.md`](programs/README.md#compilation-variables) for the `zstd` CLI.
|
||||||
|
|
||||||
### cmake
|
### cmake
|
||||||
|
|
||||||
A `cmake` project generator is provided within `build/cmake`.
|
A `cmake` project generator is provided within `build/cmake`.
|
||||||
|
@ -32,11 +32,11 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
BLOCK "040904B0"
|
BLOCK "040904B0"
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Yann Collet, Facebook, Inc."
|
VALUE "CompanyName", "Meta Platforms, Inc."
|
||||||
VALUE "FileDescription", "Zstandard - Fast and efficient compression algorithm"
|
VALUE "FileDescription", "Zstandard - Fast and efficient compression algorithm"
|
||||||
VALUE "FileVersion", ZSTD_VERSION_STRING
|
VALUE "FileVersion", ZSTD_VERSION_STRING
|
||||||
VALUE "InternalName", "libzstd.dll"
|
VALUE "InternalName", "libzstd.dll"
|
||||||
VALUE "LegalCopyright", "Copyright (c) 2013-present, Yann Collet, Facebook, Inc."
|
VALUE "LegalCopyright", "Copyright (c) Meta Platforms, Inc. and affiliates."
|
||||||
VALUE "OriginalFilename", "libzstd.dll"
|
VALUE "OriginalFilename", "libzstd.dll"
|
||||||
VALUE "ProductName", "Zstandard"
|
VALUE "ProductName", "Zstandard"
|
||||||
VALUE "ProductVersion", ZSTD_VERSION_STRING
|
VALUE "ProductVersion", ZSTD_VERSION_STRING
|
||||||
|
@ -32,11 +32,11 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
BLOCK "040904B0"
|
BLOCK "040904B0"
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Yann Collet, Facebook, Inc."
|
VALUE "CompanyName", "Meta Platforms, Inc."
|
||||||
VALUE "FileDescription", "Zstandard - Fast and efficient compression algorithm"
|
VALUE "FileDescription", "Zstandard - Fast and efficient compression algorithm"
|
||||||
VALUE "FileVersion", ZSTD_VERSION_STRING
|
VALUE "FileVersion", ZSTD_VERSION_STRING
|
||||||
VALUE "InternalName", "zstd.exe"
|
VALUE "InternalName", "zstd.exe"
|
||||||
VALUE "LegalCopyright", "Copyright (c) 2013-present, Yann Collet, Facebook, Inc."
|
VALUE "LegalCopyright", "Copyright (c) Meta Platforms, Inc. and affiliates."
|
||||||
VALUE "OriginalFilename", "zstd.exe"
|
VALUE "OriginalFilename", "zstd.exe"
|
||||||
VALUE "ProductName", "Zstandard"
|
VALUE "ProductName", "Zstandard"
|
||||||
VALUE "ProductVersion", ZSTD_VERSION_STRING
|
VALUE "ProductVersion", ZSTD_VERSION_STRING
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
@ -8,18 +8,18 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
|
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
|
||||||
|
|
||||||
# As of 2018-12-26 ZSTD has been validated to build with cmake version 3.13.2 new policies.
|
# As of 2018-12-26 ZSTD has been validated to build with cmake version 3.13.2 new policies.
|
||||||
# Set and use the newest cmake policies that are validated to work
|
# Set and use the newest cmake policies that are validated to work
|
||||||
set(ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION "3")
|
set(ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION "3")
|
||||||
set(ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION "13") #Policies never changed at PATCH level
|
set(ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION "13") #Policies never changed at PATCH level
|
||||||
if("${CMAKE_MAJOR_VERSION}" LESS 3)
|
if("${CMAKE_MAJOR_VERSION}" LESS 3)
|
||||||
set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
|
set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
|
||||||
elseif( "${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}" EQUAL "${CMAKE_MAJOR_VERSION}" AND
|
elseif( "${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}" EQUAL "${CMAKE_MAJOR_VERSION}" AND
|
||||||
"${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}" GREATER "${CMAKE_MINOR_VERSION}")
|
"${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}" GREATER "${CMAKE_MINOR_VERSION}")
|
||||||
set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
|
set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
|
||||||
else()
|
else()
|
||||||
set(ZSTD_CMAKE_POLICY_VERSION "${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}.${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}.0")
|
set(ZSTD_CMAKE_POLICY_VERSION "${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}.${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}.0")
|
||||||
endif()
|
endif()
|
||||||
cmake_policy(VERSION ${ZSTD_CMAKE_POLICY_VERSION})
|
cmake_policy(VERSION ${ZSTD_CMAKE_POLICY_VERSION})
|
||||||
|
|
||||||
@ -40,16 +40,18 @@ if( CMAKE_MAJOR_VERSION LESS 3 )
|
|||||||
set(PROJECT_VERSION_PATCH ${zstd_VERSION_PATCH})
|
set(PROJECT_VERSION_PATCH ${zstd_VERSION_PATCH})
|
||||||
set(PROJECT_VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}")
|
set(PROJECT_VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}")
|
||||||
enable_language(C) # Main library is in C
|
enable_language(C) # Main library is in C
|
||||||
|
enable_language(ASM) # And ASM
|
||||||
enable_language(CXX) # Testing contributed code also utilizes CXX
|
enable_language(CXX) # Testing contributed code also utilizes CXX
|
||||||
else()
|
else()
|
||||||
project(zstd
|
project(zstd
|
||||||
VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}"
|
VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}"
|
||||||
LANGUAGES C # Main library is in C
|
LANGUAGES C # Main library is in C
|
||||||
|
ASM # And ASM
|
||||||
CXX # Testing contributed code also utilizes CXX
|
CXX # Testing contributed code also utilizes CXX
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
message(STATUS "ZSTD VERSION: ${zstd_VERSION}")
|
message(STATUS "ZSTD VERSION: ${zstd_VERSION}")
|
||||||
set(zstd_HOMEPAGE_URL "http://www.zstd.net")
|
set(zstd_HOMEPAGE_URL "https://facebook.github.io/zstd")
|
||||||
set(zstd_DESCRIPTION "Zstandard is a real-time compression algorithm, providing high compression ratios.")
|
set(zstd_DESCRIPTION "Zstandard is a real-time compression algorithm, providing high compression ratios.")
|
||||||
|
|
||||||
# Set a default build type if none was specified
|
# Set a default build type if none was specified
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
include(CheckCXXCompilerFlag)
|
include(CheckCXXCompilerFlag)
|
||||||
include(CheckCCompilerFlag)
|
include(CheckCCompilerFlag)
|
||||||
|
include(CheckLinkerFlag)
|
||||||
|
|
||||||
function(EnableCompilerFlag _flag _C _CXX)
|
function(EnableCompilerFlag _flag _C _CXX _LD)
|
||||||
string(REGEX REPLACE "\\+" "PLUS" varname "${_flag}")
|
string(REGEX REPLACE "\\+" "PLUS" varname "${_flag}")
|
||||||
string(REGEX REPLACE "[^A-Za-z0-9]+" "_" varname "${varname}")
|
string(REGEX REPLACE "[^A-Za-z0-9]+" "_" varname "${varname}")
|
||||||
string(REGEX REPLACE "^_+" "" varname "${varname}")
|
string(REGEX REPLACE "^_+" "" varname "${varname}")
|
||||||
@ -18,6 +19,13 @@ function(EnableCompilerFlag _flag _C _CXX)
|
|||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}" PARENT_SCOPE)
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}" PARENT_SCOPE)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
if (_LD)
|
||||||
|
CHECK_LINKER_FLAG(C ${_flag} LD_FLAG_${varname})
|
||||||
|
if (LD_FLAG_${varname})
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${_flag}" PARENT_SCOPE)
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${_flag}" PARENT_SCOPE)
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
macro(ADD_ZSTD_COMPILATION_FLAGS)
|
macro(ADD_ZSTD_COMPILATION_FLAGS)
|
||||||
@ -30,33 +38,39 @@ macro(ADD_ZSTD_COMPILATION_FLAGS)
|
|||||||
# EnableCompilerFlag("-std=c99" true false) # Set C compiation to c99 standard
|
# EnableCompilerFlag("-std=c99" true false) # Set C compiation to c99 standard
|
||||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND MSVC)
|
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND MSVC)
|
||||||
# clang-cl normally maps -Wall to -Weverything.
|
# clang-cl normally maps -Wall to -Weverything.
|
||||||
EnableCompilerFlag("/clang:-Wall" true true)
|
EnableCompilerFlag("/clang:-Wall" true true false)
|
||||||
else ()
|
else ()
|
||||||
EnableCompilerFlag("-Wall" true true)
|
EnableCompilerFlag("-Wall" true true false)
|
||||||
endif ()
|
endif ()
|
||||||
EnableCompilerFlag("-Wextra" true true)
|
EnableCompilerFlag("-Wextra" true true false)
|
||||||
EnableCompilerFlag("-Wundef" true true)
|
EnableCompilerFlag("-Wundef" true true false)
|
||||||
EnableCompilerFlag("-Wshadow" true true)
|
EnableCompilerFlag("-Wshadow" true true false)
|
||||||
EnableCompilerFlag("-Wcast-align" true true)
|
EnableCompilerFlag("-Wcast-align" true true false)
|
||||||
EnableCompilerFlag("-Wcast-qual" true true)
|
EnableCompilerFlag("-Wcast-qual" true true false)
|
||||||
EnableCompilerFlag("-Wstrict-prototypes" true false)
|
EnableCompilerFlag("-Wstrict-prototypes" true false false)
|
||||||
# Enable asserts in Debug mode
|
# Enable asserts in Debug mode
|
||||||
if (CMAKE_BUILD_TYPE MATCHES "Debug")
|
if (CMAKE_BUILD_TYPE MATCHES "Debug")
|
||||||
EnableCompilerFlag("-DDEBUGLEVEL=1" true true)
|
EnableCompilerFlag("-DDEBUGLEVEL=1" true true false)
|
||||||
endif ()
|
endif ()
|
||||||
|
# Add noexecstack flags
|
||||||
|
# LDFLAGS
|
||||||
|
EnableCompilerFlag("-z noexecstack" false false true)
|
||||||
|
# CFLAGS & CXXFLAGS
|
||||||
|
EnableCompilerFlag("-Qunused-arguments" true true false)
|
||||||
|
EnableCompilerFlag("-Wa,--noexecstack" true true false)
|
||||||
elseif (MSVC) # Add specific compilation flags for Windows Visual
|
elseif (MSVC) # Add specific compilation flags for Windows Visual
|
||||||
|
|
||||||
set(ACTIVATE_MULTITHREADED_COMPILATION "ON" CACHE BOOL "activate multi-threaded compilation (/MP flag)")
|
set(ACTIVATE_MULTITHREADED_COMPILATION "ON" CACHE BOOL "activate multi-threaded compilation (/MP flag)")
|
||||||
if (CMAKE_GENERATOR MATCHES "Visual Studio" AND ACTIVATE_MULTITHREADED_COMPILATION)
|
if (CMAKE_GENERATOR MATCHES "Visual Studio" AND ACTIVATE_MULTITHREADED_COMPILATION)
|
||||||
EnableCompilerFlag("/MP" true true)
|
EnableCompilerFlag("/MP" true true false)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# UNICODE SUPPORT
|
# UNICODE SUPPORT
|
||||||
EnableCompilerFlag("/D_UNICODE" true true)
|
EnableCompilerFlag("/D_UNICODE" true true false)
|
||||||
EnableCompilerFlag("/DUNICODE" true true)
|
EnableCompilerFlag("/DUNICODE" true true false)
|
||||||
# Enable asserts in Debug mode
|
# Enable asserts in Debug mode
|
||||||
if (CMAKE_BUILD_TYPE MATCHES "Debug")
|
if (CMAKE_BUILD_TYPE MATCHES "Debug")
|
||||||
EnableCompilerFlag("/DDEBUGLEVEL=1" true true)
|
EnableCompilerFlag("/DDEBUGLEVEL=1" true true false)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) 2015-present, Yann Collet, Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) 2016-present, Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) 2015-present, Yann Collet, Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
@ -77,6 +77,12 @@ if (MSVC)
|
|||||||
set(PlatformDependResources ${MSVC_RESOURCE_DIR}/libzstd-dll.rc)
|
set(PlatformDependResources ${MSVC_RESOURCE_DIR}/libzstd-dll.rc)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
# Explicitly set the language to C for all files, including ASM files.
|
||||||
|
# Our assembly expects to be compiled by a C compiler, and is only enabled for
|
||||||
|
# __GNUC__ compatible compilers. Otherwise all the ASM code is disabled by
|
||||||
|
# macros.
|
||||||
|
set_source_files_properties(${Sources} PROPERTIES LANGUAGE C)
|
||||||
|
|
||||||
# Split project to static and shared libraries build
|
# Split project to static and shared libraries build
|
||||||
set(library_targets)
|
set(library_targets)
|
||||||
if (ZSTD_BUILD_SHARED)
|
if (ZSTD_BUILD_SHARED)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) 2015-present, Yann Collet, Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# zstd - Makefile
|
# zstd - Makefile
|
||||||
# Copyright (C) Yann Collet 2014-present
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# BSD license
|
# BSD license
|
||||||
@ -27,7 +27,7 @@
|
|||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#
|
#
|
||||||
# You can contact the author at :
|
# You can contact the author at :
|
||||||
# - zstd homepage : http://www.zstd.net/
|
# - zstd homepage : https://facebook.github.io/zstd/
|
||||||
# ################################################################
|
# ################################################################
|
||||||
|
|
||||||
project(tests)
|
project(tests)
|
||||||
@ -81,7 +81,7 @@ add_test(NAME fuzzer COMMAND fuzzer ${ZSTD_FUZZER_FLAGS})
|
|||||||
#
|
#
|
||||||
# zstreamtest
|
# zstreamtest
|
||||||
#
|
#
|
||||||
add_executable(zstreamtest ${PROGRAMS_DIR}/datagen.c ${PROGRAMS_DIR}/util.c ${PROGRAMS_DIR}/timefn.c ${TESTS_DIR}/seqgen.c ${TESTS_DIR}/zstreamtest.c)
|
add_executable(zstreamtest ${PROGRAMS_DIR}/datagen.c ${PROGRAMS_DIR}/util.c ${PROGRAMS_DIR}/timefn.c ${TESTS_DIR}/seqgen.c ${TESTS_DIR}/zstreamtest.c ${TESTS_DIR}/external_matchfinder.c)
|
||||||
if (NOT MSVC)
|
if (NOT MSVC)
|
||||||
target_compile_options(zstreamtest PRIVATE "-Wno-deprecated-declarations")
|
target_compile_options(zstreamtest PRIVATE "-Wno-deprecated-declarations")
|
||||||
endif()
|
endif()
|
||||||
@ -96,13 +96,14 @@ add_test(NAME zstreamtest COMMAND zstreamtest ${ZSTD_ZSTREAM_FLAGS})
|
|||||||
AddTestFlagsOption(ZSTD_PLAYTESTS_FLAGS "$ENV{PLAYTESTS_FLAGS}"
|
AddTestFlagsOption(ZSTD_PLAYTESTS_FLAGS "$ENV{PLAYTESTS_FLAGS}"
|
||||||
"Semicolon-separated list of flags to pass to the playTests.sh test")
|
"Semicolon-separated list of flags to pass to the playTests.sh test")
|
||||||
add_test(NAME playTests COMMAND sh -c "\"${TESTS_DIR}/playTests.sh\" ${ZSTD_PLAYTESTS_FLAGS}")
|
add_test(NAME playTests COMMAND sh -c "\"${TESTS_DIR}/playTests.sh\" ${ZSTD_PLAYTESTS_FLAGS}")
|
||||||
if (ZSTD_BUILD_PROGRAMS)
|
find_program(UNAME uname) # Run script only in unix shell environments
|
||||||
|
if (ZSTD_BUILD_PROGRAMS AND UNAME)
|
||||||
set_property(TEST playTests APPEND PROPERTY ENVIRONMENT
|
set_property(TEST playTests APPEND PROPERTY ENVIRONMENT
|
||||||
"ZSTD_BIN=$<TARGET_FILE:zstd>"
|
"ZSTD_BIN=$<TARGET_FILE:zstd>"
|
||||||
"DATAGEN_BIN=$<TARGET_FILE:datagen>"
|
"DATAGEN_BIN=$<TARGET_FILE:datagen>"
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
message(STATUS "Disabling playTests.sh test because ZSTD_BUILD_PROGRAMS is not enabled")
|
message(STATUS "Disabling playTests.sh test because requirements not met")
|
||||||
set_tests_properties(playTests PROPERTIES DISABLED YES)
|
set_tests_properties(playTests PROPERTIES DISABLED YES)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -18,7 +18,8 @@ pzstd_sources = [join_paths(zstd_rootdir, 'programs/util.c'),
|
|||||||
join_paths(zstd_rootdir, 'contrib/pzstd/SkippableFrame.cpp')]
|
join_paths(zstd_rootdir, 'contrib/pzstd/SkippableFrame.cpp')]
|
||||||
pzstd = executable('pzstd',
|
pzstd = executable('pzstd',
|
||||||
pzstd_sources,
|
pzstd_sources,
|
||||||
cpp_args: [ '-DNDEBUG', '-Wno-shadow', '-Wno-deprecated-declarations' ],
|
cpp_args: pzstd_warning_flags,
|
||||||
include_directories: pzstd_includes,
|
include_directories: pzstd_includes,
|
||||||
dependencies: [ libzstd_dep, thread_dep ],
|
dependencies: [ libzstd_dep, thread_dep ],
|
||||||
|
override_options: ['b_ndebug=true'],
|
||||||
install: true)
|
install: true)
|
||||||
|
@ -160,7 +160,7 @@ pkgconfig.generate(libzstd,
|
|||||||
filebase: 'libzstd',
|
filebase: 'libzstd',
|
||||||
description: 'fast lossless compression algorithm library',
|
description: 'fast lossless compression algorithm library',
|
||||||
version: zstd_libversion,
|
version: zstd_libversion,
|
||||||
url: 'http://www.zstd.net/')
|
url: 'https://facebook.github.io/zstd/')
|
||||||
|
|
||||||
install_headers(join_paths(zstd_rootdir, 'lib/zstd.h'),
|
install_headers(join_paths(zstd_rootdir, 'lib/zstd.h'),
|
||||||
join_paths(zstd_rootdir, 'lib/zdict.h'),
|
join_paths(zstd_rootdir, 'lib/zdict.h'),
|
||||||
|
@ -26,7 +26,7 @@ project('zstd',
|
|||||||
version: run_command(
|
version: run_command(
|
||||||
find_program('GetZstdLibraryVersion.py'), '../../lib/zstd.h',
|
find_program('GetZstdLibraryVersion.py'), '../../lib/zstd.h',
|
||||||
check: true).stdout().strip(),
|
check: true).stdout().strip(),
|
||||||
meson_version: '>=0.48.0')
|
meson_version: '>=0.50.0')
|
||||||
|
|
||||||
cc = meson.get_compiler('c')
|
cc = meson.get_compiler('c')
|
||||||
cxx = meson.get_compiler('cpp')
|
cxx = meson.get_compiler('cpp')
|
||||||
@ -104,8 +104,10 @@ use_lz4 = lz4_dep.found()
|
|||||||
|
|
||||||
add_project_arguments('-DXXH_NAMESPACE=ZSTD_', language: ['c'])
|
add_project_arguments('-DXXH_NAMESPACE=ZSTD_', language: ['c'])
|
||||||
|
|
||||||
|
pzstd_warning_flags = []
|
||||||
if [compiler_gcc, compiler_clang].contains(cc_id)
|
if [compiler_gcc, compiler_clang].contains(cc_id)
|
||||||
common_warning_flags = [ '-Wundef', '-Wshadow', '-Wcast-align', '-Wcast-qual' ]
|
common_warning_flags = [ '-Wundef', '-Wshadow', '-Wcast-align', '-Wcast-qual' ]
|
||||||
|
pzstd_warning_flags = ['-Wno-shadow', '-Wno-deprecated-declarations']
|
||||||
if cc_id == compiler_clang
|
if cc_id == compiler_clang
|
||||||
common_warning_flags += ['-Wconversion', '-Wno-sign-conversion', '-Wdocumentation']
|
common_warning_flags += ['-Wconversion', '-Wno-sign-conversion', '-Wdocumentation']
|
||||||
endif
|
endif
|
||||||
|
@ -14,7 +14,7 @@ option('legacy_level', type: 'integer', min: 0, max: 7, value: 5,
|
|||||||
description: 'Support any legacy format: 7 to 1 for v0.7+ to v0.1+')
|
description: 'Support any legacy format: 7 to 1 for v0.7+ to v0.1+')
|
||||||
option('debug_level', type: 'integer', min: 0, max: 9, value: 1,
|
option('debug_level', type: 'integer', min: 0, max: 9, value: 1,
|
||||||
description: 'Enable run-time debug. See lib/common/debug.h')
|
description: 'Enable run-time debug. See lib/common/debug.h')
|
||||||
option('backtrace', type: 'boolean', value: false,
|
option('backtrace', type: 'feature', value: 'disabled',
|
||||||
description: 'Display a stack backtrace when execution generates a runtime exception')
|
description: 'Display a stack backtrace when execution generates a runtime exception')
|
||||||
option('static_runtime', type: 'boolean', value: false,
|
option('static_runtime', type: 'boolean', value: false,
|
||||||
description: 'Link to static run-time libraries on MSVC')
|
description: 'Link to static run-time libraries on MSVC')
|
||||||
|
@ -51,7 +51,8 @@ endif
|
|||||||
|
|
||||||
export_dynamic_on_windows = false
|
export_dynamic_on_windows = false
|
||||||
# explicit backtrace enable/disable for Linux & Darwin
|
# explicit backtrace enable/disable for Linux & Darwin
|
||||||
if not use_backtrace
|
have_execinfo = cc.has_header('execinfo.h', required: use_backtrace)
|
||||||
|
if not have_execinfo
|
||||||
zstd_c_args += '-DBACKTRACE_ENABLE=0'
|
zstd_c_args += '-DBACKTRACE_ENABLE=0'
|
||||||
elif use_debug and host_machine_os == os_windows # MinGW target
|
elif use_debug and host_machine_os == os_windows # MinGW target
|
||||||
zstd_c_args += '-DBACKTRACE_ENABLE=1'
|
zstd_c_args += '-DBACKTRACE_ENABLE=1'
|
||||||
|
@ -21,7 +21,6 @@ FUZZER_FLAGS = ['--no-big-tests']
|
|||||||
FUZZERTEST = '-T200s'
|
FUZZERTEST = '-T200s'
|
||||||
ZSTREAM_TESTTIME = '-T90s'
|
ZSTREAM_TESTTIME = '-T90s'
|
||||||
DECODECORPUS_TESTTIME = '-T30'
|
DECODECORPUS_TESTTIME = '-T30'
|
||||||
ZSTDRTTEST = ['--test-large-data']
|
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# Executables
|
# Executables
|
||||||
@ -66,8 +65,10 @@ fuzzer = executable('fuzzer',
|
|||||||
dependencies: [ testcommon_dep, thread_dep ],
|
dependencies: [ testcommon_dep, thread_dep ],
|
||||||
install: false)
|
install: false)
|
||||||
|
|
||||||
zstreamtest_sources = [join_paths(zstd_rootdir, 'tests/seqgen.c'),
|
zstreamtest_sources = [
|
||||||
join_paths(zstd_rootdir, 'tests/zstreamtest.c')]
|
join_paths(zstd_rootdir, 'tests/seqgen.c'),
|
||||||
|
join_paths(zstd_rootdir, 'tests/zstreamtest.c'),
|
||||||
|
join_paths(zstd_rootdir, 'tests/external_matchfinder.c')]
|
||||||
zstreamtest = executable('zstreamtest',
|
zstreamtest = executable('zstreamtest',
|
||||||
zstreamtest_sources,
|
zstreamtest_sources,
|
||||||
include_directories: test_includes,
|
include_directories: test_includes,
|
||||||
@ -134,24 +135,38 @@ checkTag = executable('checkTag',
|
|||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
if tests_supported_oses.contains(host_machine_os)
|
if tests_supported_oses.contains(host_machine_os)
|
||||||
valgrind_prog = find_program('valgrind', ['/usr/bin/valgrind'], required: true)
|
valgrind_prog = find_program('valgrind', ['/usr/bin/valgrind'], required: false)
|
||||||
valgrindTest_py = files('valgrindTest.py')
|
valgrindTest_py = files('valgrindTest.py')
|
||||||
test('valgrindTest',
|
if valgrind_prog.found()
|
||||||
valgrindTest_py,
|
test('valgrindTest',
|
||||||
args: [valgrind_prog.path(), zstd, datagen, fuzzer, fullbench],
|
valgrindTest_py,
|
||||||
depends: [zstd, datagen, fuzzer, fullbench],
|
args: [valgrind_prog.path(), zstd, datagen, fuzzer, fullbench],
|
||||||
timeout: 600) # Timeout should work on HDD drive
|
depends: [zstd, datagen, fuzzer, fullbench],
|
||||||
|
timeout: 600) # Timeout should work on HDD drive
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if host_machine_os != os_windows
|
if host_machine_os != os_windows
|
||||||
playTests_sh = find_program(join_paths(zstd_rootdir, 'tests/playTests.sh'), required: true)
|
playTests_sh = find_program(join_paths(zstd_rootdir, 'tests/playTests.sh'), required: true)
|
||||||
test('test-zstd',
|
|
||||||
playTests_sh,
|
# add slow tests only if the meson version is new enough to support
|
||||||
args: ZSTDRTTEST,
|
# test setups with default-excluded suites
|
||||||
env: ['ZSTD_BIN=' + zstd.full_path(), 'DATAGEN_BIN=./datagen'],
|
if meson.version().version_compare('>=0.57.0')
|
||||||
depends: [datagen],
|
matrix = {'fast': [], 'slow': ['--test-large-data']}
|
||||||
workdir: meson.current_build_dir(),
|
else
|
||||||
timeout: 2800) # Timeout should work on HDD drive
|
matrix = {'fast': []}
|
||||||
|
endif
|
||||||
|
|
||||||
|
foreach suite, opt: matrix
|
||||||
|
test('test-zstd-'+suite,
|
||||||
|
playTests_sh,
|
||||||
|
args: opt,
|
||||||
|
env: ['ZSTD_BIN=' + zstd.full_path(), 'DATAGEN_BIN=./datagen'],
|
||||||
|
depends: [datagen],
|
||||||
|
suite: suite,
|
||||||
|
workdir: meson.current_build_dir(),
|
||||||
|
timeout: 2800) # Timeout should work on HDD drive
|
||||||
|
endforeach
|
||||||
endif
|
endif
|
||||||
|
|
||||||
test('test-fullbench-1',
|
test('test-fullbench-1',
|
||||||
@ -190,3 +205,11 @@ test('test-decodecorpus',
|
|||||||
args: ['-t', DECODECORPUS_TESTTIME],
|
args: ['-t', DECODECORPUS_TESTTIME],
|
||||||
timeout: 60)
|
timeout: 60)
|
||||||
test('test-poolTests', poolTests) # should be fast
|
test('test-poolTests', poolTests) # should be fast
|
||||||
|
|
||||||
|
if meson.version().version_compare('>=0.57.0')
|
||||||
|
add_test_setup('fast',
|
||||||
|
is_default: true,
|
||||||
|
exclude_suites: ['slow'])
|
||||||
|
add_test_setup('slow',
|
||||||
|
exclude_suites: ['fast'])
|
||||||
|
endif
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
* \endcode
|
* \endcode
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
* \endcode
|
* \endcode
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) 2019-present, Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2019-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
2
contrib/externalMatchfinder/.gitignore
vendored
Normal file
2
contrib/externalMatchfinder/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# build artifacts
|
||||||
|
externalMatchfinder
|
40
contrib/externalMatchfinder/Makefile
Normal file
40
contrib/externalMatchfinder/Makefile
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# ################################################################
|
||||||
|
# Copyright (c) Yann Collet, Meta Platforms, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
|
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||||
|
# in the COPYING file in the root directory of this source tree).
|
||||||
|
# ################################################################
|
||||||
|
|
||||||
|
PROGDIR = ../../programs
|
||||||
|
LIBDIR = ../../lib
|
||||||
|
|
||||||
|
LIBZSTD = $(LIBDIR)/libzstd.a
|
||||||
|
|
||||||
|
CPPFLAGS+= -I$(LIBDIR) -I$(LIBDIR)/compress -I$(LIBDIR)/common
|
||||||
|
|
||||||
|
CFLAGS ?= -O3
|
||||||
|
CFLAGS += -std=gnu99
|
||||||
|
DEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
|
||||||
|
-Wstrict-aliasing=1 -Wswitch-enum \
|
||||||
|
-Wstrict-prototypes -Wundef -Wpointer-arith \
|
||||||
|
-Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
|
||||||
|
-Wredundant-decls
|
||||||
|
CFLAGS += $(DEBUGFLAGS) $(MOREFLAGS)
|
||||||
|
|
||||||
|
default: externalMatchfinder
|
||||||
|
|
||||||
|
all: externalMatchfinder
|
||||||
|
|
||||||
|
externalMatchfinder: matchfinder.c main.c $(LIBZSTD)
|
||||||
|
$(CC) $(CPPFLAGS) $(CFLAGS) $^ $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
.PHONY: $(LIBZSTD)
|
||||||
|
$(LIBZSTD):
|
||||||
|
$(MAKE) -C $(LIBDIR) libzstd.a CFLAGS="$(CFLAGS)"
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(RM) *.o
|
||||||
|
$(MAKE) -C $(LIBDIR) clean > /dev/null
|
||||||
|
$(RM) externalMatchfinder
|
14
contrib/externalMatchfinder/README.md
Normal file
14
contrib/externalMatchfinder/README.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
externalMatchfinder
|
||||||
|
=====================
|
||||||
|
|
||||||
|
`externalMatchfinder` is a test tool for the external matchfinder API.
|
||||||
|
It demonstrates how to use the API to perform a simple round-trip test.
|
||||||
|
|
||||||
|
A sample matchfinder is provided in matchfinder.c, but the user can swap
|
||||||
|
this out with a different one if desired. The sample matchfinder implements
|
||||||
|
LZ compression with a 1KB hashtable. Dictionary compression is not currently supported.
|
||||||
|
|
||||||
|
Command line :
|
||||||
|
```
|
||||||
|
externalMatchfinder filename
|
||||||
|
```
|
107
contrib/externalMatchfinder/main.c
Normal file
107
contrib/externalMatchfinder/main.c
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Yann Collet, Meta Platforms, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||||
|
* in the COPYING file in the root directory of this source tree).
|
||||||
|
* You may select, at your option, one of the above-listed licenses.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
#define ZSTD_STATIC_LINKING_ONLY
|
||||||
|
#include "zstd.h"
|
||||||
|
#include "zstd_errors.h"
|
||||||
|
#include "matchfinder.h" // simpleExternalMatchFinder
|
||||||
|
|
||||||
|
#define CHECK(res) \
|
||||||
|
do { \
|
||||||
|
if (ZSTD_isError(res)) { \
|
||||||
|
printf("ERROR: %s\n", ZSTD_getErrorName(res)); \
|
||||||
|
return 1; \
|
||||||
|
} \
|
||||||
|
} while (0) \
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
if (argc != 2) {
|
||||||
|
printf("Usage: exampleMatchfinder <file>\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ZSTD_CCtx* const zc = ZSTD_createCCtx();
|
||||||
|
|
||||||
|
int simpleExternalMatchState = 0xdeadbeef;
|
||||||
|
|
||||||
|
// Here is the crucial bit of code!
|
||||||
|
ZSTD_registerExternalMatchFinder(
|
||||||
|
zc,
|
||||||
|
&simpleExternalMatchState,
|
||||||
|
simpleExternalMatchFinder
|
||||||
|
);
|
||||||
|
|
||||||
|
{
|
||||||
|
size_t const res = ZSTD_CCtx_setParameter(zc, ZSTD_c_enableMatchFinderFallback, 1);
|
||||||
|
CHECK(res);
|
||||||
|
}
|
||||||
|
|
||||||
|
FILE *f = fopen(argv[1], "rb");
|
||||||
|
assert(f);
|
||||||
|
{
|
||||||
|
int const ret = fseek(f, 0, SEEK_END);
|
||||||
|
assert(ret == 0);
|
||||||
|
}
|
||||||
|
size_t const srcSize = ftell(f);
|
||||||
|
{
|
||||||
|
int const ret = fseek(f, 0, SEEK_SET);
|
||||||
|
assert(ret == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
char* const src = malloc(srcSize + 1);
|
||||||
|
assert(src);
|
||||||
|
{
|
||||||
|
size_t const ret = fread(src, srcSize, 1, f);
|
||||||
|
assert(ret == 1);
|
||||||
|
int const ret2 = fclose(f);
|
||||||
|
assert(ret2 == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t const dstSize = ZSTD_compressBound(srcSize);
|
||||||
|
char* const dst = malloc(dstSize);
|
||||||
|
assert(dst);
|
||||||
|
|
||||||
|
size_t const cSize = ZSTD_compress2(zc, dst, dstSize, src, srcSize);
|
||||||
|
CHECK(cSize);
|
||||||
|
|
||||||
|
char* const val = malloc(srcSize);
|
||||||
|
assert(val);
|
||||||
|
|
||||||
|
{
|
||||||
|
size_t const res = ZSTD_decompress(val, srcSize, dst, cSize);
|
||||||
|
CHECK(res);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (memcmp(src, val, srcSize) == 0) {
|
||||||
|
printf("Compression and decompression were successful!\n");
|
||||||
|
printf("Original size: %lu\n", srcSize);
|
||||||
|
printf("Compressed size: %lu\n", cSize);
|
||||||
|
} else {
|
||||||
|
printf("ERROR: input and validation buffers don't match!\n");
|
||||||
|
for (size_t i = 0; i < srcSize; i++) {
|
||||||
|
if (src[i] != val[i]) {
|
||||||
|
printf("First bad index: %zu\n", i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ZSTD_freeCCtx(zc);
|
||||||
|
free(src);
|
||||||
|
free(dst);
|
||||||
|
free(val);
|
||||||
|
return 0;
|
||||||
|
}
|
80
contrib/externalMatchfinder/matchfinder.c
Normal file
80
contrib/externalMatchfinder/matchfinder.c
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Yann Collet, Meta Platforms, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||||
|
* in the COPYING file in the root directory of this source tree).
|
||||||
|
* You may select, at your option, one of the above-listed licenses.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "zstd_compress_internal.h"
|
||||||
|
#include "matchfinder.h"
|
||||||
|
|
||||||
|
#define HSIZE 1024
|
||||||
|
static U32 const HLOG = 10;
|
||||||
|
static U32 const MLS = 4;
|
||||||
|
static U32 const BADIDX = 0xffffffff;
|
||||||
|
|
||||||
|
size_t simpleExternalMatchFinder(
|
||||||
|
void* externalMatchState,
|
||||||
|
ZSTD_Sequence* outSeqs, size_t outSeqsCapacity,
|
||||||
|
const void* src, size_t srcSize,
|
||||||
|
const void* dict, size_t dictSize,
|
||||||
|
int compressionLevel,
|
||||||
|
size_t windowSize
|
||||||
|
) {
|
||||||
|
const BYTE* const istart = (const BYTE*)src;
|
||||||
|
const BYTE* const iend = istart + srcSize;
|
||||||
|
const BYTE* ip = istart;
|
||||||
|
const BYTE* anchor = istart;
|
||||||
|
size_t seqCount = 0;
|
||||||
|
U32 hashTable[HSIZE];
|
||||||
|
|
||||||
|
(void)externalMatchState;
|
||||||
|
(void)dict;
|
||||||
|
(void)dictSize;
|
||||||
|
(void)outSeqsCapacity;
|
||||||
|
(void)compressionLevel;
|
||||||
|
|
||||||
|
{ int i;
|
||||||
|
for (i=0; i < HSIZE; i++) {
|
||||||
|
hashTable[i] = BADIDX;
|
||||||
|
} }
|
||||||
|
|
||||||
|
while (ip + MLS < iend) {
|
||||||
|
size_t const hash = ZSTD_hashPtr(ip, HLOG, MLS);
|
||||||
|
U32 const matchIndex = hashTable[hash];
|
||||||
|
hashTable[hash] = (U32)(ip - istart);
|
||||||
|
|
||||||
|
if (matchIndex != BADIDX) {
|
||||||
|
const BYTE* const match = istart + matchIndex;
|
||||||
|
U32 const matchLen = (U32)ZSTD_count(ip, match, iend);
|
||||||
|
if (matchLen >= ZSTD_MINMATCH_MIN) {
|
||||||
|
U32 const litLen = (U32)(ip - anchor);
|
||||||
|
U32 const offset = (U32)(ip - match);
|
||||||
|
ZSTD_Sequence const seq = {
|
||||||
|
offset, litLen, matchLen, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Note: it's crucial to stay within the window size! */
|
||||||
|
if (offset <= windowSize) {
|
||||||
|
outSeqs[seqCount++] = seq;
|
||||||
|
ip += matchLen;
|
||||||
|
anchor = ip;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ip++;
|
||||||
|
}
|
||||||
|
|
||||||
|
{ ZSTD_Sequence const finalSeq = {
|
||||||
|
0, (U32)(iend - anchor), 0, 0
|
||||||
|
};
|
||||||
|
outSeqs[seqCount++] = finalSeq;
|
||||||
|
}
|
||||||
|
|
||||||
|
return seqCount;
|
||||||
|
}
|
26
contrib/externalMatchfinder/matchfinder.h
Normal file
26
contrib/externalMatchfinder/matchfinder.h
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Yann Collet, Meta Platforms, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||||
|
* in the COPYING file in the root directory of this source tree).
|
||||||
|
* You may select, at your option, one of the above-listed licenses.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MATCHFINDER_H
|
||||||
|
#define MATCHFINDER_H
|
||||||
|
|
||||||
|
#define ZSTD_STATIC_LINKING_ONLY
|
||||||
|
#include "zstd.h"
|
||||||
|
|
||||||
|
size_t simpleExternalMatchFinder(
|
||||||
|
void* externalMatchState,
|
||||||
|
ZSTD_Sequence* outSeqs, size_t outSeqsCapacity,
|
||||||
|
const void* src, size_t srcSize,
|
||||||
|
const void* dict, size_t dictSize,
|
||||||
|
int compressionLevel,
|
||||||
|
size_t windowSize
|
||||||
|
);
|
||||||
|
|
||||||
|
#endif
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) 2021-2021, Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) 2016-present, Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Przemyslaw Skibinski, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) 2018-present, Yann Collet, Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-present, Yann Collet, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
@ -856,7 +856,7 @@ int bench(const char **fileNameTable, unsigned nbFiles, const char *dictionary,
|
|||||||
CONTROL(cTotalSizeNoDict != 0);
|
CONTROL(cTotalSizeNoDict != 0);
|
||||||
DISPLAYLEVEL(3, "compressing at level %u without dictionary : Ratio=%.2f (%u bytes) \n",
|
DISPLAYLEVEL(3, "compressing at level %u without dictionary : Ratio=%.2f (%u bytes) \n",
|
||||||
clevel,
|
clevel,
|
||||||
(double)totalSrcSlicesSize / cTotalSizeNoDict, (unsigned)cTotalSizeNoDict);
|
(double)totalSrcSlicesSize / (double)cTotalSizeNoDict, (unsigned)cTotalSizeNoDict);
|
||||||
|
|
||||||
size_t* const cSizes = malloc(nbBlocks * sizeof(size_t));
|
size_t* const cSizes = malloc(nbBlocks * sizeof(size_t));
|
||||||
CONTROL(cSizes != NULL);
|
CONTROL(cSizes != NULL);
|
||||||
@ -865,7 +865,7 @@ int bench(const char **fileNameTable, unsigned nbFiles, const char *dictionary,
|
|||||||
CONTROL(cTotalSize != 0);
|
CONTROL(cTotalSize != 0);
|
||||||
DISPLAYLEVEL(3, "compressed using a %u bytes dictionary : Ratio=%.2f (%u bytes) \n",
|
DISPLAYLEVEL(3, "compressed using a %u bytes dictionary : Ratio=%.2f (%u bytes) \n",
|
||||||
(unsigned)dictBuffer.size,
|
(unsigned)dictBuffer.size,
|
||||||
(double)totalSrcSlicesSize / cTotalSize, (unsigned)cTotalSize);
|
(double)totalSrcSlicesSize / (double)cTotalSize, (unsigned)cTotalSize);
|
||||||
|
|
||||||
/* now dstSlices contain the real compressed size of each block, instead of the maximum capacity */
|
/* now dstSlices contain the real compressed size of each block, instead of the maximum capacity */
|
||||||
shrinkSizes(dstSlices, cSizes);
|
shrinkSizes(dstSlices, cSizes);
|
||||||
@ -985,7 +985,7 @@ int usage(const char* exeName)
|
|||||||
DISPLAY ("-# : use compression level # (default: %u) \n", CLEVEL_DEFAULT);
|
DISPLAY ("-# : use compression level # (default: %u) \n", CLEVEL_DEFAULT);
|
||||||
DISPLAY ("-D # : use # as a dictionary (default: create one) \n");
|
DISPLAY ("-D # : use # as a dictionary (default: create one) \n");
|
||||||
DISPLAY ("-i# : nb benchmark rounds (default: %u) \n", BENCH_TIME_DEFAULT_S);
|
DISPLAY ("-i# : nb benchmark rounds (default: %u) \n", BENCH_TIME_DEFAULT_S);
|
||||||
DISPLAY ("-p# : print speed for all rounds 0=fastest 1=median (default: 0)");
|
DISPLAY ("-p# : print speed for all rounds 0=fastest 1=median (default: 0) \n");
|
||||||
DISPLAY ("--nbBlocks=#: use # blocks for bench (default: one per file) \n");
|
DISPLAY ("--nbBlocks=#: use # blocks for bench (default: one per file) \n");
|
||||||
DISPLAY ("--nbDicts=# : create # dictionaries for bench (default: one per block) \n");
|
DISPLAY ("--nbDicts=# : create # dictionaries for bench (default: one per block) \n");
|
||||||
DISPLAY ("-h : help (this text) \n");
|
DISPLAY ("-h : help (this text) \n");
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
@ -32,9 +32,7 @@ libzstd:
|
|||||||
-DZSTD_LEGACY_SUPPORT=0 \
|
-DZSTD_LEGACY_SUPPORT=0 \
|
||||||
-DZSTD_STATIC_LINKING_ONLY \
|
-DZSTD_STATIC_LINKING_ONLY \
|
||||||
-DFSE_STATIC_LINKING_ONLY \
|
-DFSE_STATIC_LINKING_ONLY \
|
||||||
-DHUF_STATIC_LINKING_ONLY \
|
|
||||||
-DXXH_STATIC_LINKING_ONLY \
|
-DXXH_STATIC_LINKING_ONLY \
|
||||||
-DMEM_FORCE_MEMORY_ACCESS=0 \
|
|
||||||
-D__GNUC__ \
|
-D__GNUC__ \
|
||||||
-D__linux__=1 \
|
-D__linux__=1 \
|
||||||
-DSTATIC_BMI2=0 \
|
-DSTATIC_BMI2=0 \
|
||||||
@ -50,8 +48,8 @@ libzstd:
|
|||||||
-UZSTD_MULTITHREAD \
|
-UZSTD_MULTITHREAD \
|
||||||
-U_MSC_VER \
|
-U_MSC_VER \
|
||||||
-U_WIN32 \
|
-U_WIN32 \
|
||||||
-RZSTDLIB_VISIBILITY= \
|
-RZSTDLIB_VISIBLE= \
|
||||||
-RZSTDERRORLIB_VISIBILITY= \
|
-RZSTDERRORLIB_VISIBLE= \
|
||||||
-RZSTD_FALLTHROUGH=fallthrough \
|
-RZSTD_FALLTHROUGH=fallthrough \
|
||||||
-DZSTD_HAVE_WEAK_SYMBOLS=0 \
|
-DZSTD_HAVE_WEAK_SYMBOLS=0 \
|
||||||
-DZSTD_TRACE=0 \
|
-DZSTD_TRACE=0 \
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
|
/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
# SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
|
/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Yann Collet, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
|
/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Yann Collet, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2021, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2021, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2021, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2021, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2021, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2021, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2021, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2021, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2021, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2021, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* xxHash - Extremely Fast Hash algorithm
|
* xxHash - Extremely Fast Hash algorithm
|
||||||
* Copyright (C) 2012-2016, Yann Collet.
|
* Copyright (C) 2012-2016, Yann Collet.
|
||||||
*
|
*
|
||||||
* BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
|
* BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are
|
* modification, are permitted provided that the following conditions are
|
||||||
@ -260,7 +260,7 @@ XXH_API void xxh64_copy_state(struct xxh64_state *dst, const struct xxh64_state
|
|||||||
* xxHash - Extremely Fast Hash algorithm
|
* xxHash - Extremely Fast Hash algorithm
|
||||||
* Copyright (C) 2012-2016, Yann Collet.
|
* Copyright (C) 2012-2016, Yann Collet.
|
||||||
*
|
*
|
||||||
* BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
|
* BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are
|
* modification, are permitted provided that the following conditions are
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
@ -186,11 +186,14 @@ static void __attribute__((noinline)) use(void *x) {
|
|||||||
asm volatile("" : "+r"(x));
|
asm volatile("" : "+r"(x));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void __attribute__((noinline)) fill_stack(void) {
|
||||||
|
memset(g_stack, 0x33, 8192);
|
||||||
|
}
|
||||||
|
|
||||||
static void __attribute__((noinline)) set_stack(void) {
|
static void __attribute__((noinline)) set_stack(void) {
|
||||||
|
|
||||||
char stack[8192];
|
char stack[8192];
|
||||||
g_stack = stack;
|
g_stack = stack;
|
||||||
memset(g_stack, 0x33, 8192);
|
|
||||||
use(g_stack);
|
use(g_stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,6 +211,7 @@ static void __attribute__((noinline)) check_stack(void) {
|
|||||||
|
|
||||||
static void test_stack_usage(test_data_t const *data) {
|
static void test_stack_usage(test_data_t const *data) {
|
||||||
set_stack();
|
set_stack();
|
||||||
|
fill_stack();
|
||||||
test_f2fs();
|
test_f2fs();
|
||||||
test_btrfs(data);
|
test_btrfs(data);
|
||||||
test_decompress_unzstd(data);
|
test_decompress_unzstd(data);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
|
/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) 2016-present, Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
@ -10,11 +10,13 @@
|
|||||||
#include "Pzstd.h"
|
#include "Pzstd.h"
|
||||||
#include "SkippableFrame.h"
|
#include "SkippableFrame.h"
|
||||||
#include "utils/FileSystem.h"
|
#include "utils/FileSystem.h"
|
||||||
|
#include "utils/Portability.h"
|
||||||
#include "utils/Range.h"
|
#include "utils/Range.h"
|
||||||
#include "utils/ScopeGuard.h"
|
#include "utils/ScopeGuard.h"
|
||||||
#include "utils/ThreadPool.h"
|
#include "utils/ThreadPool.h"
|
||||||
#include "utils/WorkQueue.h"
|
#include "utils/WorkQueue.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <cinttypes>
|
#include <cinttypes>
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
@ -336,6 +338,10 @@ static size_t calculateStep(
|
|||||||
const ZSTD_parameters ¶ms) {
|
const ZSTD_parameters ¶ms) {
|
||||||
(void)size;
|
(void)size;
|
||||||
(void)numThreads;
|
(void)numThreads;
|
||||||
|
// Not validated to work correctly for window logs > 23.
|
||||||
|
// It will definitely fail if windowLog + 2 is >= 4GB because
|
||||||
|
// the skippable frame can only store sizes up to 4GB.
|
||||||
|
assert(params.cParams.windowLog <= 23);
|
||||||
return size_t{1} << (params.cParams.windowLog + 2);
|
return size_t{1} << (params.cParams.windowLog + 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -587,7 +593,8 @@ std::uint64_t writeFile(
|
|||||||
// start writing before compression is done because we need to know the
|
// start writing before compression is done because we need to know the
|
||||||
// compressed size.
|
// compressed size.
|
||||||
// Wait for the compressed size to be available and write skippable frame
|
// Wait for the compressed size to be available and write skippable frame
|
||||||
SkippableFrame frame(out->size());
|
assert(uint64_t(out->size()) < uint64_t(1) << 32);
|
||||||
|
SkippableFrame frame(uint32_t(out->size()));
|
||||||
if (!writeData(frame.data(), outputFd)) {
|
if (!writeData(frame.data(), outputFd)) {
|
||||||
errorHolder.setError("Failed to write output");
|
errorHolder.setError("Failed to write output");
|
||||||
return bytesWritten;
|
return bytesWritten;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -31,7 +31,7 @@ If this number is not suitable, during compilation you can define `PZSTD_NUM_THR
|
|||||||
|
|
||||||
## Benchmarks
|
## Benchmarks
|
||||||
|
|
||||||
As a reference, PZstandard and Pigz were compared on an Intel Core i7 @ 3.1 GHz, each using 4 threads, with the [Silesia compression corpus](http://sun.aei.polsl.pl/~sdeor/index.php?page=silesia).
|
As a reference, PZstandard and Pigz were compared on an Intel Core i7 @ 3.1 GHz, each using 4 threads, with the [Silesia compression corpus](https://sun.aei.polsl.pl//~sdeor/index.php?page=silesia).
|
||||||
|
|
||||||
Compression Speed vs Ratio with 4 Threads | Decompression Speed with 4 Threads
|
Compression Speed vs Ratio with 4 Threads | Decompression Speed with 4 Threads
|
||||||
------------------------------------------|-----------------------------------
|
------------------------------------------|-----------------------------------
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
@ -8,16 +8,18 @@
|
|||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "utils/Portability.h"
|
||||||
#include "utils/Range.h"
|
#include "utils/Range.h"
|
||||||
|
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <cerrno>
|
#include <cerrno>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <limits>
|
||||||
#include <system_error>
|
#include <system_error>
|
||||||
|
|
||||||
// A small subset of `std::filesystem`.
|
// A small subset of `std::filesystem`.
|
||||||
// `std::filesystem` should be a drop in replacement.
|
// `std::filesystem` should be a drop in replacement.
|
||||||
// See http://en.cppreference.com/w/cpp/filesystem for documentation.
|
// See https://en.cppreference.com/w/cpp/filesystem for documentation.
|
||||||
|
|
||||||
namespace pzstd {
|
namespace pzstd {
|
||||||
|
|
||||||
@ -28,7 +30,7 @@ typedef struct ::_stat64 file_status;
|
|||||||
typedef struct ::stat file_status;
|
typedef struct ::stat file_status;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// http://en.cppreference.com/w/cpp/filesystem/status
|
/// https://en.cppreference.com/w/cpp/filesystem/status
|
||||||
inline file_status status(StringPiece path, std::error_code& ec) noexcept {
|
inline file_status status(StringPiece path, std::error_code& ec) noexcept {
|
||||||
file_status status;
|
file_status status;
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
@ -44,7 +46,7 @@ inline file_status status(StringPiece path, std::error_code& ec) noexcept {
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// http://en.cppreference.com/w/cpp/filesystem/is_regular_file
|
/// https://en.cppreference.com/w/cpp/filesystem/is_regular_file
|
||||||
inline bool is_regular_file(file_status status) noexcept {
|
inline bool is_regular_file(file_status status) noexcept {
|
||||||
#if defined(S_ISREG)
|
#if defined(S_ISREG)
|
||||||
return S_ISREG(status.st_mode);
|
return S_ISREG(status.st_mode);
|
||||||
@ -55,12 +57,12 @@ inline bool is_regular_file(file_status status) noexcept {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/// http://en.cppreference.com/w/cpp/filesystem/is_regular_file
|
/// https://en.cppreference.com/w/cpp/filesystem/is_regular_file
|
||||||
inline bool is_regular_file(StringPiece path, std::error_code& ec) noexcept {
|
inline bool is_regular_file(StringPiece path, std::error_code& ec) noexcept {
|
||||||
return is_regular_file(status(path, ec));
|
return is_regular_file(status(path, ec));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// http://en.cppreference.com/w/cpp/filesystem/is_directory
|
/// https://en.cppreference.com/w/cpp/filesystem/is_directory
|
||||||
inline bool is_directory(file_status status) noexcept {
|
inline bool is_directory(file_status status) noexcept {
|
||||||
#if defined(S_ISDIR)
|
#if defined(S_ISDIR)
|
||||||
return S_ISDIR(status.st_mode);
|
return S_ISDIR(status.st_mode);
|
||||||
@ -71,22 +73,22 @@ inline bool is_directory(file_status status) noexcept {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/// http://en.cppreference.com/w/cpp/filesystem/is_directory
|
/// https://en.cppreference.com/w/cpp/filesystem/is_directory
|
||||||
inline bool is_directory(StringPiece path, std::error_code& ec) noexcept {
|
inline bool is_directory(StringPiece path, std::error_code& ec) noexcept {
|
||||||
return is_directory(status(path, ec));
|
return is_directory(status(path, ec));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// http://en.cppreference.com/w/cpp/filesystem/file_size
|
/// https://en.cppreference.com/w/cpp/filesystem/file_size
|
||||||
inline std::uintmax_t file_size(
|
inline std::uintmax_t file_size(
|
||||||
StringPiece path,
|
StringPiece path,
|
||||||
std::error_code& ec) noexcept {
|
std::error_code& ec) noexcept {
|
||||||
auto stat = status(path, ec);
|
auto stat = status(path, ec);
|
||||||
if (ec) {
|
if (ec) {
|
||||||
return -1;
|
return std::numeric_limits<uintmax_t>::max();
|
||||||
}
|
}
|
||||||
if (!is_regular_file(stat)) {
|
if (!is_regular_file(stat)) {
|
||||||
ec.assign(ENOTSUP, std::generic_category());
|
ec.assign(ENOTSUP, std::generic_category());
|
||||||
return -1;
|
return std::numeric_limits<uintmax_t>::max();
|
||||||
}
|
}
|
||||||
ec.clear();
|
ec.clear();
|
||||||
return stat.st_size;
|
return stat.st_size;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
16
contrib/pzstd/utils/Portability.h
Normal file
16
contrib/pzstd/utils/Portability.h
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||||
|
* in the COPYING file in the root directory of this source tree).
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
// Required for windows, which defines min/max, but we want the std:: version.
|
||||||
|
#undef min
|
||||||
|
#undef max
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
@ -14,7 +14,9 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "utils/Likely.h"
|
#include "utils/Likely.h"
|
||||||
|
#include "utils/Portability.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) 2019-present, Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2021, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
# Copyright (c) 2017-present, Facebook, Inc.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This source code is licensed under both the BSD-style license (found in the
|
# This source code is licensed under both the BSD-style license (found in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2017-present, Facebook, Inc.
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This source code is licensed under both the BSD-style license (found in the
|
* This source code is licensed under both the BSD-style license (found in the
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user