zstd-native-ruby 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CLAUDE.md +101 -0
- data/LICENSE +19 -0
- data/README.md +47 -0
- data/ext/zstd_ruby/extconf.rb +35 -0
- data/ext/zstd_ruby/zstd_ruby.c +221 -0
- data/lib/zstd_ruby.rb +68 -0
- data/vendor/zstd/CHANGELOG +863 -0
- data/vendor/zstd/CMakeLists.txt +11 -0
- data/vendor/zstd/CODE_OF_CONDUCT.md +5 -0
- data/vendor/zstd/CONTRIBUTING.md +494 -0
- data/vendor/zstd/COPYING +339 -0
- data/vendor/zstd/LICENSE +30 -0
- data/vendor/zstd/Makefile +470 -0
- data/vendor/zstd/Package.swift +36 -0
- data/vendor/zstd/README.md +244 -0
- data/vendor/zstd/SECURITY.md +15 -0
- data/vendor/zstd/TESTING.md +43 -0
- data/vendor/zstd/build/LICENSE +0 -0
- data/vendor/zstd/build/README.md +56 -0
- data/vendor/zstd/build/VS2008/fullbench/fullbench.vcproj +549 -0
- data/vendor/zstd/build/VS2008/fuzzer/fuzzer.vcproj +585 -0
- data/vendor/zstd/build/VS2008/zstd/zstd.vcproj +677 -0
- data/vendor/zstd/build/VS2008/zstd.sln +56 -0
- data/vendor/zstd/build/VS2008/zstdlib/zstdlib.vcproj +635 -0
- data/vendor/zstd/build/VS2010/CompileAsCpp.props +8 -0
- data/vendor/zstd/build/VS2010/datagen/datagen.vcxproj +170 -0
- data/vendor/zstd/build/VS2010/fullbench/fullbench.vcxproj +220 -0
- data/vendor/zstd/build/VS2010/fuzzer/fuzzer.vcxproj +224 -0
- data/vendor/zstd/build/VS2010/libzstd/libzstd.vcxproj +243 -0
- data/vendor/zstd/build/VS2010/libzstd-dll/libzstd-dll.rc +51 -0
- data/vendor/zstd/build/VS2010/libzstd-dll/libzstd-dll.vcxproj +250 -0
- data/vendor/zstd/build/VS2010/zstd/zstd.rc +51 -0
- data/vendor/zstd/build/VS2010/zstd/zstd.vcxproj +266 -0
- data/vendor/zstd/build/VS2010/zstd.sln +84 -0
- data/vendor/zstd/build/VS_scripts/README.md +64 -0
- data/vendor/zstd/build/VS_scripts/build.VS2010.cmd +7 -0
- data/vendor/zstd/build/VS_scripts/build.VS2012.cmd +6 -0
- data/vendor/zstd/build/VS_scripts/build.VS2013.cmd +7 -0
- data/vendor/zstd/build/VS_scripts/build.VS2015.cmd +7 -0
- data/vendor/zstd/build/VS_scripts/build.VS2017.cmd +7 -0
- data/vendor/zstd/build/VS_scripts/build.VS2017Community.cmd +7 -0
- data/vendor/zstd/build/VS_scripts/build.VS2017Enterprise.cmd +7 -0
- data/vendor/zstd/build/VS_scripts/build.VS2017Professional.cmd +7 -0
- data/vendor/zstd/build/VS_scripts/build.VSPreview.cmd +7 -0
- data/vendor/zstd/build/VS_scripts/build.generic.cmd +67 -0
- data/vendor/zstd/build/cmake/CMakeLists.txt +81 -0
- data/vendor/zstd/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake +138 -0
- data/vendor/zstd/build/cmake/CMakeModules/FindLibLZ4.cmake +49 -0
- data/vendor/zstd/build/cmake/CMakeModules/GetZstdLibraryVersion.cmake +10 -0
- data/vendor/zstd/build/cmake/CMakeModules/JoinPaths.cmake +23 -0
- data/vendor/zstd/build/cmake/CMakeModules/ZstdBuild.cmake +42 -0
- data/vendor/zstd/build/cmake/CMakeModules/ZstdDependencies.cmake +30 -0
- data/vendor/zstd/build/cmake/CMakeModules/ZstdOptions.cmake +68 -0
- data/vendor/zstd/build/cmake/CMakeModules/ZstdPackage.cmake +42 -0
- data/vendor/zstd/build/cmake/CMakeModules/ZstdVersion.cmake +31 -0
- data/vendor/zstd/build/cmake/README.md +155 -0
- data/vendor/zstd/build/cmake/contrib/CMakeLists.txt +13 -0
- data/vendor/zstd/build/cmake/contrib/gen_html/CMakeLists.txt +30 -0
- data/vendor/zstd/build/cmake/contrib/pzstd/CMakeLists.txt +39 -0
- data/vendor/zstd/build/cmake/lib/CMakeLists.txt +298 -0
- data/vendor/zstd/build/cmake/lib/cmake_uninstall.cmake.in +22 -0
- data/vendor/zstd/build/cmake/programs/CMakeLists.txt +144 -0
- data/vendor/zstd/build/cmake/tests/CMakeLists.txt +118 -0
- data/vendor/zstd/build/cmake/zstdConfig.cmake.in +10 -0
- data/vendor/zstd/build/meson/GetZstdLibraryVersion.py +39 -0
- data/vendor/zstd/build/meson/InstallSymlink.py +55 -0
- data/vendor/zstd/build/meson/README.md +38 -0
- data/vendor/zstd/build/meson/contrib/gen_html/meson.build +30 -0
- data/vendor/zstd/build/meson/contrib/meson.build +12 -0
- data/vendor/zstd/build/meson/contrib/pzstd/meson.build +25 -0
- data/vendor/zstd/build/meson/lib/meson.build +175 -0
- data/vendor/zstd/build/meson/meson.build +155 -0
- data/vendor/zstd/build/meson/meson_options.txt +36 -0
- data/vendor/zstd/build/meson/programs/meson.build +124 -0
- data/vendor/zstd/build/meson/tests/meson.build +217 -0
- data/vendor/zstd/build/meson/tests/valgrindTest.py +90 -0
- data/vendor/zstd/build/single_file_libs/README.md +33 -0
- data/vendor/zstd/build/single_file_libs/build_decoder_test.sh +91 -0
- data/vendor/zstd/build/single_file_libs/build_library_test.sh +98 -0
- data/vendor/zstd/build/single_file_libs/combine.py +234 -0
- data/vendor/zstd/build/single_file_libs/combine.sh +249 -0
- data/vendor/zstd/build/single_file_libs/create_single_file_decoder.sh +19 -0
- data/vendor/zstd/build/single_file_libs/create_single_file_library.sh +19 -0
- data/vendor/zstd/build/single_file_libs/examples/README.md +11 -0
- data/vendor/zstd/build/single_file_libs/examples/emscripten.c +340 -0
- data/vendor/zstd/build/single_file_libs/examples/roundtrip.c +83 -0
- data/vendor/zstd/build/single_file_libs/examples/shell.html +31 -0
- data/vendor/zstd/build/single_file_libs/examples/simple.c +75 -0
- data/vendor/zstd/build/single_file_libs/examples/testcard-dxt1.inl +2731 -0
- data/vendor/zstd/build/single_file_libs/examples/testcard-zstd.inl +261 -0
- data/vendor/zstd/build/single_file_libs/examples/testcard.png +0 -0
- data/vendor/zstd/build/single_file_libs/zstd-in.c +91 -0
- data/vendor/zstd/build/single_file_libs/zstddeclib-in.c +62 -0
- data/vendor/zstd/contrib/VS2005/README.md +3 -0
- data/vendor/zstd/contrib/VS2005/fullbench/fullbench.vcproj +440 -0
- data/vendor/zstd/contrib/VS2005/fuzzer/fuzzer.vcproj +488 -0
- data/vendor/zstd/contrib/VS2005/zstd/zstd.vcproj +552 -0
- data/vendor/zstd/contrib/VS2005/zstd.sln +55 -0
- data/vendor/zstd/contrib/VS2005/zstdlib/zstdlib.vcproj +546 -0
- data/vendor/zstd/contrib/cleanTabs +2 -0
- data/vendor/zstd/contrib/diagnose_corruption/Makefile +35 -0
- data/vendor/zstd/contrib/diagnose_corruption/check_flipped_bits.c +400 -0
- data/vendor/zstd/contrib/docker/Dockerfile +20 -0
- data/vendor/zstd/contrib/docker/README.md +20 -0
- data/vendor/zstd/contrib/externalSequenceProducer/Makefile +40 -0
- data/vendor/zstd/contrib/externalSequenceProducer/README.md +14 -0
- data/vendor/zstd/contrib/externalSequenceProducer/main.c +108 -0
- data/vendor/zstd/contrib/externalSequenceProducer/sequence_producer.c +80 -0
- data/vendor/zstd/contrib/externalSequenceProducer/sequence_producer.h +26 -0
- data/vendor/zstd/contrib/freestanding_lib/freestanding.py +774 -0
- data/vendor/zstd/contrib/gen_html/Makefile +51 -0
- data/vendor/zstd/contrib/gen_html/README.md +31 -0
- data/vendor/zstd/contrib/gen_html/gen-zstd-manual.sh +9 -0
- data/vendor/zstd/contrib/gen_html/gen_html.cpp +225 -0
- data/vendor/zstd/contrib/largeNbDicts/Makefile +58 -0
- data/vendor/zstd/contrib/largeNbDicts/README.md +33 -0
- data/vendor/zstd/contrib/largeNbDicts/largeNbDicts.c +1087 -0
- data/vendor/zstd/contrib/linux-kernel/Makefile +108 -0
- data/vendor/zstd/contrib/linux-kernel/README.md +14 -0
- data/vendor/zstd/contrib/linux-kernel/btrfs-benchmark.sh +104 -0
- data/vendor/zstd/contrib/linux-kernel/btrfs-extract-benchmark.sh +99 -0
- data/vendor/zstd/contrib/linux-kernel/decompress_sources.h +34 -0
- data/vendor/zstd/contrib/linux-kernel/linux.mk +44 -0
- data/vendor/zstd/contrib/linux-kernel/linux_zstd.h +691 -0
- data/vendor/zstd/contrib/linux-kernel/mem.h +262 -0
- data/vendor/zstd/contrib/linux-kernel/squashfs-benchmark.sh +39 -0
- data/vendor/zstd/contrib/linux-kernel/test/Makefile +49 -0
- data/vendor/zstd/contrib/linux-kernel/test/include/linux/compiler.h +23 -0
- data/vendor/zstd/contrib/linux-kernel/test/include/linux/errno.h +15 -0
- data/vendor/zstd/contrib/linux-kernel/test/include/linux/kernel.h +19 -0
- data/vendor/zstd/contrib/linux-kernel/test/include/linux/limits.h +15 -0
- data/vendor/zstd/contrib/linux-kernel/test/include/linux/math64.h +15 -0
- data/vendor/zstd/contrib/linux-kernel/test/include/linux/module.h +20 -0
- data/vendor/zstd/contrib/linux-kernel/test/include/linux/printk.h +15 -0
- data/vendor/zstd/contrib/linux-kernel/test/include/linux/stddef.h +15 -0
- data/vendor/zstd/contrib/linux-kernel/test/include/linux/swab.h +16 -0
- data/vendor/zstd/contrib/linux-kernel/test/include/linux/types.h +16 -0
- data/vendor/zstd/contrib/linux-kernel/test/include/linux/unaligned.h +187 -0
- data/vendor/zstd/contrib/linux-kernel/test/include/linux/xxhash.h +745 -0
- data/vendor/zstd/contrib/linux-kernel/test/macro-test.sh +44 -0
- data/vendor/zstd/contrib/linux-kernel/test/static_test.c +52 -0
- data/vendor/zstd/contrib/linux-kernel/test/test.c +229 -0
- data/vendor/zstd/contrib/linux-kernel/zstd_common_module.c +29 -0
- data/vendor/zstd/contrib/linux-kernel/zstd_compress_module.c +286 -0
- data/vendor/zstd/contrib/linux-kernel/zstd_decompress_module.c +141 -0
- data/vendor/zstd/contrib/linux-kernel/zstd_deps.h +121 -0
- data/vendor/zstd/contrib/match_finders/README.md +42 -0
- data/vendor/zstd/contrib/match_finders/zstd_edist.c +558 -0
- data/vendor/zstd/contrib/match_finders/zstd_edist.h +70 -0
- data/vendor/zstd/contrib/premake/premake4.lua +6 -0
- data/vendor/zstd/contrib/premake/zstd.lua +81 -0
- data/vendor/zstd/contrib/pzstd/BUCK +72 -0
- data/vendor/zstd/contrib/pzstd/ErrorHolder.h +54 -0
- data/vendor/zstd/contrib/pzstd/Logging.h +73 -0
- data/vendor/zstd/contrib/pzstd/Makefile +265 -0
- data/vendor/zstd/contrib/pzstd/Options.cpp +424 -0
- data/vendor/zstd/contrib/pzstd/Options.h +71 -0
- data/vendor/zstd/contrib/pzstd/Pzstd.cpp +626 -0
- data/vendor/zstd/contrib/pzstd/Pzstd.h +153 -0
- data/vendor/zstd/contrib/pzstd/README.md +56 -0
- data/vendor/zstd/contrib/pzstd/SkippableFrame.cpp +30 -0
- data/vendor/zstd/contrib/pzstd/SkippableFrame.h +64 -0
- data/vendor/zstd/contrib/pzstd/images/Cspeed.png +0 -0
- data/vendor/zstd/contrib/pzstd/images/Dspeed.png +0 -0
- data/vendor/zstd/contrib/pzstd/main.cpp +27 -0
- data/vendor/zstd/contrib/pzstd/test/BUCK +37 -0
- data/vendor/zstd/contrib/pzstd/test/OptionsTest.cpp +536 -0
- data/vendor/zstd/contrib/pzstd/test/PzstdTest.cpp +147 -0
- data/vendor/zstd/contrib/pzstd/test/RoundTrip.h +86 -0
- data/vendor/zstd/contrib/pzstd/test/RoundTripTest.cpp +84 -0
- data/vendor/zstd/contrib/pzstd/utils/BUCK +75 -0
- data/vendor/zstd/contrib/pzstd/utils/Buffer.h +99 -0
- data/vendor/zstd/contrib/pzstd/utils/FileSystem.h +96 -0
- data/vendor/zstd/contrib/pzstd/utils/Likely.h +28 -0
- data/vendor/zstd/contrib/pzstd/utils/Portability.h +16 -0
- data/vendor/zstd/contrib/pzstd/utils/Range.h +133 -0
- data/vendor/zstd/contrib/pzstd/utils/ResourcePool.h +96 -0
- data/vendor/zstd/contrib/pzstd/utils/ScopeGuard.h +50 -0
- data/vendor/zstd/contrib/pzstd/utils/ThreadPool.h +58 -0
- data/vendor/zstd/contrib/pzstd/utils/WorkQueue.h +182 -0
- data/vendor/zstd/contrib/pzstd/utils/test/BUCK +35 -0
- data/vendor/zstd/contrib/pzstd/utils/test/BufferTest.cpp +89 -0
- data/vendor/zstd/contrib/pzstd/utils/test/RangeTest.cpp +82 -0
- data/vendor/zstd/contrib/pzstd/utils/test/ResourcePoolTest.cpp +72 -0
- data/vendor/zstd/contrib/pzstd/utils/test/ScopeGuardTest.cpp +28 -0
- data/vendor/zstd/contrib/pzstd/utils/test/ThreadPoolTest.cpp +71 -0
- data/vendor/zstd/contrib/pzstd/utils/test/WorkQueueTest.cpp +282 -0
- data/vendor/zstd/contrib/recovery/Makefile +35 -0
- data/vendor/zstd/contrib/recovery/recover_directory.c +152 -0
- data/vendor/zstd/contrib/seekable_format/README.md +42 -0
- data/vendor/zstd/contrib/seekable_format/examples/Makefile +55 -0
- data/vendor/zstd/contrib/seekable_format/examples/parallel_compression.c +254 -0
- data/vendor/zstd/contrib/seekable_format/examples/parallel_processing.c +191 -0
- data/vendor/zstd/contrib/seekable_format/examples/seekable_compression.c +136 -0
- data/vendor/zstd/contrib/seekable_format/examples/seekable_decompression.c +141 -0
- data/vendor/zstd/contrib/seekable_format/examples/seekable_decompression_mem.c +147 -0
- data/vendor/zstd/contrib/seekable_format/tests/Makefile +58 -0
- data/vendor/zstd/contrib/seekable_format/tests/seekable_tests.c +375 -0
- data/vendor/zstd/contrib/seekable_format/zstd_seekable.h +226 -0
- data/vendor/zstd/contrib/seekable_format/zstd_seekable_compression_format.md +116 -0
- data/vendor/zstd/contrib/seekable_format/zstdseek_compress.c +365 -0
- data/vendor/zstd/contrib/seekable_format/zstdseek_decompress.c +600 -0
- data/vendor/zstd/contrib/seqBench/Makefile +58 -0
- data/vendor/zstd/contrib/seqBench/seqBench.c +53 -0
- data/vendor/zstd/contrib/snap/snapcraft.yaml +28 -0
- data/vendor/zstd/doc/README.md +26 -0
- data/vendor/zstd/doc/decompressor_errata.md +148 -0
- data/vendor/zstd/doc/decompressor_permissive.md +80 -0
- data/vendor/zstd/doc/educational_decoder/Makefile +62 -0
- data/vendor/zstd/doc/educational_decoder/README.md +36 -0
- data/vendor/zstd/doc/educational_decoder/harness.c +119 -0
- data/vendor/zstd/doc/educational_decoder/zstd_decompress.c +2323 -0
- data/vendor/zstd/doc/educational_decoder/zstd_decompress.h +61 -0
- data/vendor/zstd/doc/images/CSpeed2.png +0 -0
- data/vendor/zstd/doc/images/DCspeed5.png +0 -0
- data/vendor/zstd/doc/images/DSpeed3.png +0 -0
- data/vendor/zstd/doc/images/cdict_v136.png +0 -0
- data/vendor/zstd/doc/images/dict-cr.png +0 -0
- data/vendor/zstd/doc/images/dict-cs.png +0 -0
- data/vendor/zstd/doc/images/dict-ds.png +0 -0
- data/vendor/zstd/doc/images/zstd_cdict_v1_3_5.png +0 -0
- data/vendor/zstd/doc/images/zstd_logo86.png +0 -0
- data/vendor/zstd/doc/zstd_compression_format.md +1772 -0
- data/vendor/zstd/doc/zstd_manual.html +2244 -0
- data/vendor/zstd/examples/Makefile +93 -0
- data/vendor/zstd/examples/README.md +46 -0
- data/vendor/zstd/examples/common.h +246 -0
- data/vendor/zstd/examples/dictionary_compression.c +107 -0
- data/vendor/zstd/examples/dictionary_decompression.c +99 -0
- data/vendor/zstd/examples/multiple_simple_compression.c +116 -0
- data/vendor/zstd/examples/multiple_streaming_compression.c +133 -0
- data/vendor/zstd/examples/simple_compression.c +68 -0
- data/vendor/zstd/examples/simple_decompression.c +65 -0
- data/vendor/zstd/examples/streaming_compression.c +146 -0
- data/vendor/zstd/examples/streaming_compression_thread_pool.c +180 -0
- data/vendor/zstd/examples/streaming_decompression.c +100 -0
- data/vendor/zstd/examples/streaming_memory_usage.c +137 -0
- data/vendor/zstd/lib/BUCK +232 -0
- data/vendor/zstd/lib/Makefile +389 -0
- data/vendor/zstd/lib/README.md +267 -0
- data/vendor/zstd/lib/common/allocations.h +55 -0
- data/vendor/zstd/lib/common/bits.h +205 -0
- data/vendor/zstd/lib/common/bitstream.h +454 -0
- data/vendor/zstd/lib/common/compiler.h +482 -0
- data/vendor/zstd/lib/common/cpu.h +249 -0
- data/vendor/zstd/lib/common/debug.c +30 -0
- data/vendor/zstd/lib/common/debug.h +107 -0
- data/vendor/zstd/lib/common/debug.o +0 -0
- data/vendor/zstd/lib/common/entropy_common.c +340 -0
- data/vendor/zstd/lib/common/entropy_common.o +0 -0
- data/vendor/zstd/lib/common/error_private.c +64 -0
- data/vendor/zstd/lib/common/error_private.h +158 -0
- data/vendor/zstd/lib/common/error_private.o +0 -0
- data/vendor/zstd/lib/common/fse.h +625 -0
- data/vendor/zstd/lib/common/fse_decompress.c +315 -0
- data/vendor/zstd/lib/common/fse_decompress.o +0 -0
- data/vendor/zstd/lib/common/huf.h +277 -0
- data/vendor/zstd/lib/common/mem.h +422 -0
- data/vendor/zstd/lib/common/pool.c +371 -0
- data/vendor/zstd/lib/common/pool.h +81 -0
- data/vendor/zstd/lib/common/pool.o +0 -0
- data/vendor/zstd/lib/common/portability_macros.h +190 -0
- data/vendor/zstd/lib/common/threading.c +196 -0
- data/vendor/zstd/lib/common/threading.h +142 -0
- data/vendor/zstd/lib/common/threading.o +0 -0
- data/vendor/zstd/lib/common/xxhash.c +18 -0
- data/vendor/zstd/lib/common/xxhash.h +7094 -0
- data/vendor/zstd/lib/common/xxhash.o +0 -0
- data/vendor/zstd/lib/common/zstd_common.c +57 -0
- data/vendor/zstd/lib/common/zstd_common.o +0 -0
- data/vendor/zstd/lib/common/zstd_deps.h +123 -0
- data/vendor/zstd/lib/common/zstd_internal.h +326 -0
- data/vendor/zstd/lib/common/zstd_trace.h +156 -0
- data/vendor/zstd/lib/compress/clevels.h +134 -0
- data/vendor/zstd/lib/compress/fse_compress.c +625 -0
- data/vendor/zstd/lib/compress/fse_compress.o +0 -0
- data/vendor/zstd/lib/compress/hist.c +446 -0
- data/vendor/zstd/lib/compress/hist.h +86 -0
- data/vendor/zstd/lib/compress/hist.o +0 -0
- data/vendor/zstd/lib/compress/huf_compress.c +1465 -0
- data/vendor/zstd/lib/compress/huf_compress.o +0 -0
- data/vendor/zstd/lib/compress/zstd_compress.c +8362 -0
- data/vendor/zstd/lib/compress/zstd_compress.o +0 -0
- data/vendor/zstd/lib/compress/zstd_compress_internal.h +1636 -0
- data/vendor/zstd/lib/compress/zstd_compress_literals.c +235 -0
- data/vendor/zstd/lib/compress/zstd_compress_literals.h +39 -0
- data/vendor/zstd/lib/compress/zstd_compress_literals.o +0 -0
- data/vendor/zstd/lib/compress/zstd_compress_sequences.c +442 -0
- data/vendor/zstd/lib/compress/zstd_compress_sequences.h +55 -0
- data/vendor/zstd/lib/compress/zstd_compress_sequences.o +0 -0
- data/vendor/zstd/lib/compress/zstd_compress_superblock.c +688 -0
- data/vendor/zstd/lib/compress/zstd_compress_superblock.h +32 -0
- data/vendor/zstd/lib/compress/zstd_compress_superblock.o +0 -0
- data/vendor/zstd/lib/compress/zstd_cwksp.h +765 -0
- data/vendor/zstd/lib/compress/zstd_double_fast.c +778 -0
- data/vendor/zstd/lib/compress/zstd_double_fast.h +42 -0
- data/vendor/zstd/lib/compress/zstd_double_fast.o +0 -0
- data/vendor/zstd/lib/compress/zstd_fast.c +985 -0
- data/vendor/zstd/lib/compress/zstd_fast.h +30 -0
- data/vendor/zstd/lib/compress/zstd_fast.o +0 -0
- data/vendor/zstd/lib/compress/zstd_lazy.c +2243 -0
- data/vendor/zstd/lib/compress/zstd_lazy.h +193 -0
- data/vendor/zstd/lib/compress/zstd_lazy.o +0 -0
- data/vendor/zstd/lib/compress/zstd_ldm.c +745 -0
- data/vendor/zstd/lib/compress/zstd_ldm.h +109 -0
- data/vendor/zstd/lib/compress/zstd_ldm.o +0 -0
- data/vendor/zstd/lib/compress/zstd_ldm_geartab.h +106 -0
- data/vendor/zstd/lib/compress/zstd_opt.c +1572 -0
- data/vendor/zstd/lib/compress/zstd_opt.h +72 -0
- data/vendor/zstd/lib/compress/zstd_opt.o +0 -0
- data/vendor/zstd/lib/compress/zstd_preSplit.c +238 -0
- data/vendor/zstd/lib/compress/zstd_preSplit.h +33 -0
- data/vendor/zstd/lib/compress/zstd_preSplit.o +0 -0
- data/vendor/zstd/lib/compress/zstdmt_compress.c +1924 -0
- data/vendor/zstd/lib/compress/zstdmt_compress.h +102 -0
- data/vendor/zstd/lib/compress/zstdmt_compress.o +0 -0
- data/vendor/zstd/lib/decompress/huf_decompress.c +1953 -0
- data/vendor/zstd/lib/decompress/huf_decompress.o +0 -0
- data/vendor/zstd/lib/decompress/huf_decompress_amd64.S +766 -0
- data/vendor/zstd/lib/decompress/zstd_ddict.c +244 -0
- data/vendor/zstd/lib/decompress/zstd_ddict.h +44 -0
- data/vendor/zstd/lib/decompress/zstd_ddict.o +0 -0
- data/vendor/zstd/lib/decompress/zstd_decompress.c +2410 -0
- data/vendor/zstd/lib/decompress/zstd_decompress.o +0 -0
- data/vendor/zstd/lib/decompress/zstd_decompress_block.c +2311 -0
- data/vendor/zstd/lib/decompress/zstd_decompress_block.h +73 -0
- data/vendor/zstd/lib/decompress/zstd_decompress_block.o +0 -0
- data/vendor/zstd/lib/decompress/zstd_decompress_internal.h +240 -0
- data/vendor/zstd/lib/deprecated/zbuff.h +214 -0
- data/vendor/zstd/lib/deprecated/zbuff_common.c +26 -0
- data/vendor/zstd/lib/deprecated/zbuff_compress.c +167 -0
- data/vendor/zstd/lib/deprecated/zbuff_decompress.c +77 -0
- data/vendor/zstd/lib/dictBuilder/cover.c +1333 -0
- data/vendor/zstd/lib/dictBuilder/cover.h +152 -0
- data/vendor/zstd/lib/dictBuilder/divsufsort.c +1913 -0
- data/vendor/zstd/lib/dictBuilder/divsufsort.h +57 -0
- data/vendor/zstd/lib/dictBuilder/fastcover.c +765 -0
- data/vendor/zstd/lib/dictBuilder/zdict.c +1137 -0
- data/vendor/zstd/lib/dll/example/Makefile +48 -0
- data/vendor/zstd/lib/dll/example/README.md +63 -0
- data/vendor/zstd/lib/dll/example/build_package.bat +55 -0
- data/vendor/zstd/lib/dll/example/fullbench-dll.sln +25 -0
- data/vendor/zstd/lib/dll/example/fullbench-dll.vcxproj +181 -0
- data/vendor/zstd/lib/install_oses.mk +17 -0
- data/vendor/zstd/lib/legacy/zstd_legacy.h +452 -0
- data/vendor/zstd/lib/legacy/zstd_v01.c +2128 -0
- data/vendor/zstd/lib/legacy/zstd_v01.h +94 -0
- data/vendor/zstd/lib/legacy/zstd_v02.c +3465 -0
- data/vendor/zstd/lib/legacy/zstd_v02.h +93 -0
- data/vendor/zstd/lib/legacy/zstd_v03.c +3105 -0
- data/vendor/zstd/lib/legacy/zstd_v03.h +93 -0
- data/vendor/zstd/lib/legacy/zstd_v04.c +3598 -0
- data/vendor/zstd/lib/legacy/zstd_v04.h +142 -0
- data/vendor/zstd/lib/legacy/zstd_v05.c +4005 -0
- data/vendor/zstd/lib/legacy/zstd_v05.h +162 -0
- data/vendor/zstd/lib/legacy/zstd_v06.c +4110 -0
- data/vendor/zstd/lib/legacy/zstd_v06.h +172 -0
- data/vendor/zstd/lib/legacy/zstd_v07.c +4490 -0
- data/vendor/zstd/lib/legacy/zstd_v07.h +187 -0
- data/vendor/zstd/lib/libzstd.mk +238 -0
- data/vendor/zstd/lib/libzstd.pc.in +17 -0
- data/vendor/zstd/lib/module.modulemap +35 -0
- data/vendor/zstd/lib/zdict.h +481 -0
- data/vendor/zstd/lib/zstd.h +3209 -0
- data/vendor/zstd/lib/zstd_errors.h +107 -0
- data/vendor/zstd/programs/BUCK +44 -0
- data/vendor/zstd/programs/Makefile +445 -0
- data/vendor/zstd/programs/README.md +344 -0
- data/vendor/zstd/programs/benchfn.c +256 -0
- data/vendor/zstd/programs/benchfn.h +173 -0
- data/vendor/zstd/programs/benchzstd.c +1270 -0
- data/vendor/zstd/programs/benchzstd.h +191 -0
- data/vendor/zstd/programs/datagen.c +186 -0
- data/vendor/zstd/programs/datagen.h +38 -0
- data/vendor/zstd/programs/dibio.c +447 -0
- data/vendor/zstd/programs/dibio.h +39 -0
- data/vendor/zstd/programs/fileio.c +3717 -0
- data/vendor/zstd/programs/fileio.h +171 -0
- data/vendor/zstd/programs/fileio_asyncio.c +663 -0
- data/vendor/zstd/programs/fileio_asyncio.h +195 -0
- data/vendor/zstd/programs/fileio_common.h +121 -0
- data/vendor/zstd/programs/fileio_types.h +86 -0
- data/vendor/zstd/programs/lorem.c +285 -0
- data/vendor/zstd/programs/lorem.h +32 -0
- data/vendor/zstd/programs/platform.h +217 -0
- data/vendor/zstd/programs/timefn.c +170 -0
- data/vendor/zstd/programs/timefn.h +59 -0
- data/vendor/zstd/programs/util.c +1731 -0
- data/vendor/zstd/programs/util.h +364 -0
- data/vendor/zstd/programs/windres/verrsrc.h +17 -0
- data/vendor/zstd/programs/windres/zstd.rc +51 -0
- data/vendor/zstd/programs/windres/zstd32.res +0 -0
- data/vendor/zstd/programs/windres/zstd64.res +0 -0
- data/vendor/zstd/programs/zstd.1 +580 -0
- data/vendor/zstd/programs/zstd.1.md +714 -0
- data/vendor/zstd/programs/zstdcli.c +1675 -0
- data/vendor/zstd/programs/zstdcli_trace.c +173 -0
- data/vendor/zstd/programs/zstdcli_trace.h +24 -0
- data/vendor/zstd/programs/zstdgrep +134 -0
- data/vendor/zstd/programs/zstdgrep.1 +26 -0
- data/vendor/zstd/programs/zstdgrep.1.md +30 -0
- data/vendor/zstd/programs/zstdless +8 -0
- data/vendor/zstd/programs/zstdless.1 +14 -0
- data/vendor/zstd/programs/zstdless.1.md +16 -0
- data/vendor/zstd/tests/DEPRECATED-test-zstd-speed.py +378 -0
- data/vendor/zstd/tests/Makefile +485 -0
- data/vendor/zstd/tests/README.md +184 -0
- data/vendor/zstd/tests/automated_benchmarking.py +326 -0
- data/vendor/zstd/tests/checkTag.c +65 -0
- data/vendor/zstd/tests/check_size.py +31 -0
- data/vendor/zstd/tests/cli-tests/README.md +258 -0
- data/vendor/zstd/tests/cli-tests/basic/args.sh +10 -0
- data/vendor/zstd/tests/cli-tests/basic/args.sh.exit +1 -0
- data/vendor/zstd/tests/cli-tests/basic/args.sh.stderr.glob +28 -0
- data/vendor/zstd/tests/cli-tests/basic/help.sh +10 -0
- data/vendor/zstd/tests/cli-tests/basic/help.sh.stdout.glob +34 -0
- data/vendor/zstd/tests/cli-tests/basic/memlimit.sh +40 -0
- data/vendor/zstd/tests/cli-tests/basic/memlimit.sh.stderr.exact +13 -0
- data/vendor/zstd/tests/cli-tests/basic/memlimit.sh.stdout.exact +13 -0
- data/vendor/zstd/tests/cli-tests/basic/output_dir.sh +7 -0
- data/vendor/zstd/tests/cli-tests/basic/output_dir.sh.stderr.exact +2 -0
- data/vendor/zstd/tests/cli-tests/basic/output_dir.sh.stdout.exact +2 -0
- data/vendor/zstd/tests/cli-tests/basic/version.sh +6 -0
- data/vendor/zstd/tests/cli-tests/basic/version.sh.stdout.glob +2 -0
- data/vendor/zstd/tests/cli-tests/bin/cmp_size +44 -0
- data/vendor/zstd/tests/cli-tests/bin/datagen +3 -0
- data/vendor/zstd/tests/cli-tests/bin/die +4 -0
- data/vendor/zstd/tests/cli-tests/bin/println +2 -0
- data/vendor/zstd/tests/cli-tests/bin/unzstd +1 -0
- data/vendor/zstd/tests/cli-tests/bin/zstd +9 -0
- data/vendor/zstd/tests/cli-tests/bin/zstdcat +1 -0
- data/vendor/zstd/tests/cli-tests/bin/zstdgrep +2 -0
- data/vendor/zstd/tests/cli-tests/bin/zstdless +2 -0
- data/vendor/zstd/tests/cli-tests/cltools/setup +6 -0
- data/vendor/zstd/tests/cli-tests/cltools/zstdgrep.sh +8 -0
- data/vendor/zstd/tests/cli-tests/cltools/zstdgrep.sh.exit +1 -0
- data/vendor/zstd/tests/cli-tests/cltools/zstdgrep.sh.stderr.exact +1 -0
- data/vendor/zstd/tests/cli-tests/cltools/zstdgrep.sh.stdout.glob +4 -0
- data/vendor/zstd/tests/cli-tests/cltools/zstdless.sh +10 -0
- data/vendor/zstd/tests/cli-tests/cltools/zstdless.sh.stderr.exact +2 -0
- data/vendor/zstd/tests/cli-tests/cltools/zstdless.sh.stdout.glob +5 -0
- data/vendor/zstd/tests/cli-tests/common/format.sh +19 -0
- data/vendor/zstd/tests/cli-tests/common/mtime.sh +13 -0
- data/vendor/zstd/tests/cli-tests/common/permissions.sh +18 -0
- data/vendor/zstd/tests/cli-tests/common/platform.sh +47 -0
- data/vendor/zstd/tests/cli-tests/compression/adapt.sh +14 -0
- data/vendor/zstd/tests/cli-tests/compression/basic.sh +36 -0
- data/vendor/zstd/tests/cli-tests/compression/compress-literals.sh +10 -0
- data/vendor/zstd/tests/cli-tests/compression/format.sh +16 -0
- data/vendor/zstd/tests/cli-tests/compression/golden.sh +16 -0
- data/vendor/zstd/tests/cli-tests/compression/gzip-compat.sh +17 -0
- data/vendor/zstd/tests/cli-tests/compression/levels.sh +75 -0
- data/vendor/zstd/tests/cli-tests/compression/levels.sh.stderr.exact +80 -0
- data/vendor/zstd/tests/cli-tests/compression/long-distance-matcher.sh +7 -0
- data/vendor/zstd/tests/cli-tests/compression/multi-threaded.sh +22 -0
- data/vendor/zstd/tests/cli-tests/compression/multi-threaded.sh.stderr.exact +21 -0
- data/vendor/zstd/tests/cli-tests/compression/multiple-files.sh +21 -0
- data/vendor/zstd/tests/cli-tests/compression/multiple-files.sh.stdout.exact +12 -0
- data/vendor/zstd/tests/cli-tests/compression/row-match-finder.sh +7 -0
- data/vendor/zstd/tests/cli-tests/compression/setup +7 -0
- data/vendor/zstd/tests/cli-tests/compression/stream-size.sh +7 -0
- data/vendor/zstd/tests/cli-tests/compression/verbose-wlog.sh +11 -0
- data/vendor/zstd/tests/cli-tests/compression/verbose-wlog.sh.stderr.glob +5 -0
- data/vendor/zstd/tests/cli-tests/compression/verbose-wlog.sh.stdout.glob +5 -0
- data/vendor/zstd/tests/cli-tests/compression/window-resize.sh +9 -0
- data/vendor/zstd/tests/cli-tests/compression/window-resize.sh.stderr.ignore +0 -0
- data/vendor/zstd/tests/cli-tests/compression/window-resize.sh.stdout.glob +3 -0
- data/vendor/zstd/tests/cli-tests/decompression/detectErrors.sh +11 -0
- data/vendor/zstd/tests/cli-tests/decompression/golden.sh +7 -0
- data/vendor/zstd/tests/cli-tests/decompression/pass-through.sh +57 -0
- data/vendor/zstd/tests/cli-tests/decompression/pass-through.sh.stderr.exact +11 -0
- data/vendor/zstd/tests/cli-tests/decompression/pass-through.sh.stdout.exact +25 -0
- data/vendor/zstd/tests/cli-tests/determinism/basic.sh +36 -0
- data/vendor/zstd/tests/cli-tests/determinism/basic.sh.stderr.exact +0 -0
- data/vendor/zstd/tests/cli-tests/determinism/basic.sh.stdout.exact +880 -0
- data/vendor/zstd/tests/cli-tests/determinism/multithread.sh +45 -0
- data/vendor/zstd/tests/cli-tests/determinism/multithread.sh.stderr.exact +0 -0
- data/vendor/zstd/tests/cli-tests/determinism/multithread.sh.stdout.exact +260 -0
- data/vendor/zstd/tests/cli-tests/determinism/reuse.sh +44 -0
- data/vendor/zstd/tests/cli-tests/determinism/reuse.sh.stderr.exact +0 -0
- data/vendor/zstd/tests/cli-tests/determinism/reuse.sh.stdout.exact +19 -0
- data/vendor/zstd/tests/cli-tests/determinism/setup +5 -0
- data/vendor/zstd/tests/cli-tests/determinism/setup_once +30 -0
- data/vendor/zstd/tests/cli-tests/dict-builder/empty-input.sh +9 -0
- data/vendor/zstd/tests/cli-tests/dict-builder/empty-input.sh.stderr.exact +1 -0
- data/vendor/zstd/tests/cli-tests/dict-builder/no-inputs.sh +3 -0
- data/vendor/zstd/tests/cli-tests/dict-builder/no-inputs.sh.exit +1 -0
- data/vendor/zstd/tests/cli-tests/dict-builder/no-inputs.sh.stderr.exact +5 -0
- data/vendor/zstd/tests/cli-tests/dictionaries/dictionary-mismatch.sh +29 -0
- data/vendor/zstd/tests/cli-tests/dictionaries/dictionary-mismatch.sh.stderr.exact +7 -0
- data/vendor/zstd/tests/cli-tests/dictionaries/golden.sh +9 -0
- data/vendor/zstd/tests/cli-tests/dictionaries/setup +6 -0
- data/vendor/zstd/tests/cli-tests/dictionaries/setup_once +24 -0
- data/vendor/zstd/tests/cli-tests/file-handling/directory-mirror.sh +49 -0
- data/vendor/zstd/tests/cli-tests/file-handling/directory-mirror.sh.stderr.exact +0 -0
- data/vendor/zstd/tests/cli-tests/file-handling/directory-mirror.sh.stdout.exact +0 -0
- data/vendor/zstd/tests/cli-tests/file-stat/compress-file-to-dir-without-write-perm.sh +12 -0
- data/vendor/zstd/tests/cli-tests/file-stat/compress-file-to-dir-without-write-perm.sh.stderr.exact +30 -0
- data/vendor/zstd/tests/cli-tests/file-stat/compress-file-to-file.sh +9 -0
- data/vendor/zstd/tests/cli-tests/file-stat/compress-file-to-file.sh.stderr.glob +46 -0
- data/vendor/zstd/tests/cli-tests/file-stat/compress-file-to-stdout.sh +8 -0
- data/vendor/zstd/tests/cli-tests/file-stat/compress-file-to-stdout.sh.stderr.exact +24 -0
- data/vendor/zstd/tests/cli-tests/file-stat/compress-stdin-to-file.sh +8 -0
- data/vendor/zstd/tests/cli-tests/file-stat/compress-stdin-to-file.sh.stderr.glob +28 -0
- data/vendor/zstd/tests/cli-tests/file-stat/compress-stdin-to-stdout.sh +8 -0
- data/vendor/zstd/tests/cli-tests/file-stat/compress-stdin-to-stdout.sh.stderr.exact +18 -0
- data/vendor/zstd/tests/cli-tests/file-stat/decompress-file-to-file.sh +8 -0
- data/vendor/zstd/tests/cli-tests/file-stat/decompress-file-to-file.sh.stderr.glob +42 -0
- data/vendor/zstd/tests/cli-tests/file-stat/decompress-file-to-stdout.sh +7 -0
- data/vendor/zstd/tests/cli-tests/file-stat/decompress-file-to-stdout.sh.stderr.exact +18 -0
- data/vendor/zstd/tests/cli-tests/file-stat/decompress-stdin-to-file.sh +7 -0
- data/vendor/zstd/tests/cli-tests/file-stat/decompress-stdin-to-file.sh.stderr.glob +24 -0
- data/vendor/zstd/tests/cli-tests/file-stat/decompress-stdin-to-stdout.sh +7 -0
- data/vendor/zstd/tests/cli-tests/file-stat/decompress-stdin-to-stdout.sh.stderr.exact +14 -0
- data/vendor/zstd/tests/cli-tests/progress/no-progress.sh +46 -0
- data/vendor/zstd/tests/cli-tests/progress/no-progress.sh.stderr.glob +96 -0
- data/vendor/zstd/tests/cli-tests/progress/progress.sh +41 -0
- data/vendor/zstd/tests/cli-tests/progress/progress.sh.stderr.glob +62 -0
- data/vendor/zstd/tests/cli-tests/run.py +732 -0
- data/vendor/zstd/tests/cli-tests/zstd-symlinks/setup +6 -0
- data/vendor/zstd/tests/cli-tests/zstd-symlinks/zstdcat.sh +12 -0
- data/vendor/zstd/tests/cli-tests/zstd-symlinks/zstdcat.sh.stdout.exact +8 -0
- data/vendor/zstd/tests/datagencli.c +149 -0
- data/vendor/zstd/tests/decodecorpus.c +1998 -0
- data/vendor/zstd/tests/dict-files/zero-weight-dict +0 -0
- data/vendor/zstd/tests/external_matchfinder.c +140 -0
- data/vendor/zstd/tests/external_matchfinder.h +39 -0
- data/vendor/zstd/tests/fullbench.c +1210 -0
- data/vendor/zstd/tests/fuzz/Makefile +278 -0
- data/vendor/zstd/tests/fuzz/README.md +161 -0
- data/vendor/zstd/tests/fuzz/block_decompress.c +53 -0
- data/vendor/zstd/tests/fuzz/block_round_trip.c +103 -0
- data/vendor/zstd/tests/fuzz/decompress_cross_format.c +130 -0
- data/vendor/zstd/tests/fuzz/decompress_dstSize_tooSmall.c +74 -0
- data/vendor/zstd/tests/fuzz/dictionary_decompress.c +77 -0
- data/vendor/zstd/tests/fuzz/dictionary_loader.c +106 -0
- data/vendor/zstd/tests/fuzz/dictionary_round_trip.c +155 -0
- data/vendor/zstd/tests/fuzz/dictionary_stream_round_trip.c +209 -0
- data/vendor/zstd/tests/fuzz/fse_read_ncount.c +100 -0
- data/vendor/zstd/tests/fuzz/fuzz.h +57 -0
- data/vendor/zstd/tests/fuzz/fuzz.py +910 -0
- data/vendor/zstd/tests/fuzz/fuzz_data_producer.c +95 -0
- data/vendor/zstd/tests/fuzz/fuzz_data_producer.h +66 -0
- data/vendor/zstd/tests/fuzz/fuzz_helpers.c +47 -0
- data/vendor/zstd/tests/fuzz/fuzz_helpers.h +82 -0
- data/vendor/zstd/tests/fuzz/fuzz_third_party_seq_prod.h +116 -0
- data/vendor/zstd/tests/fuzz/generate_sequences.c +88 -0
- data/vendor/zstd/tests/fuzz/huf_decompress.c +68 -0
- data/vendor/zstd/tests/fuzz/huf_round_trip.c +137 -0
- data/vendor/zstd/tests/fuzz/raw_dictionary_round_trip.c +119 -0
- data/vendor/zstd/tests/fuzz/regression_driver.c +90 -0
- data/vendor/zstd/tests/fuzz/seekable_roundtrip.c +88 -0
- data/vendor/zstd/tests/fuzz/seq_prod_fuzz_example/Makefile +16 -0
- data/vendor/zstd/tests/fuzz/seq_prod_fuzz_example/README.md +12 -0
- data/vendor/zstd/tests/fuzz/seq_prod_fuzz_example/example_seq_prod.c +52 -0
- data/vendor/zstd/tests/fuzz/sequence_compression_api.c +452 -0
- data/vendor/zstd/tests/fuzz/simple_compress.c +60 -0
- data/vendor/zstd/tests/fuzz/simple_decompress.c +59 -0
- data/vendor/zstd/tests/fuzz/simple_round_trip.c +182 -0
- data/vendor/zstd/tests/fuzz/stream_decompress.c +119 -0
- data/vendor/zstd/tests/fuzz/stream_round_trip.c +218 -0
- data/vendor/zstd/tests/fuzz/zstd_frame_info.c +43 -0
- data/vendor/zstd/tests/fuzz/zstd_helpers.c +208 -0
- data/vendor/zstd/tests/fuzz/zstd_helpers.h +56 -0
- data/vendor/zstd/tests/fuzzer.c +5482 -0
- data/vendor/zstd/tests/golden-compression/PR-3517-block-splitter-corruption-test +1 -0
- data/vendor/zstd/tests/golden-compression/http +1 -0
- data/vendor/zstd/tests/golden-compression/huffman-compressed-larger +0 -0
- data/vendor/zstd/tests/golden-compression/large-literal-and-match-lengths +0 -0
- data/vendor/zstd/tests/golden-decompression/block-128k.zst +0 -0
- data/vendor/zstd/tests/golden-decompression/empty-block.zst +0 -0
- data/vendor/zstd/tests/golden-decompression/rle-first-block.zst +0 -0
- data/vendor/zstd/tests/golden-decompression/zeroSeq_2B.zst +0 -0
- data/vendor/zstd/tests/golden-decompression-errors/off0.bin.zst +0 -0
- data/vendor/zstd/tests/golden-decompression-errors/truncated_huff_state.zst +0 -0
- data/vendor/zstd/tests/golden-decompression-errors/zeroSeq_extraneous.zst +0 -0
- data/vendor/zstd/tests/golden-dictionaries/http-dict-missing-symbols +0 -0
- data/vendor/zstd/tests/gzip/Makefile +45 -0
- data/vendor/zstd/tests/gzip/gzip-env.sh +46 -0
- data/vendor/zstd/tests/gzip/helin-segv.sh +31 -0
- data/vendor/zstd/tests/gzip/help-version.sh +270 -0
- data/vendor/zstd/tests/gzip/hufts-segv.gz +0 -0
- data/vendor/zstd/tests/gzip/hufts.sh +34 -0
- data/vendor/zstd/tests/gzip/init.cfg +5 -0
- data/vendor/zstd/tests/gzip/init.sh +616 -0
- data/vendor/zstd/tests/gzip/keep.sh +51 -0
- data/vendor/zstd/tests/gzip/list.sh +31 -0
- data/vendor/zstd/tests/gzip/memcpy-abuse.sh +34 -0
- data/vendor/zstd/tests/gzip/mixed.sh +68 -0
- data/vendor/zstd/tests/gzip/null-suffix-clobber.sh +35 -0
- data/vendor/zstd/tests/gzip/stdin.sh +31 -0
- data/vendor/zstd/tests/gzip/test-driver.sh +150 -0
- data/vendor/zstd/tests/gzip/trailing-nul.sh +37 -0
- data/vendor/zstd/tests/gzip/unpack-invalid.sh +36 -0
- data/vendor/zstd/tests/gzip/z-suffix.sh +30 -0
- data/vendor/zstd/tests/gzip/zdiff.sh +48 -0
- data/vendor/zstd/tests/gzip/zgrep-context.sh +47 -0
- data/vendor/zstd/tests/gzip/zgrep-f.sh +43 -0
- data/vendor/zstd/tests/gzip/zgrep-signal.sh +64 -0
- data/vendor/zstd/tests/gzip/znew-k.sh +40 -0
- data/vendor/zstd/tests/invalidDictionaries.c +61 -0
- data/vendor/zstd/tests/largeDictionary.c +131 -0
- data/vendor/zstd/tests/legacy.c +262 -0
- data/vendor/zstd/tests/libzstd_builds.sh +104 -0
- data/vendor/zstd/tests/longmatch.c +123 -0
- data/vendor/zstd/tests/loremOut.c +50 -0
- data/vendor/zstd/tests/loremOut.h +15 -0
- data/vendor/zstd/tests/paramgrill.c +2965 -0
- data/vendor/zstd/tests/playTests.sh +1926 -0
- data/vendor/zstd/tests/poolTests.c +271 -0
- data/vendor/zstd/tests/rateLimiter.py +41 -0
- data/vendor/zstd/tests/regression/Makefile +60 -0
- data/vendor/zstd/tests/regression/README.md +28 -0
- data/vendor/zstd/tests/regression/config.c +404 -0
- data/vendor/zstd/tests/regression/config.h +91 -0
- data/vendor/zstd/tests/regression/data.c +631 -0
- data/vendor/zstd/tests/regression/data.h +121 -0
- data/vendor/zstd/tests/regression/levels.h +59 -0
- data/vendor/zstd/tests/regression/method.c +701 -0
- data/vendor/zstd/tests/regression/method.h +65 -0
- data/vendor/zstd/tests/regression/result.c +30 -0
- data/vendor/zstd/tests/regression/result.h +103 -0
- data/vendor/zstd/tests/regression/results.csv +1480 -0
- data/vendor/zstd/tests/regression/test.c +362 -0
- data/vendor/zstd/tests/roundTripCrash.c +241 -0
- data/vendor/zstd/tests/seqgen.c +260 -0
- data/vendor/zstd/tests/seqgen.h +58 -0
- data/vendor/zstd/tests/test-license.py +156 -0
- data/vendor/zstd/tests/test-variants.sh +115 -0
- data/vendor/zstd/tests/test-zstd-versions.py +308 -0
- data/vendor/zstd/tests/test_process_substitution.bash +92 -0
- data/vendor/zstd/tests/zstreamtest.c +3467 -0
- data/vendor/zstd/zlibWrapper/BUCK +22 -0
- data/vendor/zstd/zlibWrapper/Makefile +120 -0
- data/vendor/zstd/zlibWrapper/README.md +163 -0
- data/vendor/zstd/zlibWrapper/examples/example.c +598 -0
- data/vendor/zstd/zlibWrapper/examples/example_original.c +599 -0
- data/vendor/zstd/zlibWrapper/examples/fitblk.c +254 -0
- data/vendor/zstd/zlibWrapper/examples/fitblk_original.c +233 -0
- data/vendor/zstd/zlibWrapper/examples/minigzip.c +605 -0
- data/vendor/zstd/zlibWrapper/examples/zwrapbench.c +1018 -0
- data/vendor/zstd/zlibWrapper/gzclose.c +26 -0
- data/vendor/zstd/zlibWrapper/gzcompatibility.h +68 -0
- data/vendor/zstd/zlibWrapper/gzguts.h +229 -0
- data/vendor/zstd/zlibWrapper/gzlib.c +587 -0
- data/vendor/zstd/zlibWrapper/gzread.c +637 -0
- data/vendor/zstd/zlibWrapper/gzwrite.c +632 -0
- data/vendor/zstd/zlibWrapper/zstd_zlibwrapper.c +1200 -0
- data/vendor/zstd/zlibWrapper/zstd_zlibwrapper.h +91 -0
- metadata +738 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under both the BSD-style license (found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
7
|
+
* in the COPYING file in the root directory of this source tree).
|
|
8
|
+
*/
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include <cassert>
|
|
12
|
+
#include <functional>
|
|
13
|
+
#include <memory>
|
|
14
|
+
#include <mutex>
|
|
15
|
+
#include <vector>
|
|
16
|
+
|
|
17
|
+
namespace pzstd {
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* An unbounded pool of resources.
|
|
21
|
+
* A `ResourcePool<T>` requires a factory function that takes allocates `T*` and
|
|
22
|
+
* a free function that frees a `T*`.
|
|
23
|
+
* Calling `ResourcePool::get()` will give you a new `ResourcePool::UniquePtr`
|
|
24
|
+
* to a `T`, and when it goes out of scope the resource will be returned to the
|
|
25
|
+
* pool.
|
|
26
|
+
* The `ResourcePool<T>` *must* survive longer than any resources it hands out.
|
|
27
|
+
* Remember that `ResourcePool<T>` hands out mutable `T`s, so make sure to clean
|
|
28
|
+
* up the resource before or after every use.
|
|
29
|
+
*/
|
|
30
|
+
template <typename T>
|
|
31
|
+
class ResourcePool {
|
|
32
|
+
public:
|
|
33
|
+
class Deleter;
|
|
34
|
+
using Factory = std::function<T*()>;
|
|
35
|
+
using Free = std::function<void(T*)>;
|
|
36
|
+
using UniquePtr = std::unique_ptr<T, Deleter>;
|
|
37
|
+
|
|
38
|
+
private:
|
|
39
|
+
std::mutex mutex_;
|
|
40
|
+
Factory factory_;
|
|
41
|
+
Free free_;
|
|
42
|
+
std::vector<T*> resources_;
|
|
43
|
+
unsigned inUse_;
|
|
44
|
+
|
|
45
|
+
public:
|
|
46
|
+
/**
|
|
47
|
+
* Creates a `ResourcePool`.
|
|
48
|
+
*
|
|
49
|
+
* @param factory The function to use to create new resources.
|
|
50
|
+
* @param free The function to use to free resources created by `factory`.
|
|
51
|
+
*/
|
|
52
|
+
ResourcePool(Factory factory, Free free)
|
|
53
|
+
: factory_(std::move(factory)), free_(std::move(free)), inUse_(0) {}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @returns A unique pointer to a resource. The resource is null iff
|
|
57
|
+
* there are no available resources and `factory()` returns null.
|
|
58
|
+
*/
|
|
59
|
+
UniquePtr get() {
|
|
60
|
+
std::lock_guard<std::mutex> lock(mutex_);
|
|
61
|
+
if (!resources_.empty()) {
|
|
62
|
+
UniquePtr resource{resources_.back(), Deleter{*this}};
|
|
63
|
+
resources_.pop_back();
|
|
64
|
+
++inUse_;
|
|
65
|
+
return resource;
|
|
66
|
+
}
|
|
67
|
+
UniquePtr resource{factory_(), Deleter{*this}};
|
|
68
|
+
++inUse_;
|
|
69
|
+
return resource;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
~ResourcePool() noexcept {
|
|
73
|
+
assert(inUse_ == 0);
|
|
74
|
+
for (const auto resource : resources_) {
|
|
75
|
+
free_(resource);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
class Deleter {
|
|
80
|
+
ResourcePool *pool_;
|
|
81
|
+
public:
|
|
82
|
+
explicit Deleter(ResourcePool &pool) : pool_(&pool) {}
|
|
83
|
+
|
|
84
|
+
void operator() (T *resource) {
|
|
85
|
+
std::lock_guard<std::mutex> lock(pool_->mutex_);
|
|
86
|
+
// Make sure we don't put null resources into the pool
|
|
87
|
+
if (resource) {
|
|
88
|
+
pool_->resources_.push_back(resource);
|
|
89
|
+
}
|
|
90
|
+
assert(pool_->inUse_ > 0);
|
|
91
|
+
--pool_->inUse_;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under both the BSD-style license (found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
7
|
+
* in the COPYING file in the root directory of this source tree).
|
|
8
|
+
*/
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include <utility>
|
|
12
|
+
|
|
13
|
+
namespace pzstd {
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Dismissable scope guard.
|
|
17
|
+
* `Function` must be callable and take no parameters.
|
|
18
|
+
* Unless `dismiss()` is called, the callable is executed upon destruction of
|
|
19
|
+
* `ScopeGuard`.
|
|
20
|
+
*
|
|
21
|
+
* Example:
|
|
22
|
+
*
|
|
23
|
+
* auto guard = makeScopeGuard([&] { cleanup(); });
|
|
24
|
+
*/
|
|
25
|
+
template <typename Function>
|
|
26
|
+
class ScopeGuard {
|
|
27
|
+
Function function;
|
|
28
|
+
bool dismissed;
|
|
29
|
+
|
|
30
|
+
public:
|
|
31
|
+
explicit ScopeGuard(Function&& function)
|
|
32
|
+
: function(std::move(function)), dismissed(false) {}
|
|
33
|
+
|
|
34
|
+
void dismiss() {
|
|
35
|
+
dismissed = true;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
~ScopeGuard() noexcept {
|
|
39
|
+
if (!dismissed) {
|
|
40
|
+
function();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/// Creates a scope guard from `function`.
|
|
46
|
+
template <typename Function>
|
|
47
|
+
ScopeGuard<Function> makeScopeGuard(Function&& function) {
|
|
48
|
+
return ScopeGuard<Function>(std::forward<Function>(function));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under both the BSD-style license (found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
7
|
+
* in the COPYING file in the root directory of this source tree).
|
|
8
|
+
*/
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include "utils/WorkQueue.h"
|
|
12
|
+
|
|
13
|
+
#include <cstddef>
|
|
14
|
+
#include <functional>
|
|
15
|
+
#include <thread>
|
|
16
|
+
#include <vector>
|
|
17
|
+
|
|
18
|
+
namespace pzstd {
|
|
19
|
+
/// A simple thread pool that pulls tasks off its queue in FIFO order.
|
|
20
|
+
class ThreadPool {
|
|
21
|
+
std::vector<std::thread> threads_;
|
|
22
|
+
|
|
23
|
+
WorkQueue<std::function<void()>> tasks_;
|
|
24
|
+
|
|
25
|
+
public:
|
|
26
|
+
/// Constructs a thread pool with `numThreads` threads.
|
|
27
|
+
explicit ThreadPool(std::size_t numThreads) {
|
|
28
|
+
threads_.reserve(numThreads);
|
|
29
|
+
for (std::size_t i = 0; i < numThreads; ++i) {
|
|
30
|
+
threads_.emplace_back([this] {
|
|
31
|
+
std::function<void()> task;
|
|
32
|
+
while (tasks_.pop(task)) {
|
|
33
|
+
task();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/// Finishes all tasks currently in the queue.
|
|
40
|
+
~ThreadPool() {
|
|
41
|
+
tasks_.finish();
|
|
42
|
+
for (auto& thread : threads_) {
|
|
43
|
+
thread.join();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Adds `task` to the queue of tasks to execute. Since `task` is a
|
|
49
|
+
* `std::function<>`, it cannot be a move only type. So any lambda passed must
|
|
50
|
+
* not capture move only types (like `std::unique_ptr`).
|
|
51
|
+
*
|
|
52
|
+
* @param task The task to execute.
|
|
53
|
+
*/
|
|
54
|
+
void add(std::function<void()> task) {
|
|
55
|
+
tasks_.push(std::move(task));
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under both the BSD-style license (found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
7
|
+
* in the COPYING file in the root directory of this source tree).
|
|
8
|
+
*/
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include "utils/Buffer.h"
|
|
12
|
+
|
|
13
|
+
#include <atomic>
|
|
14
|
+
#include <cassert>
|
|
15
|
+
#include <cstddef>
|
|
16
|
+
#include <condition_variable>
|
|
17
|
+
#include <cstddef>
|
|
18
|
+
#include <functional>
|
|
19
|
+
#include <mutex>
|
|
20
|
+
#include <queue>
|
|
21
|
+
|
|
22
|
+
namespace pzstd {
|
|
23
|
+
|
|
24
|
+
/// Unbounded thread-safe work queue.
|
|
25
|
+
template <typename T>
|
|
26
|
+
class WorkQueue {
|
|
27
|
+
// Protects all member variable access
|
|
28
|
+
std::mutex mutex_;
|
|
29
|
+
std::condition_variable readerCv_;
|
|
30
|
+
std::condition_variable writerCv_;
|
|
31
|
+
std::condition_variable finishCv_;
|
|
32
|
+
|
|
33
|
+
std::queue<T> queue_;
|
|
34
|
+
bool done_;
|
|
35
|
+
std::size_t maxSize_;
|
|
36
|
+
|
|
37
|
+
// Must have lock to call this function
|
|
38
|
+
bool full() const {
|
|
39
|
+
if (maxSize_ == 0) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
return queue_.size() >= maxSize_;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public:
|
|
46
|
+
/**
|
|
47
|
+
* Constructs an empty work queue with an optional max size.
|
|
48
|
+
* If `maxSize == 0` the queue size is unbounded.
|
|
49
|
+
*
|
|
50
|
+
* @param maxSize The maximum allowed size of the work queue.
|
|
51
|
+
*/
|
|
52
|
+
WorkQueue(std::size_t maxSize = 0) : done_(false), maxSize_(maxSize) {}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Push an item onto the work queue. Notify a single thread that work is
|
|
56
|
+
* available. If `finish()` has been called, do nothing and return false.
|
|
57
|
+
* If `push()` returns false, then `item` has not been moved from.
|
|
58
|
+
*
|
|
59
|
+
* @param item Item to push onto the queue.
|
|
60
|
+
* @returns True upon success, false if `finish()` has been called. An
|
|
61
|
+
* item was pushed iff `push()` returns true.
|
|
62
|
+
*/
|
|
63
|
+
bool push(T&& item) {
|
|
64
|
+
{
|
|
65
|
+
std::unique_lock<std::mutex> lock(mutex_);
|
|
66
|
+
while (full() && !done_) {
|
|
67
|
+
writerCv_.wait(lock);
|
|
68
|
+
}
|
|
69
|
+
if (done_) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
queue_.push(std::move(item));
|
|
73
|
+
}
|
|
74
|
+
readerCv_.notify_one();
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Attempts to pop an item off the work queue. It will block until data is
|
|
80
|
+
* available or `finish()` has been called.
|
|
81
|
+
*
|
|
82
|
+
* @param[out] item If `pop` returns `true`, it contains the popped item.
|
|
83
|
+
* If `pop` returns `false`, it is unmodified.
|
|
84
|
+
* @returns True upon success. False if the queue is empty and
|
|
85
|
+
* `finish()` has been called.
|
|
86
|
+
*/
|
|
87
|
+
bool pop(T& item) {
|
|
88
|
+
{
|
|
89
|
+
std::unique_lock<std::mutex> lock(mutex_);
|
|
90
|
+
while (queue_.empty() && !done_) {
|
|
91
|
+
readerCv_.wait(lock);
|
|
92
|
+
}
|
|
93
|
+
if (queue_.empty()) {
|
|
94
|
+
assert(done_);
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
item = std::move(queue_.front());
|
|
98
|
+
queue_.pop();
|
|
99
|
+
}
|
|
100
|
+
writerCv_.notify_one();
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Sets the maximum queue size. If `maxSize == 0` then it is unbounded.
|
|
106
|
+
*
|
|
107
|
+
* @param maxSize The new maximum queue size.
|
|
108
|
+
*/
|
|
109
|
+
void setMaxSize(std::size_t maxSize) {
|
|
110
|
+
{
|
|
111
|
+
std::lock_guard<std::mutex> lock(mutex_);
|
|
112
|
+
maxSize_ = maxSize;
|
|
113
|
+
}
|
|
114
|
+
writerCv_.notify_all();
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Promise that either the reader side or the writer side is done.
|
|
119
|
+
* If the writer is done, `push()` won't be called again, so once the queue
|
|
120
|
+
* is empty there will never be any more work. If the reader is done, `pop()`
|
|
121
|
+
* won't be called again, so further items pushed will just be ignored.
|
|
122
|
+
*/
|
|
123
|
+
void finish() {
|
|
124
|
+
{
|
|
125
|
+
std::lock_guard<std::mutex> lock(mutex_);
|
|
126
|
+
done_ = true;
|
|
127
|
+
}
|
|
128
|
+
readerCv_.notify_all();
|
|
129
|
+
writerCv_.notify_all();
|
|
130
|
+
finishCv_.notify_all();
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/// Blocks until `finish()` has been called (but the queue may not be empty).
|
|
134
|
+
void waitUntilFinished() {
|
|
135
|
+
std::unique_lock<std::mutex> lock(mutex_);
|
|
136
|
+
while (!done_) {
|
|
137
|
+
finishCv_.wait(lock);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/// Work queue for `Buffer`s that knows the total number of bytes in the queue.
|
|
143
|
+
class BufferWorkQueue {
|
|
144
|
+
WorkQueue<Buffer> queue_;
|
|
145
|
+
std::atomic<std::size_t> size_;
|
|
146
|
+
|
|
147
|
+
public:
|
|
148
|
+
BufferWorkQueue(std::size_t maxSize = 0) : queue_(maxSize), size_(0) {}
|
|
149
|
+
|
|
150
|
+
void push(Buffer buffer) {
|
|
151
|
+
size_.fetch_add(buffer.size());
|
|
152
|
+
queue_.push(std::move(buffer));
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
bool pop(Buffer& buffer) {
|
|
156
|
+
bool result = queue_.pop(buffer);
|
|
157
|
+
if (result) {
|
|
158
|
+
size_.fetch_sub(buffer.size());
|
|
159
|
+
}
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
void setMaxSize(std::size_t maxSize) {
|
|
164
|
+
queue_.setMaxSize(maxSize);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
void finish() {
|
|
168
|
+
queue_.finish();
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Blocks until `finish()` has been called.
|
|
173
|
+
*
|
|
174
|
+
* @returns The total number of bytes of all the `Buffer`s currently in the
|
|
175
|
+
* queue.
|
|
176
|
+
*/
|
|
177
|
+
std::size_t size() {
|
|
178
|
+
queue_.waitUntilFinished();
|
|
179
|
+
return size_.load();
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
cxx_test(
|
|
2
|
+
name='buffer_test',
|
|
3
|
+
srcs=['BufferTest.cpp'],
|
|
4
|
+
deps=['//contrib/pzstd/utils:buffer'],
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
cxx_test(
|
|
8
|
+
name='range_test',
|
|
9
|
+
srcs=['RangeTest.cpp'],
|
|
10
|
+
deps=['//contrib/pzstd/utils:range'],
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
cxx_test(
|
|
14
|
+
name='resource_pool_test',
|
|
15
|
+
srcs=['ResourcePoolTest.cpp'],
|
|
16
|
+
deps=['//contrib/pzstd/utils:resource_pool'],
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
cxx_test(
|
|
20
|
+
name='scope_guard_test',
|
|
21
|
+
srcs=['ScopeGuardTest.cpp'],
|
|
22
|
+
deps=['//contrib/pzstd/utils:scope_guard'],
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
cxx_test(
|
|
26
|
+
name='thread_pool_test',
|
|
27
|
+
srcs=['ThreadPoolTest.cpp'],
|
|
28
|
+
deps=['//contrib/pzstd/utils:thread_pool'],
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
cxx_test(
|
|
32
|
+
name='work_queue_test',
|
|
33
|
+
srcs=['RangeTest.cpp'],
|
|
34
|
+
deps=['//contrib/pzstd/utils:work_queue'],
|
|
35
|
+
)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under both the BSD-style license (found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
7
|
+
* in the COPYING file in the root directory of this source tree).
|
|
8
|
+
*/
|
|
9
|
+
#include "utils/Buffer.h"
|
|
10
|
+
#include "utils/Range.h"
|
|
11
|
+
|
|
12
|
+
#include <gtest/gtest.h>
|
|
13
|
+
#include <memory>
|
|
14
|
+
|
|
15
|
+
using namespace pzstd;
|
|
16
|
+
|
|
17
|
+
namespace {
|
|
18
|
+
void deleter(const unsigned char* buf) {
|
|
19
|
+
delete[] buf;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
TEST(Buffer, Constructors) {
|
|
24
|
+
Buffer empty;
|
|
25
|
+
EXPECT_TRUE(empty.empty());
|
|
26
|
+
EXPECT_EQ(0, empty.size());
|
|
27
|
+
|
|
28
|
+
Buffer sized(5);
|
|
29
|
+
EXPECT_FALSE(sized.empty());
|
|
30
|
+
EXPECT_EQ(5, sized.size());
|
|
31
|
+
|
|
32
|
+
Buffer moved(std::move(sized));
|
|
33
|
+
EXPECT_FALSE(sized.empty());
|
|
34
|
+
EXPECT_EQ(5, sized.size());
|
|
35
|
+
|
|
36
|
+
Buffer assigned;
|
|
37
|
+
assigned = std::move(moved);
|
|
38
|
+
EXPECT_FALSE(sized.empty());
|
|
39
|
+
EXPECT_EQ(5, sized.size());
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
TEST(Buffer, BufferManagement) {
|
|
43
|
+
std::shared_ptr<unsigned char> buf(new unsigned char[10], deleter);
|
|
44
|
+
{
|
|
45
|
+
Buffer acquired(buf, MutableByteRange(buf.get(), buf.get() + 10));
|
|
46
|
+
EXPECT_EQ(2, buf.use_count());
|
|
47
|
+
Buffer moved(std::move(acquired));
|
|
48
|
+
EXPECT_EQ(2, buf.use_count());
|
|
49
|
+
Buffer assigned;
|
|
50
|
+
assigned = std::move(moved);
|
|
51
|
+
EXPECT_EQ(2, buf.use_count());
|
|
52
|
+
|
|
53
|
+
Buffer split = assigned.splitAt(5);
|
|
54
|
+
EXPECT_EQ(3, buf.use_count());
|
|
55
|
+
|
|
56
|
+
split.advance(1);
|
|
57
|
+
assigned.subtract(1);
|
|
58
|
+
EXPECT_EQ(3, buf.use_count());
|
|
59
|
+
}
|
|
60
|
+
EXPECT_EQ(1, buf.use_count());
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
TEST(Buffer, Modifiers) {
|
|
64
|
+
Buffer buf(10);
|
|
65
|
+
{
|
|
66
|
+
unsigned char i = 0;
|
|
67
|
+
for (auto& byte : buf.range()) {
|
|
68
|
+
byte = i++;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
auto prefix = buf.splitAt(2);
|
|
73
|
+
|
|
74
|
+
ASSERT_EQ(2, prefix.size());
|
|
75
|
+
EXPECT_EQ(0, *prefix.data());
|
|
76
|
+
|
|
77
|
+
ASSERT_EQ(8, buf.size());
|
|
78
|
+
EXPECT_EQ(2, *buf.data());
|
|
79
|
+
|
|
80
|
+
buf.advance(2);
|
|
81
|
+
EXPECT_EQ(4, *buf.data());
|
|
82
|
+
|
|
83
|
+
EXPECT_EQ(9, *(buf.range().end() - 1));
|
|
84
|
+
|
|
85
|
+
buf.subtract(2);
|
|
86
|
+
EXPECT_EQ(7, *(buf.range().end() - 1));
|
|
87
|
+
|
|
88
|
+
EXPECT_EQ(4, buf.size());
|
|
89
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under both the BSD-style license (found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
7
|
+
* in the COPYING file in the root directory of this source tree).
|
|
8
|
+
*/
|
|
9
|
+
#include "utils/Range.h"
|
|
10
|
+
|
|
11
|
+
#include <gtest/gtest.h>
|
|
12
|
+
#include <string>
|
|
13
|
+
|
|
14
|
+
using namespace pzstd;
|
|
15
|
+
|
|
16
|
+
// Range is directly copied from folly.
|
|
17
|
+
// Just some sanity tests to make sure everything seems to work.
|
|
18
|
+
|
|
19
|
+
TEST(Range, Constructors) {
|
|
20
|
+
StringPiece empty;
|
|
21
|
+
EXPECT_TRUE(empty.empty());
|
|
22
|
+
EXPECT_EQ(0, empty.size());
|
|
23
|
+
|
|
24
|
+
std::string str = "hello";
|
|
25
|
+
{
|
|
26
|
+
Range<std::string::const_iterator> piece(str.begin(), str.end());
|
|
27
|
+
EXPECT_EQ(5, piece.size());
|
|
28
|
+
EXPECT_EQ('h', *piece.data());
|
|
29
|
+
EXPECT_EQ('o', *(piece.end() - 1));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
{
|
|
33
|
+
StringPiece piece(str.data(), str.size());
|
|
34
|
+
EXPECT_EQ(5, piece.size());
|
|
35
|
+
EXPECT_EQ('h', *piece.data());
|
|
36
|
+
EXPECT_EQ('o', *(piece.end() - 1));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
{
|
|
40
|
+
StringPiece piece(str);
|
|
41
|
+
EXPECT_EQ(5, piece.size());
|
|
42
|
+
EXPECT_EQ('h', *piece.data());
|
|
43
|
+
EXPECT_EQ('o', *(piece.end() - 1));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
{
|
|
47
|
+
StringPiece piece(str.c_str());
|
|
48
|
+
EXPECT_EQ(5, piece.size());
|
|
49
|
+
EXPECT_EQ('h', *piece.data());
|
|
50
|
+
EXPECT_EQ('o', *(piece.end() - 1));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
TEST(Range, Modifiers) {
|
|
55
|
+
StringPiece range("hello world");
|
|
56
|
+
ASSERT_EQ(11, range.size());
|
|
57
|
+
|
|
58
|
+
{
|
|
59
|
+
auto hello = range.subpiece(0, 5);
|
|
60
|
+
EXPECT_EQ(5, hello.size());
|
|
61
|
+
EXPECT_EQ('h', *hello.data());
|
|
62
|
+
EXPECT_EQ('o', *(hello.end() - 1));
|
|
63
|
+
}
|
|
64
|
+
{
|
|
65
|
+
auto hello = range;
|
|
66
|
+
hello.subtract(6);
|
|
67
|
+
EXPECT_EQ(5, hello.size());
|
|
68
|
+
EXPECT_EQ('h', *hello.data());
|
|
69
|
+
EXPECT_EQ('o', *(hello.end() - 1));
|
|
70
|
+
}
|
|
71
|
+
{
|
|
72
|
+
auto world = range;
|
|
73
|
+
world.advance(6);
|
|
74
|
+
EXPECT_EQ(5, world.size());
|
|
75
|
+
EXPECT_EQ('w', *world.data());
|
|
76
|
+
EXPECT_EQ('d', *(world.end() - 1));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
std::string expected = "hello world";
|
|
80
|
+
EXPECT_EQ(expected, std::string(range.begin(), range.end()));
|
|
81
|
+
EXPECT_EQ(expected, std::string(range.data(), range.size()));
|
|
82
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under both the BSD-style license (found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
7
|
+
* in the COPYING file in the root directory of this source tree).
|
|
8
|
+
*/
|
|
9
|
+
#include "utils/ResourcePool.h"
|
|
10
|
+
|
|
11
|
+
#include <gtest/gtest.h>
|
|
12
|
+
#include <atomic>
|
|
13
|
+
#include <thread>
|
|
14
|
+
|
|
15
|
+
using namespace pzstd;
|
|
16
|
+
|
|
17
|
+
TEST(ResourcePool, FullTest) {
|
|
18
|
+
unsigned numCreated = 0;
|
|
19
|
+
unsigned numDeleted = 0;
|
|
20
|
+
{
|
|
21
|
+
ResourcePool<int> pool(
|
|
22
|
+
[&numCreated] { ++numCreated; return new int{5}; },
|
|
23
|
+
[&numDeleted](int *x) { ++numDeleted; delete x; });
|
|
24
|
+
|
|
25
|
+
{
|
|
26
|
+
auto i = pool.get();
|
|
27
|
+
EXPECT_EQ(5, *i);
|
|
28
|
+
*i = 6;
|
|
29
|
+
}
|
|
30
|
+
{
|
|
31
|
+
auto i = pool.get();
|
|
32
|
+
EXPECT_EQ(6, *i);
|
|
33
|
+
auto j = pool.get();
|
|
34
|
+
EXPECT_EQ(5, *j);
|
|
35
|
+
*j = 7;
|
|
36
|
+
}
|
|
37
|
+
{
|
|
38
|
+
auto i = pool.get();
|
|
39
|
+
EXPECT_EQ(6, *i);
|
|
40
|
+
auto j = pool.get();
|
|
41
|
+
EXPECT_EQ(7, *j);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
EXPECT_EQ(2, numCreated);
|
|
45
|
+
EXPECT_EQ(numCreated, numDeleted);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
TEST(ResourcePool, ThreadSafe) {
|
|
49
|
+
std::atomic<unsigned> numCreated{0};
|
|
50
|
+
std::atomic<unsigned> numDeleted{0};
|
|
51
|
+
{
|
|
52
|
+
ResourcePool<int> pool(
|
|
53
|
+
[&numCreated] { ++numCreated; return new int{0}; },
|
|
54
|
+
[&numDeleted](int *x) { ++numDeleted; delete x; });
|
|
55
|
+
auto push = [&pool] {
|
|
56
|
+
for (int i = 0; i < 100; ++i) {
|
|
57
|
+
auto x = pool.get();
|
|
58
|
+
++*x;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
std::thread t1{push};
|
|
62
|
+
std::thread t2{push};
|
|
63
|
+
t1.join();
|
|
64
|
+
t2.join();
|
|
65
|
+
|
|
66
|
+
auto x = pool.get();
|
|
67
|
+
auto y = pool.get();
|
|
68
|
+
EXPECT_EQ(200, *x + *y);
|
|
69
|
+
}
|
|
70
|
+
EXPECT_GE(2, numCreated);
|
|
71
|
+
EXPECT_EQ(numCreated, numDeleted);
|
|
72
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under both the BSD-style license (found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
7
|
+
* in the COPYING file in the root directory of this source tree).
|
|
8
|
+
*/
|
|
9
|
+
#include "utils/ScopeGuard.h"
|
|
10
|
+
|
|
11
|
+
#include <gtest/gtest.h>
|
|
12
|
+
|
|
13
|
+
using namespace pzstd;
|
|
14
|
+
|
|
15
|
+
TEST(ScopeGuard, Dismiss) {
|
|
16
|
+
{
|
|
17
|
+
auto guard = makeScopeGuard([&] { EXPECT_TRUE(false); });
|
|
18
|
+
guard.dismiss();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
TEST(ScopeGuard, Executes) {
|
|
23
|
+
bool executed = false;
|
|
24
|
+
{
|
|
25
|
+
auto guard = makeScopeGuard([&] { executed = true; });
|
|
26
|
+
}
|
|
27
|
+
EXPECT_TRUE(executed);
|
|
28
|
+
}
|