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,195 @@
|
|
|
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
|
+
* You may select, at your option, one of the above-listed licenses.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/*
|
|
12
|
+
* FileIO AsyncIO exposes read/write IO pools that allow doing IO asynchronously.
|
|
13
|
+
* Current implementation relies on having one thread that reads and one that
|
|
14
|
+
* writes.
|
|
15
|
+
* Each IO pool supports up to `MAX_IO_JOBS` that can be enqueued for work, but
|
|
16
|
+
* are performed serially by the appropriate worker thread.
|
|
17
|
+
* Most systems exposes better primitives to perform asynchronous IO, such as
|
|
18
|
+
* io_uring on newer linux systems. The API is built in such a way that in the
|
|
19
|
+
* future we could replace the threads with better solutions when available.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
#ifndef ZSTD_FILEIO_ASYNCIO_H
|
|
23
|
+
#define ZSTD_FILEIO_ASYNCIO_H
|
|
24
|
+
|
|
25
|
+
#include "../lib/common/mem.h" /* U32, U64 */
|
|
26
|
+
#include "fileio_types.h"
|
|
27
|
+
#include "platform.h"
|
|
28
|
+
#include "util.h"
|
|
29
|
+
#include "../lib/common/pool.h"
|
|
30
|
+
#include "../lib/common/threading.h"
|
|
31
|
+
|
|
32
|
+
#define MAX_IO_JOBS (10)
|
|
33
|
+
|
|
34
|
+
typedef struct {
|
|
35
|
+
/* These struct fields should be set only on creation and not changed afterwards */
|
|
36
|
+
POOL_ctx* threadPool;
|
|
37
|
+
int threadPoolActive;
|
|
38
|
+
int totalIoJobs;
|
|
39
|
+
const FIO_prefs_t* prefs;
|
|
40
|
+
POOL_function poolFunction;
|
|
41
|
+
|
|
42
|
+
/* Controls the file we currently write to, make changes only by using provided utility functions */
|
|
43
|
+
FILE* file;
|
|
44
|
+
|
|
45
|
+
/* The jobs and availableJobsCount fields are accessed by both the main and worker threads and should
|
|
46
|
+
* only be mutated after locking the mutex */
|
|
47
|
+
ZSTD_pthread_mutex_t ioJobsMutex;
|
|
48
|
+
void* availableJobs[MAX_IO_JOBS];
|
|
49
|
+
int availableJobsCount;
|
|
50
|
+
size_t jobBufferSize;
|
|
51
|
+
} IOPoolCtx_t;
|
|
52
|
+
|
|
53
|
+
typedef struct {
|
|
54
|
+
IOPoolCtx_t base;
|
|
55
|
+
|
|
56
|
+
/* State regarding the currently read file */
|
|
57
|
+
int reachedEof;
|
|
58
|
+
U64 nextReadOffset;
|
|
59
|
+
U64 waitingOnOffset;
|
|
60
|
+
|
|
61
|
+
/* We may hold an IOJob object as needed if we actively expose its buffer. */
|
|
62
|
+
void *currentJobHeld;
|
|
63
|
+
|
|
64
|
+
/* Coalesce buffer is used to join two buffers in case where we need to read more bytes than left in
|
|
65
|
+
* the first of them. Shouldn't be accessed from outside ot utility functions. */
|
|
66
|
+
U8 *coalesceBuffer;
|
|
67
|
+
|
|
68
|
+
/* Read buffer can be used by consumer code, take care when copying this pointer aside as it might
|
|
69
|
+
* change when consuming / refilling buffer. */
|
|
70
|
+
U8 *srcBuffer;
|
|
71
|
+
size_t srcBufferLoaded;
|
|
72
|
+
|
|
73
|
+
/* We need to know what tasks completed so we can use their buffers when their time comes.
|
|
74
|
+
* Should only be accessed after locking base.ioJobsMutex . */
|
|
75
|
+
void* completedJobs[MAX_IO_JOBS];
|
|
76
|
+
int completedJobsCount;
|
|
77
|
+
ZSTD_pthread_cond_t jobCompletedCond;
|
|
78
|
+
} ReadPoolCtx_t;
|
|
79
|
+
|
|
80
|
+
typedef struct {
|
|
81
|
+
IOPoolCtx_t base;
|
|
82
|
+
unsigned storedSkips;
|
|
83
|
+
} WritePoolCtx_t;
|
|
84
|
+
|
|
85
|
+
typedef struct {
|
|
86
|
+
/* These fields are automatically set and shouldn't be changed by non WritePool code. */
|
|
87
|
+
void *ctx;
|
|
88
|
+
FILE* file;
|
|
89
|
+
void *buffer;
|
|
90
|
+
size_t bufferSize;
|
|
91
|
+
|
|
92
|
+
/* This field should be changed before a job is queued for execution and should contain the number
|
|
93
|
+
* of bytes to write from the buffer. */
|
|
94
|
+
size_t usedBufferSize;
|
|
95
|
+
U64 offset;
|
|
96
|
+
} IOJob_t;
|
|
97
|
+
|
|
98
|
+
/* AIO_supported:
|
|
99
|
+
* Returns 1 if AsyncIO is supported on the system, 0 otherwise. */
|
|
100
|
+
int AIO_supported(void);
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
/* AIO_WritePool_releaseIoJob:
|
|
104
|
+
* Releases an acquired job back to the pool. Doesn't execute the job. */
|
|
105
|
+
void AIO_WritePool_releaseIoJob(IOJob_t *job);
|
|
106
|
+
|
|
107
|
+
/* AIO_WritePool_acquireJob:
|
|
108
|
+
* Returns an available write job to be used for a future write. */
|
|
109
|
+
IOJob_t* AIO_WritePool_acquireJob(WritePoolCtx_t *ctx);
|
|
110
|
+
|
|
111
|
+
/* AIO_WritePool_enqueueAndReacquireWriteJob:
|
|
112
|
+
* Enqueues a write job for execution and acquires a new one.
|
|
113
|
+
* After execution `job`'s pointed value would change to the newly acquired job.
|
|
114
|
+
* Make sure to set `usedBufferSize` to the wanted length before call.
|
|
115
|
+
* The queued job shouldn't be used directly after queueing it. */
|
|
116
|
+
void AIO_WritePool_enqueueAndReacquireWriteJob(IOJob_t **job);
|
|
117
|
+
|
|
118
|
+
/* AIO_WritePool_sparseWriteEnd:
|
|
119
|
+
* Ends sparse writes to the current file.
|
|
120
|
+
* Blocks on completion of all current write jobs before executing. */
|
|
121
|
+
void AIO_WritePool_sparseWriteEnd(WritePoolCtx_t *ctx);
|
|
122
|
+
|
|
123
|
+
/* AIO_WritePool_setFile:
|
|
124
|
+
* Sets the destination file for future writes in the pool.
|
|
125
|
+
* Requires completion of all queues write jobs and release of all otherwise acquired jobs.
|
|
126
|
+
* Also requires ending of sparse write if a previous file was used in sparse mode. */
|
|
127
|
+
void AIO_WritePool_setFile(WritePoolCtx_t *ctx, FILE* file);
|
|
128
|
+
|
|
129
|
+
/* AIO_WritePool_getFile:
|
|
130
|
+
* Returns the file the writePool is currently set to write to. */
|
|
131
|
+
FILE* AIO_WritePool_getFile(const WritePoolCtx_t* ctx);
|
|
132
|
+
|
|
133
|
+
/* AIO_WritePool_closeFile:
|
|
134
|
+
* Ends sparse write and closes the writePool's current file and sets the file to NULL.
|
|
135
|
+
* Requires completion of all queues write jobs and release of all otherwise acquired jobs. */
|
|
136
|
+
int AIO_WritePool_closeFile(WritePoolCtx_t *ctx);
|
|
137
|
+
|
|
138
|
+
/* AIO_WritePool_create:
|
|
139
|
+
* Allocates and sets and a new write pool including its included jobs.
|
|
140
|
+
* bufferSize should be set to the maximal buffer we want to write to at a time. */
|
|
141
|
+
WritePoolCtx_t* AIO_WritePool_create(const FIO_prefs_t* prefs, size_t bufferSize);
|
|
142
|
+
|
|
143
|
+
/* AIO_WritePool_free:
|
|
144
|
+
* Frees and releases a writePool and its resources. Closes destination file. */
|
|
145
|
+
void AIO_WritePool_free(WritePoolCtx_t* ctx);
|
|
146
|
+
|
|
147
|
+
/* AIO_WritePool_setAsync:
|
|
148
|
+
* Allows (de)activating async mode, to be used when the expected overhead
|
|
149
|
+
* of asyncio costs more than the expected gains. */
|
|
150
|
+
void AIO_WritePool_setAsync(WritePoolCtx_t* ctx, int async);
|
|
151
|
+
|
|
152
|
+
/* AIO_ReadPool_create:
|
|
153
|
+
* Allocates and sets and a new readPool including its included jobs.
|
|
154
|
+
* bufferSize should be set to the maximal buffer we want to read at a time, will also be used
|
|
155
|
+
* as our basic read size. */
|
|
156
|
+
ReadPoolCtx_t* AIO_ReadPool_create(const FIO_prefs_t* prefs, size_t bufferSize);
|
|
157
|
+
|
|
158
|
+
/* AIO_ReadPool_free:
|
|
159
|
+
* Frees and releases a readPool and its resources. Closes source file. */
|
|
160
|
+
void AIO_ReadPool_free(ReadPoolCtx_t* ctx);
|
|
161
|
+
|
|
162
|
+
/* AIO_ReadPool_setAsync:
|
|
163
|
+
* Allows (de)activating async mode, to be used when the expected overhead
|
|
164
|
+
* of asyncio costs more than the expected gains. */
|
|
165
|
+
void AIO_ReadPool_setAsync(ReadPoolCtx_t* ctx, int async);
|
|
166
|
+
|
|
167
|
+
/* AIO_ReadPool_consumeBytes:
|
|
168
|
+
* Consumes byes from srcBuffer's beginning and updates srcBufferLoaded accordingly. */
|
|
169
|
+
void AIO_ReadPool_consumeBytes(ReadPoolCtx_t *ctx, size_t n);
|
|
170
|
+
|
|
171
|
+
/* AIO_ReadPool_fillBuffer:
|
|
172
|
+
* Makes sure buffer has at least n bytes loaded (as long as n is not bigger than the initialized bufferSize).
|
|
173
|
+
* Returns if srcBuffer has at least n bytes loaded or if we've reached the end of the file.
|
|
174
|
+
* Return value is the number of bytes added to the buffer.
|
|
175
|
+
* Note that srcBuffer might have up to 2 times bufferSize bytes. */
|
|
176
|
+
size_t AIO_ReadPool_fillBuffer(ReadPoolCtx_t *ctx, size_t n);
|
|
177
|
+
|
|
178
|
+
/* AIO_ReadPool_consumeAndRefill:
|
|
179
|
+
* Consumes the current buffer and refills it with bufferSize bytes. */
|
|
180
|
+
size_t AIO_ReadPool_consumeAndRefill(ReadPoolCtx_t *ctx);
|
|
181
|
+
|
|
182
|
+
/* AIO_ReadPool_setFile:
|
|
183
|
+
* Sets the source file for future read in the pool. Initiates reading immediately if file is not NULL.
|
|
184
|
+
* Waits for all current enqueued tasks to complete if a previous file was set. */
|
|
185
|
+
void AIO_ReadPool_setFile(ReadPoolCtx_t *ctx, FILE* file);
|
|
186
|
+
|
|
187
|
+
/* AIO_ReadPool_getFile:
|
|
188
|
+
* Returns the current file set for the read pool. */
|
|
189
|
+
FILE* AIO_ReadPool_getFile(const ReadPoolCtx_t *ctx);
|
|
190
|
+
|
|
191
|
+
/* AIO_ReadPool_closeFile:
|
|
192
|
+
* Closes the current set file. Waits for all current enqueued tasks to complete and resets state. */
|
|
193
|
+
int AIO_ReadPool_closeFile(ReadPoolCtx_t *ctx);
|
|
194
|
+
|
|
195
|
+
#endif /* ZSTD_FILEIO_ASYNCIO_H */
|
|
@@ -0,0 +1,121 @@
|
|
|
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
|
+
* You may select, at your option, one of the above-listed licenses.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#ifndef ZSTD_FILEIO_COMMON_H
|
|
12
|
+
#define ZSTD_FILEIO_COMMON_H
|
|
13
|
+
|
|
14
|
+
#include "../lib/common/mem.h" /* U32, U64 */
|
|
15
|
+
#include "fileio_types.h"
|
|
16
|
+
#include "platform.h"
|
|
17
|
+
#include "timefn.h" /* UTIL_getTime, UTIL_clockSpanMicro */
|
|
18
|
+
|
|
19
|
+
/*-*************************************
|
|
20
|
+
* Macros
|
|
21
|
+
***************************************/
|
|
22
|
+
#define KB *(1 <<10)
|
|
23
|
+
#define MB *(1 <<20)
|
|
24
|
+
#define GB *(1U<<30)
|
|
25
|
+
#undef MAX
|
|
26
|
+
#define MAX(a,b) ((a)>(b) ? (a) : (b))
|
|
27
|
+
#undef MIN /* in case it would be already defined */
|
|
28
|
+
#define MIN(a,b) ((a) < (b) ? (a) : (b))
|
|
29
|
+
|
|
30
|
+
extern FIO_display_prefs_t g_display_prefs;
|
|
31
|
+
|
|
32
|
+
#define DISPLAY_F(f, ...) fprintf((f), __VA_ARGS__)
|
|
33
|
+
#define DISPLAYOUT(...) DISPLAY_F(stdout, __VA_ARGS__)
|
|
34
|
+
#define DISPLAY(...) DISPLAY_F(stderr, __VA_ARGS__)
|
|
35
|
+
#define DISPLAYLEVEL(l, ...) { if (g_display_prefs.displayLevel>=l) { DISPLAY(__VA_ARGS__); } }
|
|
36
|
+
|
|
37
|
+
extern UTIL_time_t g_displayClock;
|
|
38
|
+
|
|
39
|
+
#define REFRESH_RATE ((U64)(SEC_TO_MICRO / 6))
|
|
40
|
+
#define READY_FOR_UPDATE() (UTIL_clockSpanMicro(g_displayClock) > REFRESH_RATE || g_display_prefs.displayLevel >= 4)
|
|
41
|
+
#define DELAY_NEXT_UPDATE() { g_displayClock = UTIL_getTime(); }
|
|
42
|
+
#define DISPLAYUPDATE(l, ...) { \
|
|
43
|
+
if (g_display_prefs.displayLevel>=l && (g_display_prefs.progressSetting != FIO_ps_never)) { \
|
|
44
|
+
if (READY_FOR_UPDATE()) { \
|
|
45
|
+
DELAY_NEXT_UPDATE(); \
|
|
46
|
+
DISPLAY(__VA_ARGS__); \
|
|
47
|
+
if (g_display_prefs.displayLevel>=4) fflush(stderr); \
|
|
48
|
+
} } }
|
|
49
|
+
|
|
50
|
+
#define SHOULD_DISPLAY_SUMMARY() \
|
|
51
|
+
(g_display_prefs.displayLevel >= 2 || g_display_prefs.progressSetting == FIO_ps_always)
|
|
52
|
+
#define SHOULD_DISPLAY_PROGRESS() \
|
|
53
|
+
(g_display_prefs.progressSetting != FIO_ps_never && SHOULD_DISPLAY_SUMMARY())
|
|
54
|
+
#define DISPLAY_PROGRESS(...) { if (SHOULD_DISPLAY_PROGRESS()) { DISPLAYLEVEL(1, __VA_ARGS__); }}
|
|
55
|
+
#define DISPLAYUPDATE_PROGRESS(...) { if (SHOULD_DISPLAY_PROGRESS()) { DISPLAYUPDATE(1, __VA_ARGS__); }}
|
|
56
|
+
#define DISPLAY_SUMMARY(...) { if (SHOULD_DISPLAY_SUMMARY()) { DISPLAYLEVEL(1, __VA_ARGS__); } }
|
|
57
|
+
|
|
58
|
+
#define EXM_THROW(error, ...) \
|
|
59
|
+
{ \
|
|
60
|
+
DISPLAYLEVEL(1, "zstd: "); \
|
|
61
|
+
DISPLAYLEVEL(5, "Error defined at %s, line %i : \n", __FILE__, __LINE__); \
|
|
62
|
+
DISPLAYLEVEL(1, "error %i : ", error); \
|
|
63
|
+
DISPLAYLEVEL(1, __VA_ARGS__); \
|
|
64
|
+
DISPLAYLEVEL(1, " \n"); \
|
|
65
|
+
exit(error); \
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
#define CHECK_V(v, f) \
|
|
69
|
+
v = f; \
|
|
70
|
+
if (ZSTD_isError(v)) { \
|
|
71
|
+
DISPLAYLEVEL(5, "%s \n", #f); \
|
|
72
|
+
EXM_THROW(11, "%s", ZSTD_getErrorName(v)); \
|
|
73
|
+
}
|
|
74
|
+
#define CHECK(f) { size_t err; CHECK_V(err, f); }
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
/* Avoid fseek()'s 2GiB barrier with MSVC, macOS, *BSD, MinGW */
|
|
78
|
+
#if defined(LIBC_NO_FSEEKO)
|
|
79
|
+
/* Some older libc implementations don't include these functions (e.g. Bionic < 24) */
|
|
80
|
+
# define LONG_SEEK fseek
|
|
81
|
+
# define LONG_TELL ftell
|
|
82
|
+
#elif defined(_MSC_VER) && _MSC_VER >= 1400
|
|
83
|
+
# define LONG_SEEK _fseeki64
|
|
84
|
+
# define LONG_TELL _ftelli64
|
|
85
|
+
#elif !defined(__64BIT__) && (PLATFORM_POSIX_VERSION >= 200112L) /* No point defining Large file for 64 bit */
|
|
86
|
+
# define LONG_SEEK fseeko
|
|
87
|
+
# define LONG_TELL ftello
|
|
88
|
+
#elif defined(__MINGW32__) && !defined(__STRICT_ANSI__) && !defined(__NO_MINGW_LFS) && defined(__MSVCRT__)
|
|
89
|
+
# define LONG_SEEK fseeko64
|
|
90
|
+
# define LONG_TELL ftello64
|
|
91
|
+
#elif defined(_WIN32) && !defined(__DJGPP__)
|
|
92
|
+
# include <windows.h>
|
|
93
|
+
static int LONG_SEEK(FILE* file, __int64 offset, int origin) {
|
|
94
|
+
LARGE_INTEGER off;
|
|
95
|
+
DWORD method;
|
|
96
|
+
off.QuadPart = offset;
|
|
97
|
+
if (origin == SEEK_END)
|
|
98
|
+
method = FILE_END;
|
|
99
|
+
else if (origin == SEEK_CUR)
|
|
100
|
+
method = FILE_CURRENT;
|
|
101
|
+
else
|
|
102
|
+
method = FILE_BEGIN;
|
|
103
|
+
|
|
104
|
+
if (SetFilePointerEx((HANDLE) _get_osfhandle(_fileno(file)), off, NULL, method))
|
|
105
|
+
return 0;
|
|
106
|
+
else
|
|
107
|
+
return -1;
|
|
108
|
+
}
|
|
109
|
+
static __int64 LONG_TELL(FILE* file) {
|
|
110
|
+
LARGE_INTEGER off, newOff;
|
|
111
|
+
off.QuadPart = 0;
|
|
112
|
+
newOff.QuadPart = 0;
|
|
113
|
+
SetFilePointerEx((HANDLE) _get_osfhandle(_fileno(file)), off, &newOff, FILE_CURRENT);
|
|
114
|
+
return newOff.QuadPart;
|
|
115
|
+
}
|
|
116
|
+
#else
|
|
117
|
+
# define LONG_SEEK fseek
|
|
118
|
+
# define LONG_TELL ftell
|
|
119
|
+
#endif
|
|
120
|
+
|
|
121
|
+
#endif /* ZSTD_FILEIO_COMMON_H */
|
|
@@ -0,0 +1,86 @@
|
|
|
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
|
+
* You may select, at your option, one of the above-listed licenses.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#ifndef FILEIO_TYPES_HEADER
|
|
12
|
+
#define FILEIO_TYPES_HEADER
|
|
13
|
+
|
|
14
|
+
#define ZSTD_STATIC_LINKING_ONLY /* ZSTD_compressionParameters */
|
|
15
|
+
#include "../lib/zstd.h" /* ZSTD_* */
|
|
16
|
+
|
|
17
|
+
/*-*************************************
|
|
18
|
+
* Parameters: FIO_prefs_t
|
|
19
|
+
***************************************/
|
|
20
|
+
|
|
21
|
+
typedef struct FIO_display_prefs_s FIO_display_prefs_t;
|
|
22
|
+
|
|
23
|
+
typedef enum { FIO_ps_auto, FIO_ps_never, FIO_ps_always } FIO_progressSetting_e;
|
|
24
|
+
|
|
25
|
+
struct FIO_display_prefs_s {
|
|
26
|
+
int displayLevel; /* 0 : no display; 1: errors; 2: + result + interaction + warnings; 3: + progression; 4: + information */
|
|
27
|
+
FIO_progressSetting_e progressSetting;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
typedef enum { FIO_zstdCompression, FIO_gzipCompression, FIO_xzCompression, FIO_lzmaCompression, FIO_lz4Compression } FIO_compressionType_t;
|
|
32
|
+
|
|
33
|
+
typedef struct FIO_prefs_s {
|
|
34
|
+
|
|
35
|
+
/* Algorithm preferences */
|
|
36
|
+
FIO_compressionType_t compressionType;
|
|
37
|
+
int sparseFileSupport; /* 0: no sparse allowed; 1: auto (file yes, stdout no); 2: force sparse */
|
|
38
|
+
int dictIDFlag;
|
|
39
|
+
int checksumFlag;
|
|
40
|
+
int jobSize;
|
|
41
|
+
int overlapLog;
|
|
42
|
+
int adaptiveMode;
|
|
43
|
+
int useRowMatchFinder;
|
|
44
|
+
int rsyncable;
|
|
45
|
+
int minAdaptLevel;
|
|
46
|
+
int maxAdaptLevel;
|
|
47
|
+
int ldmFlag;
|
|
48
|
+
int ldmHashLog;
|
|
49
|
+
int ldmMinMatch;
|
|
50
|
+
int ldmBucketSizeLog;
|
|
51
|
+
int ldmHashRateLog;
|
|
52
|
+
size_t streamSrcSize;
|
|
53
|
+
size_t targetCBlockSize;
|
|
54
|
+
int srcSizeHint;
|
|
55
|
+
int testMode;
|
|
56
|
+
ZSTD_ParamSwitch_e literalCompressionMode;
|
|
57
|
+
|
|
58
|
+
/* IO preferences */
|
|
59
|
+
int removeSrcFile;
|
|
60
|
+
int overwrite;
|
|
61
|
+
int asyncIO;
|
|
62
|
+
|
|
63
|
+
/* Computation resources preferences */
|
|
64
|
+
unsigned memLimit;
|
|
65
|
+
int nbWorkers;
|
|
66
|
+
|
|
67
|
+
int excludeCompressedFiles;
|
|
68
|
+
int patchFromMode;
|
|
69
|
+
int contentSize;
|
|
70
|
+
int allowBlockDevices;
|
|
71
|
+
int passThrough;
|
|
72
|
+
ZSTD_ParamSwitch_e mmapDict;
|
|
73
|
+
} FIO_prefs_t;
|
|
74
|
+
|
|
75
|
+
typedef enum {FIO_mallocDict, FIO_mmapDict} FIO_dictBufferType_t;
|
|
76
|
+
|
|
77
|
+
typedef struct {
|
|
78
|
+
void* dictBuffer;
|
|
79
|
+
size_t dictBufferSize;
|
|
80
|
+
FIO_dictBufferType_t dictBufferType;
|
|
81
|
+
#if defined(_MSC_VER) || defined(_WIN32)
|
|
82
|
+
HANDLE dictHandle;
|
|
83
|
+
#endif
|
|
84
|
+
} FIO_Dict_t;
|
|
85
|
+
|
|
86
|
+
#endif /* FILEIO_TYPES_HEADER */
|
|
@@ -0,0 +1,285 @@
|
|
|
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
|
+
* You may select, at your option, one of the above-listed licenses.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/* Implementation notes:
|
|
12
|
+
*
|
|
13
|
+
* This is a very simple lorem ipsum generator
|
|
14
|
+
* which features a static list of words
|
|
15
|
+
* and print them one after another randomly
|
|
16
|
+
* with a fake sentence / paragraph structure.
|
|
17
|
+
*
|
|
18
|
+
* The goal is to generate a printable text
|
|
19
|
+
* that can be used to fake a text compression scenario.
|
|
20
|
+
* The resulting compression / ratio curve of the lorem ipsum generator
|
|
21
|
+
* is more satisfying than the previous statistical generator,
|
|
22
|
+
* which was initially designed for entropy compression,
|
|
23
|
+
* and lacks a regularity more representative of text.
|
|
24
|
+
*
|
|
25
|
+
* The compression ratio achievable on the generated lorem ipsum
|
|
26
|
+
* is still a bit too good, presumably because the dictionary is a bit too
|
|
27
|
+
* small. It would be possible to create some more complex scheme, notably by
|
|
28
|
+
* enlarging the dictionary with a word generator, and adding grammatical rules
|
|
29
|
+
* (composition) and syntax rules. But that's probably overkill for the intended
|
|
30
|
+
* goal.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
#include "lorem.h"
|
|
34
|
+
#include <assert.h>
|
|
35
|
+
#include <limits.h> /* INT_MAX */
|
|
36
|
+
#include <string.h> /* memcpy */
|
|
37
|
+
|
|
38
|
+
#define WORD_MAX_SIZE 20
|
|
39
|
+
|
|
40
|
+
/* Define the word pool */
|
|
41
|
+
static const char* kWords[] = {
|
|
42
|
+
"lorem", "ipsum", "dolor", "sit", "amet",
|
|
43
|
+
"consectetur", "adipiscing", "elit", "sed", "do",
|
|
44
|
+
"eiusmod", "tempor", "incididunt", "ut", "labore",
|
|
45
|
+
"et", "dolore", "magna", "aliqua", "dis",
|
|
46
|
+
"lectus", "vestibulum", "mattis", "ullamcorper", "velit",
|
|
47
|
+
"commodo", "a", "lacus", "arcu", "magnis",
|
|
48
|
+
"parturient", "montes", "nascetur", "ridiculus", "mus",
|
|
49
|
+
"mauris", "nulla", "malesuada", "pellentesque", "eget",
|
|
50
|
+
"gravida", "in", "dictum", "non", "erat",
|
|
51
|
+
"nam", "voluptat", "maecenas", "blandit", "aliquam",
|
|
52
|
+
"etiam", "enim", "lobortis", "scelerisque", "fermentum",
|
|
53
|
+
"dui", "faucibus", "ornare", "at", "elementum",
|
|
54
|
+
"eu", "facilisis", "odio", "morbi", "quis",
|
|
55
|
+
"eros", "donec", "ac", "orci", "purus",
|
|
56
|
+
"turpis", "cursus", "leo", "vel", "porta",
|
|
57
|
+
"consequat", "interdum", "varius", "vulputate", "aliquet",
|
|
58
|
+
"pharetra", "nunc", "auctor", "urna", "id",
|
|
59
|
+
"metus", "viverra", "nibh", "cras", "mi",
|
|
60
|
+
"unde", "omnis", "iste", "natus", "error",
|
|
61
|
+
"perspiciatis", "voluptatem", "accusantium", "doloremque", "laudantium",
|
|
62
|
+
"totam", "rem", "aperiam", "eaque", "ipsa",
|
|
63
|
+
"quae", "ab", "illo", "inventore", "veritatis",
|
|
64
|
+
"quasi", "architecto", "beatae", "vitae", "dicta",
|
|
65
|
+
"sunt", "explicabo", "nemo", "ipsam", "quia",
|
|
66
|
+
"voluptas", "aspernatur", "aut", "odit", "fugit",
|
|
67
|
+
"consequuntur", "magni", "dolores", "eos", "qui",
|
|
68
|
+
"ratione", "sequi", "nesciunt", "neque", "porro",
|
|
69
|
+
"quisquam", "est", "dolorem", "adipisci", "numquam",
|
|
70
|
+
"eius", "modi", "tempora", "incidunt", "magnam",
|
|
71
|
+
"quaerat", "ad", "minima", "veniam", "nostrum",
|
|
72
|
+
"ullam", "corporis", "suscipit", "laboriosam", "nisi",
|
|
73
|
+
"aliquid", "ex", "ea", "commodi", "consequatur",
|
|
74
|
+
"autem", "eum", "iure", "voluptate", "esse",
|
|
75
|
+
"quam", "nihil", "molestiae", "illum", "fugiat",
|
|
76
|
+
"quo", "pariatur", "vero", "accusamus", "iusto",
|
|
77
|
+
"dignissimos", "ducimus", "blanditiis", "praesentium", "voluptatum",
|
|
78
|
+
"deleniti", "atque", "corrupti", "quos", "quas",
|
|
79
|
+
"molestias", "excepturi", "sint", "occaecati", "cupiditate",
|
|
80
|
+
"provident", "similique", "culpa", "officia", "deserunt",
|
|
81
|
+
"mollitia", "animi", "laborum", "dolorum", "fuga",
|
|
82
|
+
"harum", "quidem", "rerum", "facilis", "expedita",
|
|
83
|
+
"distinctio", "libero", "tempore", "cum", "soluta",
|
|
84
|
+
"nobis", "eligendi", "optio", "cumque", "impedit",
|
|
85
|
+
"minus", "quod", "maxime", "placeat", "facere",
|
|
86
|
+
"possimus", "assumenda", "repellendus", "temporibus", "quibusdam",
|
|
87
|
+
"officiis", "debitis", "saepe", "eveniet", "voluptates",
|
|
88
|
+
"repudiandae", "recusandae", "itaque", "earum", "hic",
|
|
89
|
+
"tenetur", "sapiente", "delectus", "reiciendis", "cillum",
|
|
90
|
+
"maiores", "alias", "perferendis", "doloribus", "asperiores",
|
|
91
|
+
"repellat", "minim", "nostrud", "exercitation", "ullamco",
|
|
92
|
+
"laboris", "aliquip", "duis", "aute", "irure",
|
|
93
|
+
};
|
|
94
|
+
static const unsigned kNbWords = sizeof(kWords) / sizeof(kWords[0]);
|
|
95
|
+
|
|
96
|
+
/* simple 1-dimension distribution, based on word's length, favors small words
|
|
97
|
+
*/
|
|
98
|
+
static const int kWeights[] = { 0, 8, 6, 4, 3, 2 };
|
|
99
|
+
static const size_t kNbWeights = sizeof(kWeights) / sizeof(kWeights[0]);
|
|
100
|
+
|
|
101
|
+
#define DISTRIB_SIZE_MAX 650
|
|
102
|
+
static int g_distrib[DISTRIB_SIZE_MAX] = { 0 };
|
|
103
|
+
static unsigned g_distribCount = 0;
|
|
104
|
+
|
|
105
|
+
static void countFreqs(
|
|
106
|
+
const char* words[],
|
|
107
|
+
size_t nbWords,
|
|
108
|
+
const int* weights,
|
|
109
|
+
size_t nbWeights)
|
|
110
|
+
{
|
|
111
|
+
unsigned total = 0;
|
|
112
|
+
size_t w;
|
|
113
|
+
for (w = 0; w < nbWords; w++) {
|
|
114
|
+
size_t len = strlen(words[w]);
|
|
115
|
+
int lmax;
|
|
116
|
+
if (len >= nbWeights)
|
|
117
|
+
len = nbWeights - 1;
|
|
118
|
+
lmax = weights[len];
|
|
119
|
+
total += (unsigned)lmax;
|
|
120
|
+
}
|
|
121
|
+
g_distribCount = total;
|
|
122
|
+
assert(g_distribCount <= DISTRIB_SIZE_MAX);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
static void init_word_distrib(
|
|
126
|
+
const char* words[],
|
|
127
|
+
size_t nbWords,
|
|
128
|
+
const int* weights,
|
|
129
|
+
size_t nbWeights)
|
|
130
|
+
{
|
|
131
|
+
size_t w, d = 0;
|
|
132
|
+
countFreqs(words, nbWords, weights, nbWeights);
|
|
133
|
+
for (w = 0; w < nbWords; w++) {
|
|
134
|
+
size_t len = strlen(words[w]);
|
|
135
|
+
int l, lmax;
|
|
136
|
+
if (len >= nbWeights)
|
|
137
|
+
len = nbWeights - 1;
|
|
138
|
+
lmax = weights[len];
|
|
139
|
+
for (l = 0; l < lmax; l++) {
|
|
140
|
+
g_distrib[d++] = (int)w;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/* Note: this unit only works when invoked sequentially.
|
|
146
|
+
* No concurrent access is allowed */
|
|
147
|
+
static char* g_ptr = NULL;
|
|
148
|
+
static size_t g_nbChars = 0;
|
|
149
|
+
static size_t g_maxChars = 10000000;
|
|
150
|
+
static unsigned g_randRoot = 0;
|
|
151
|
+
|
|
152
|
+
#define RDG_rotl32(x, r) ((x << r) | (x >> (32 - r)))
|
|
153
|
+
static unsigned LOREM_rand(unsigned range)
|
|
154
|
+
{
|
|
155
|
+
static const unsigned prime1 = 2654435761U;
|
|
156
|
+
static const unsigned prime2 = 2246822519U;
|
|
157
|
+
unsigned rand32 = g_randRoot;
|
|
158
|
+
rand32 *= prime1;
|
|
159
|
+
rand32 ^= prime2;
|
|
160
|
+
rand32 = RDG_rotl32(rand32, 13);
|
|
161
|
+
g_randRoot = rand32;
|
|
162
|
+
return (unsigned)(((unsigned long long)rand32 * range) >> 32);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
static void writeLastCharacters(void)
|
|
166
|
+
{
|
|
167
|
+
size_t lastChars = g_maxChars - g_nbChars;
|
|
168
|
+
assert(g_maxChars >= g_nbChars);
|
|
169
|
+
if (lastChars == 0)
|
|
170
|
+
return;
|
|
171
|
+
g_ptr[g_nbChars++] = '.';
|
|
172
|
+
if (lastChars > 2) {
|
|
173
|
+
memset(g_ptr + g_nbChars, ' ', lastChars - 2);
|
|
174
|
+
}
|
|
175
|
+
if (lastChars > 1) {
|
|
176
|
+
g_ptr[g_maxChars - 1] = '\n';
|
|
177
|
+
}
|
|
178
|
+
g_nbChars = g_maxChars;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
static void generateWord(const char* word, const char* separator, int upCase)
|
|
182
|
+
{
|
|
183
|
+
size_t const len = strlen(word) + strlen(separator);
|
|
184
|
+
if (g_nbChars + len > g_maxChars) {
|
|
185
|
+
writeLastCharacters();
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
memcpy(g_ptr + g_nbChars, word, strlen(word));
|
|
189
|
+
if (upCase) {
|
|
190
|
+
static const char toUp = 'A' - 'a';
|
|
191
|
+
g_ptr[g_nbChars] = (char)(g_ptr[g_nbChars] + toUp);
|
|
192
|
+
}
|
|
193
|
+
g_nbChars += strlen(word);
|
|
194
|
+
memcpy(g_ptr + g_nbChars, separator, strlen(separator));
|
|
195
|
+
g_nbChars += strlen(separator);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
static int about(unsigned target)
|
|
199
|
+
{
|
|
200
|
+
return (int)(LOREM_rand(target) + LOREM_rand(target) + 1);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/* Function to generate a random sentence */
|
|
204
|
+
static void generateSentence(int nbWords)
|
|
205
|
+
{
|
|
206
|
+
int commaPos = about(9);
|
|
207
|
+
int comma2 = commaPos + about(7);
|
|
208
|
+
int qmark = (LOREM_rand(11) == 7);
|
|
209
|
+
const char* endSep = qmark ? "? " : ". ";
|
|
210
|
+
int i;
|
|
211
|
+
for (i = 0; i < nbWords; i++) {
|
|
212
|
+
int const wordID = g_distrib[LOREM_rand(g_distribCount)];
|
|
213
|
+
const char* const word = kWords[wordID];
|
|
214
|
+
const char* sep = " ";
|
|
215
|
+
if (i == commaPos)
|
|
216
|
+
sep = ", ";
|
|
217
|
+
if (i == comma2)
|
|
218
|
+
sep = ", ";
|
|
219
|
+
if (i == nbWords - 1)
|
|
220
|
+
sep = endSep;
|
|
221
|
+
generateWord(word, sep, i == 0);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
static void generateParagraph(int nbSentences)
|
|
226
|
+
{
|
|
227
|
+
int i;
|
|
228
|
+
for (i = 0; i < nbSentences; i++) {
|
|
229
|
+
int wordsPerSentence = about(11);
|
|
230
|
+
generateSentence(wordsPerSentence);
|
|
231
|
+
}
|
|
232
|
+
if (g_nbChars < g_maxChars) {
|
|
233
|
+
g_ptr[g_nbChars++] = '\n';
|
|
234
|
+
}
|
|
235
|
+
if (g_nbChars < g_maxChars) {
|
|
236
|
+
g_ptr[g_nbChars++] = '\n';
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* It's "common" for lorem ipsum generators to start with the same first
|
|
241
|
+
* pre-defined sentence */
|
|
242
|
+
static void generateFirstSentence(void)
|
|
243
|
+
{
|
|
244
|
+
int i;
|
|
245
|
+
for (i = 0; i < 18; i++) {
|
|
246
|
+
const char* word = kWords[i];
|
|
247
|
+
const char* separator = " ";
|
|
248
|
+
if (i == 4)
|
|
249
|
+
separator = ", ";
|
|
250
|
+
if (i == 7)
|
|
251
|
+
separator = ", ";
|
|
252
|
+
generateWord(word, separator, i == 0);
|
|
253
|
+
}
|
|
254
|
+
generateWord(kWords[18], ". ", 0);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
size_t
|
|
258
|
+
LOREM_genBlock(void* buffer, size_t size, unsigned seed, int first, int fill)
|
|
259
|
+
{
|
|
260
|
+
g_ptr = (char*)buffer;
|
|
261
|
+
assert(size < INT_MAX);
|
|
262
|
+
g_maxChars = size;
|
|
263
|
+
g_nbChars = 0;
|
|
264
|
+
g_randRoot = seed;
|
|
265
|
+
if (g_distribCount == 0) {
|
|
266
|
+
init_word_distrib(kWords, kNbWords, kWeights, kNbWeights);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
if (first) {
|
|
270
|
+
generateFirstSentence();
|
|
271
|
+
}
|
|
272
|
+
while (g_nbChars < g_maxChars) {
|
|
273
|
+
int sentencePerParagraph = about(7);
|
|
274
|
+
generateParagraph(sentencePerParagraph);
|
|
275
|
+
if (!fill)
|
|
276
|
+
break; /* only generate one paragraph in not-fill mode */
|
|
277
|
+
}
|
|
278
|
+
g_ptr = NULL;
|
|
279
|
+
return g_nbChars;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
void LOREM_genBuffer(void* buffer, size_t size, unsigned seed)
|
|
283
|
+
{
|
|
284
|
+
LOREM_genBlock(buffer, size, seed, 1, 1);
|
|
285
|
+
}
|