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.
Files changed (651) hide show
  1. checksums.yaml +7 -0
  2. data/CLAUDE.md +101 -0
  3. data/LICENSE +19 -0
  4. data/README.md +47 -0
  5. data/ext/zstd_ruby/extconf.rb +35 -0
  6. data/ext/zstd_ruby/zstd_ruby.c +221 -0
  7. data/lib/zstd_ruby.rb +68 -0
  8. data/vendor/zstd/CHANGELOG +863 -0
  9. data/vendor/zstd/CMakeLists.txt +11 -0
  10. data/vendor/zstd/CODE_OF_CONDUCT.md +5 -0
  11. data/vendor/zstd/CONTRIBUTING.md +494 -0
  12. data/vendor/zstd/COPYING +339 -0
  13. data/vendor/zstd/LICENSE +30 -0
  14. data/vendor/zstd/Makefile +470 -0
  15. data/vendor/zstd/Package.swift +36 -0
  16. data/vendor/zstd/README.md +244 -0
  17. data/vendor/zstd/SECURITY.md +15 -0
  18. data/vendor/zstd/TESTING.md +43 -0
  19. data/vendor/zstd/build/LICENSE +0 -0
  20. data/vendor/zstd/build/README.md +56 -0
  21. data/vendor/zstd/build/VS2008/fullbench/fullbench.vcproj +549 -0
  22. data/vendor/zstd/build/VS2008/fuzzer/fuzzer.vcproj +585 -0
  23. data/vendor/zstd/build/VS2008/zstd/zstd.vcproj +677 -0
  24. data/vendor/zstd/build/VS2008/zstd.sln +56 -0
  25. data/vendor/zstd/build/VS2008/zstdlib/zstdlib.vcproj +635 -0
  26. data/vendor/zstd/build/VS2010/CompileAsCpp.props +8 -0
  27. data/vendor/zstd/build/VS2010/datagen/datagen.vcxproj +170 -0
  28. data/vendor/zstd/build/VS2010/fullbench/fullbench.vcxproj +220 -0
  29. data/vendor/zstd/build/VS2010/fuzzer/fuzzer.vcxproj +224 -0
  30. data/vendor/zstd/build/VS2010/libzstd/libzstd.vcxproj +243 -0
  31. data/vendor/zstd/build/VS2010/libzstd-dll/libzstd-dll.rc +51 -0
  32. data/vendor/zstd/build/VS2010/libzstd-dll/libzstd-dll.vcxproj +250 -0
  33. data/vendor/zstd/build/VS2010/zstd/zstd.rc +51 -0
  34. data/vendor/zstd/build/VS2010/zstd/zstd.vcxproj +266 -0
  35. data/vendor/zstd/build/VS2010/zstd.sln +84 -0
  36. data/vendor/zstd/build/VS_scripts/README.md +64 -0
  37. data/vendor/zstd/build/VS_scripts/build.VS2010.cmd +7 -0
  38. data/vendor/zstd/build/VS_scripts/build.VS2012.cmd +6 -0
  39. data/vendor/zstd/build/VS_scripts/build.VS2013.cmd +7 -0
  40. data/vendor/zstd/build/VS_scripts/build.VS2015.cmd +7 -0
  41. data/vendor/zstd/build/VS_scripts/build.VS2017.cmd +7 -0
  42. data/vendor/zstd/build/VS_scripts/build.VS2017Community.cmd +7 -0
  43. data/vendor/zstd/build/VS_scripts/build.VS2017Enterprise.cmd +7 -0
  44. data/vendor/zstd/build/VS_scripts/build.VS2017Professional.cmd +7 -0
  45. data/vendor/zstd/build/VS_scripts/build.VSPreview.cmd +7 -0
  46. data/vendor/zstd/build/VS_scripts/build.generic.cmd +67 -0
  47. data/vendor/zstd/build/cmake/CMakeLists.txt +81 -0
  48. data/vendor/zstd/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake +138 -0
  49. data/vendor/zstd/build/cmake/CMakeModules/FindLibLZ4.cmake +49 -0
  50. data/vendor/zstd/build/cmake/CMakeModules/GetZstdLibraryVersion.cmake +10 -0
  51. data/vendor/zstd/build/cmake/CMakeModules/JoinPaths.cmake +23 -0
  52. data/vendor/zstd/build/cmake/CMakeModules/ZstdBuild.cmake +42 -0
  53. data/vendor/zstd/build/cmake/CMakeModules/ZstdDependencies.cmake +30 -0
  54. data/vendor/zstd/build/cmake/CMakeModules/ZstdOptions.cmake +68 -0
  55. data/vendor/zstd/build/cmake/CMakeModules/ZstdPackage.cmake +42 -0
  56. data/vendor/zstd/build/cmake/CMakeModules/ZstdVersion.cmake +31 -0
  57. data/vendor/zstd/build/cmake/README.md +155 -0
  58. data/vendor/zstd/build/cmake/contrib/CMakeLists.txt +13 -0
  59. data/vendor/zstd/build/cmake/contrib/gen_html/CMakeLists.txt +30 -0
  60. data/vendor/zstd/build/cmake/contrib/pzstd/CMakeLists.txt +39 -0
  61. data/vendor/zstd/build/cmake/lib/CMakeLists.txt +298 -0
  62. data/vendor/zstd/build/cmake/lib/cmake_uninstall.cmake.in +22 -0
  63. data/vendor/zstd/build/cmake/programs/CMakeLists.txt +144 -0
  64. data/vendor/zstd/build/cmake/tests/CMakeLists.txt +118 -0
  65. data/vendor/zstd/build/cmake/zstdConfig.cmake.in +10 -0
  66. data/vendor/zstd/build/meson/GetZstdLibraryVersion.py +39 -0
  67. data/vendor/zstd/build/meson/InstallSymlink.py +55 -0
  68. data/vendor/zstd/build/meson/README.md +38 -0
  69. data/vendor/zstd/build/meson/contrib/gen_html/meson.build +30 -0
  70. data/vendor/zstd/build/meson/contrib/meson.build +12 -0
  71. data/vendor/zstd/build/meson/contrib/pzstd/meson.build +25 -0
  72. data/vendor/zstd/build/meson/lib/meson.build +175 -0
  73. data/vendor/zstd/build/meson/meson.build +155 -0
  74. data/vendor/zstd/build/meson/meson_options.txt +36 -0
  75. data/vendor/zstd/build/meson/programs/meson.build +124 -0
  76. data/vendor/zstd/build/meson/tests/meson.build +217 -0
  77. data/vendor/zstd/build/meson/tests/valgrindTest.py +90 -0
  78. data/vendor/zstd/build/single_file_libs/README.md +33 -0
  79. data/vendor/zstd/build/single_file_libs/build_decoder_test.sh +91 -0
  80. data/vendor/zstd/build/single_file_libs/build_library_test.sh +98 -0
  81. data/vendor/zstd/build/single_file_libs/combine.py +234 -0
  82. data/vendor/zstd/build/single_file_libs/combine.sh +249 -0
  83. data/vendor/zstd/build/single_file_libs/create_single_file_decoder.sh +19 -0
  84. data/vendor/zstd/build/single_file_libs/create_single_file_library.sh +19 -0
  85. data/vendor/zstd/build/single_file_libs/examples/README.md +11 -0
  86. data/vendor/zstd/build/single_file_libs/examples/emscripten.c +340 -0
  87. data/vendor/zstd/build/single_file_libs/examples/roundtrip.c +83 -0
  88. data/vendor/zstd/build/single_file_libs/examples/shell.html +31 -0
  89. data/vendor/zstd/build/single_file_libs/examples/simple.c +75 -0
  90. data/vendor/zstd/build/single_file_libs/examples/testcard-dxt1.inl +2731 -0
  91. data/vendor/zstd/build/single_file_libs/examples/testcard-zstd.inl +261 -0
  92. data/vendor/zstd/build/single_file_libs/examples/testcard.png +0 -0
  93. data/vendor/zstd/build/single_file_libs/zstd-in.c +91 -0
  94. data/vendor/zstd/build/single_file_libs/zstddeclib-in.c +62 -0
  95. data/vendor/zstd/contrib/VS2005/README.md +3 -0
  96. data/vendor/zstd/contrib/VS2005/fullbench/fullbench.vcproj +440 -0
  97. data/vendor/zstd/contrib/VS2005/fuzzer/fuzzer.vcproj +488 -0
  98. data/vendor/zstd/contrib/VS2005/zstd/zstd.vcproj +552 -0
  99. data/vendor/zstd/contrib/VS2005/zstd.sln +55 -0
  100. data/vendor/zstd/contrib/VS2005/zstdlib/zstdlib.vcproj +546 -0
  101. data/vendor/zstd/contrib/cleanTabs +2 -0
  102. data/vendor/zstd/contrib/diagnose_corruption/Makefile +35 -0
  103. data/vendor/zstd/contrib/diagnose_corruption/check_flipped_bits.c +400 -0
  104. data/vendor/zstd/contrib/docker/Dockerfile +20 -0
  105. data/vendor/zstd/contrib/docker/README.md +20 -0
  106. data/vendor/zstd/contrib/externalSequenceProducer/Makefile +40 -0
  107. data/vendor/zstd/contrib/externalSequenceProducer/README.md +14 -0
  108. data/vendor/zstd/contrib/externalSequenceProducer/main.c +108 -0
  109. data/vendor/zstd/contrib/externalSequenceProducer/sequence_producer.c +80 -0
  110. data/vendor/zstd/contrib/externalSequenceProducer/sequence_producer.h +26 -0
  111. data/vendor/zstd/contrib/freestanding_lib/freestanding.py +774 -0
  112. data/vendor/zstd/contrib/gen_html/Makefile +51 -0
  113. data/vendor/zstd/contrib/gen_html/README.md +31 -0
  114. data/vendor/zstd/contrib/gen_html/gen-zstd-manual.sh +9 -0
  115. data/vendor/zstd/contrib/gen_html/gen_html.cpp +225 -0
  116. data/vendor/zstd/contrib/largeNbDicts/Makefile +58 -0
  117. data/vendor/zstd/contrib/largeNbDicts/README.md +33 -0
  118. data/vendor/zstd/contrib/largeNbDicts/largeNbDicts.c +1087 -0
  119. data/vendor/zstd/contrib/linux-kernel/Makefile +108 -0
  120. data/vendor/zstd/contrib/linux-kernel/README.md +14 -0
  121. data/vendor/zstd/contrib/linux-kernel/btrfs-benchmark.sh +104 -0
  122. data/vendor/zstd/contrib/linux-kernel/btrfs-extract-benchmark.sh +99 -0
  123. data/vendor/zstd/contrib/linux-kernel/decompress_sources.h +34 -0
  124. data/vendor/zstd/contrib/linux-kernel/linux.mk +44 -0
  125. data/vendor/zstd/contrib/linux-kernel/linux_zstd.h +691 -0
  126. data/vendor/zstd/contrib/linux-kernel/mem.h +262 -0
  127. data/vendor/zstd/contrib/linux-kernel/squashfs-benchmark.sh +39 -0
  128. data/vendor/zstd/contrib/linux-kernel/test/Makefile +49 -0
  129. data/vendor/zstd/contrib/linux-kernel/test/include/linux/compiler.h +23 -0
  130. data/vendor/zstd/contrib/linux-kernel/test/include/linux/errno.h +15 -0
  131. data/vendor/zstd/contrib/linux-kernel/test/include/linux/kernel.h +19 -0
  132. data/vendor/zstd/contrib/linux-kernel/test/include/linux/limits.h +15 -0
  133. data/vendor/zstd/contrib/linux-kernel/test/include/linux/math64.h +15 -0
  134. data/vendor/zstd/contrib/linux-kernel/test/include/linux/module.h +20 -0
  135. data/vendor/zstd/contrib/linux-kernel/test/include/linux/printk.h +15 -0
  136. data/vendor/zstd/contrib/linux-kernel/test/include/linux/stddef.h +15 -0
  137. data/vendor/zstd/contrib/linux-kernel/test/include/linux/swab.h +16 -0
  138. data/vendor/zstd/contrib/linux-kernel/test/include/linux/types.h +16 -0
  139. data/vendor/zstd/contrib/linux-kernel/test/include/linux/unaligned.h +187 -0
  140. data/vendor/zstd/contrib/linux-kernel/test/include/linux/xxhash.h +745 -0
  141. data/vendor/zstd/contrib/linux-kernel/test/macro-test.sh +44 -0
  142. data/vendor/zstd/contrib/linux-kernel/test/static_test.c +52 -0
  143. data/vendor/zstd/contrib/linux-kernel/test/test.c +229 -0
  144. data/vendor/zstd/contrib/linux-kernel/zstd_common_module.c +29 -0
  145. data/vendor/zstd/contrib/linux-kernel/zstd_compress_module.c +286 -0
  146. data/vendor/zstd/contrib/linux-kernel/zstd_decompress_module.c +141 -0
  147. data/vendor/zstd/contrib/linux-kernel/zstd_deps.h +121 -0
  148. data/vendor/zstd/contrib/match_finders/README.md +42 -0
  149. data/vendor/zstd/contrib/match_finders/zstd_edist.c +558 -0
  150. data/vendor/zstd/contrib/match_finders/zstd_edist.h +70 -0
  151. data/vendor/zstd/contrib/premake/premake4.lua +6 -0
  152. data/vendor/zstd/contrib/premake/zstd.lua +81 -0
  153. data/vendor/zstd/contrib/pzstd/BUCK +72 -0
  154. data/vendor/zstd/contrib/pzstd/ErrorHolder.h +54 -0
  155. data/vendor/zstd/contrib/pzstd/Logging.h +73 -0
  156. data/vendor/zstd/contrib/pzstd/Makefile +265 -0
  157. data/vendor/zstd/contrib/pzstd/Options.cpp +424 -0
  158. data/vendor/zstd/contrib/pzstd/Options.h +71 -0
  159. data/vendor/zstd/contrib/pzstd/Pzstd.cpp +626 -0
  160. data/vendor/zstd/contrib/pzstd/Pzstd.h +153 -0
  161. data/vendor/zstd/contrib/pzstd/README.md +56 -0
  162. data/vendor/zstd/contrib/pzstd/SkippableFrame.cpp +30 -0
  163. data/vendor/zstd/contrib/pzstd/SkippableFrame.h +64 -0
  164. data/vendor/zstd/contrib/pzstd/images/Cspeed.png +0 -0
  165. data/vendor/zstd/contrib/pzstd/images/Dspeed.png +0 -0
  166. data/vendor/zstd/contrib/pzstd/main.cpp +27 -0
  167. data/vendor/zstd/contrib/pzstd/test/BUCK +37 -0
  168. data/vendor/zstd/contrib/pzstd/test/OptionsTest.cpp +536 -0
  169. data/vendor/zstd/contrib/pzstd/test/PzstdTest.cpp +147 -0
  170. data/vendor/zstd/contrib/pzstd/test/RoundTrip.h +86 -0
  171. data/vendor/zstd/contrib/pzstd/test/RoundTripTest.cpp +84 -0
  172. data/vendor/zstd/contrib/pzstd/utils/BUCK +75 -0
  173. data/vendor/zstd/contrib/pzstd/utils/Buffer.h +99 -0
  174. data/vendor/zstd/contrib/pzstd/utils/FileSystem.h +96 -0
  175. data/vendor/zstd/contrib/pzstd/utils/Likely.h +28 -0
  176. data/vendor/zstd/contrib/pzstd/utils/Portability.h +16 -0
  177. data/vendor/zstd/contrib/pzstd/utils/Range.h +133 -0
  178. data/vendor/zstd/contrib/pzstd/utils/ResourcePool.h +96 -0
  179. data/vendor/zstd/contrib/pzstd/utils/ScopeGuard.h +50 -0
  180. data/vendor/zstd/contrib/pzstd/utils/ThreadPool.h +58 -0
  181. data/vendor/zstd/contrib/pzstd/utils/WorkQueue.h +182 -0
  182. data/vendor/zstd/contrib/pzstd/utils/test/BUCK +35 -0
  183. data/vendor/zstd/contrib/pzstd/utils/test/BufferTest.cpp +89 -0
  184. data/vendor/zstd/contrib/pzstd/utils/test/RangeTest.cpp +82 -0
  185. data/vendor/zstd/contrib/pzstd/utils/test/ResourcePoolTest.cpp +72 -0
  186. data/vendor/zstd/contrib/pzstd/utils/test/ScopeGuardTest.cpp +28 -0
  187. data/vendor/zstd/contrib/pzstd/utils/test/ThreadPoolTest.cpp +71 -0
  188. data/vendor/zstd/contrib/pzstd/utils/test/WorkQueueTest.cpp +282 -0
  189. data/vendor/zstd/contrib/recovery/Makefile +35 -0
  190. data/vendor/zstd/contrib/recovery/recover_directory.c +152 -0
  191. data/vendor/zstd/contrib/seekable_format/README.md +42 -0
  192. data/vendor/zstd/contrib/seekable_format/examples/Makefile +55 -0
  193. data/vendor/zstd/contrib/seekable_format/examples/parallel_compression.c +254 -0
  194. data/vendor/zstd/contrib/seekable_format/examples/parallel_processing.c +191 -0
  195. data/vendor/zstd/contrib/seekable_format/examples/seekable_compression.c +136 -0
  196. data/vendor/zstd/contrib/seekable_format/examples/seekable_decompression.c +141 -0
  197. data/vendor/zstd/contrib/seekable_format/examples/seekable_decompression_mem.c +147 -0
  198. data/vendor/zstd/contrib/seekable_format/tests/Makefile +58 -0
  199. data/vendor/zstd/contrib/seekable_format/tests/seekable_tests.c +375 -0
  200. data/vendor/zstd/contrib/seekable_format/zstd_seekable.h +226 -0
  201. data/vendor/zstd/contrib/seekable_format/zstd_seekable_compression_format.md +116 -0
  202. data/vendor/zstd/contrib/seekable_format/zstdseek_compress.c +365 -0
  203. data/vendor/zstd/contrib/seekable_format/zstdseek_decompress.c +600 -0
  204. data/vendor/zstd/contrib/seqBench/Makefile +58 -0
  205. data/vendor/zstd/contrib/seqBench/seqBench.c +53 -0
  206. data/vendor/zstd/contrib/snap/snapcraft.yaml +28 -0
  207. data/vendor/zstd/doc/README.md +26 -0
  208. data/vendor/zstd/doc/decompressor_errata.md +148 -0
  209. data/vendor/zstd/doc/decompressor_permissive.md +80 -0
  210. data/vendor/zstd/doc/educational_decoder/Makefile +62 -0
  211. data/vendor/zstd/doc/educational_decoder/README.md +36 -0
  212. data/vendor/zstd/doc/educational_decoder/harness.c +119 -0
  213. data/vendor/zstd/doc/educational_decoder/zstd_decompress.c +2323 -0
  214. data/vendor/zstd/doc/educational_decoder/zstd_decompress.h +61 -0
  215. data/vendor/zstd/doc/images/CSpeed2.png +0 -0
  216. data/vendor/zstd/doc/images/DCspeed5.png +0 -0
  217. data/vendor/zstd/doc/images/DSpeed3.png +0 -0
  218. data/vendor/zstd/doc/images/cdict_v136.png +0 -0
  219. data/vendor/zstd/doc/images/dict-cr.png +0 -0
  220. data/vendor/zstd/doc/images/dict-cs.png +0 -0
  221. data/vendor/zstd/doc/images/dict-ds.png +0 -0
  222. data/vendor/zstd/doc/images/zstd_cdict_v1_3_5.png +0 -0
  223. data/vendor/zstd/doc/images/zstd_logo86.png +0 -0
  224. data/vendor/zstd/doc/zstd_compression_format.md +1772 -0
  225. data/vendor/zstd/doc/zstd_manual.html +2244 -0
  226. data/vendor/zstd/examples/Makefile +93 -0
  227. data/vendor/zstd/examples/README.md +46 -0
  228. data/vendor/zstd/examples/common.h +246 -0
  229. data/vendor/zstd/examples/dictionary_compression.c +107 -0
  230. data/vendor/zstd/examples/dictionary_decompression.c +99 -0
  231. data/vendor/zstd/examples/multiple_simple_compression.c +116 -0
  232. data/vendor/zstd/examples/multiple_streaming_compression.c +133 -0
  233. data/vendor/zstd/examples/simple_compression.c +68 -0
  234. data/vendor/zstd/examples/simple_decompression.c +65 -0
  235. data/vendor/zstd/examples/streaming_compression.c +146 -0
  236. data/vendor/zstd/examples/streaming_compression_thread_pool.c +180 -0
  237. data/vendor/zstd/examples/streaming_decompression.c +100 -0
  238. data/vendor/zstd/examples/streaming_memory_usage.c +137 -0
  239. data/vendor/zstd/lib/BUCK +232 -0
  240. data/vendor/zstd/lib/Makefile +389 -0
  241. data/vendor/zstd/lib/README.md +267 -0
  242. data/vendor/zstd/lib/common/allocations.h +55 -0
  243. data/vendor/zstd/lib/common/bits.h +205 -0
  244. data/vendor/zstd/lib/common/bitstream.h +454 -0
  245. data/vendor/zstd/lib/common/compiler.h +482 -0
  246. data/vendor/zstd/lib/common/cpu.h +249 -0
  247. data/vendor/zstd/lib/common/debug.c +30 -0
  248. data/vendor/zstd/lib/common/debug.h +107 -0
  249. data/vendor/zstd/lib/common/debug.o +0 -0
  250. data/vendor/zstd/lib/common/entropy_common.c +340 -0
  251. data/vendor/zstd/lib/common/entropy_common.o +0 -0
  252. data/vendor/zstd/lib/common/error_private.c +64 -0
  253. data/vendor/zstd/lib/common/error_private.h +158 -0
  254. data/vendor/zstd/lib/common/error_private.o +0 -0
  255. data/vendor/zstd/lib/common/fse.h +625 -0
  256. data/vendor/zstd/lib/common/fse_decompress.c +315 -0
  257. data/vendor/zstd/lib/common/fse_decompress.o +0 -0
  258. data/vendor/zstd/lib/common/huf.h +277 -0
  259. data/vendor/zstd/lib/common/mem.h +422 -0
  260. data/vendor/zstd/lib/common/pool.c +371 -0
  261. data/vendor/zstd/lib/common/pool.h +81 -0
  262. data/vendor/zstd/lib/common/pool.o +0 -0
  263. data/vendor/zstd/lib/common/portability_macros.h +190 -0
  264. data/vendor/zstd/lib/common/threading.c +196 -0
  265. data/vendor/zstd/lib/common/threading.h +142 -0
  266. data/vendor/zstd/lib/common/threading.o +0 -0
  267. data/vendor/zstd/lib/common/xxhash.c +18 -0
  268. data/vendor/zstd/lib/common/xxhash.h +7094 -0
  269. data/vendor/zstd/lib/common/xxhash.o +0 -0
  270. data/vendor/zstd/lib/common/zstd_common.c +57 -0
  271. data/vendor/zstd/lib/common/zstd_common.o +0 -0
  272. data/vendor/zstd/lib/common/zstd_deps.h +123 -0
  273. data/vendor/zstd/lib/common/zstd_internal.h +326 -0
  274. data/vendor/zstd/lib/common/zstd_trace.h +156 -0
  275. data/vendor/zstd/lib/compress/clevels.h +134 -0
  276. data/vendor/zstd/lib/compress/fse_compress.c +625 -0
  277. data/vendor/zstd/lib/compress/fse_compress.o +0 -0
  278. data/vendor/zstd/lib/compress/hist.c +446 -0
  279. data/vendor/zstd/lib/compress/hist.h +86 -0
  280. data/vendor/zstd/lib/compress/hist.o +0 -0
  281. data/vendor/zstd/lib/compress/huf_compress.c +1465 -0
  282. data/vendor/zstd/lib/compress/huf_compress.o +0 -0
  283. data/vendor/zstd/lib/compress/zstd_compress.c +8362 -0
  284. data/vendor/zstd/lib/compress/zstd_compress.o +0 -0
  285. data/vendor/zstd/lib/compress/zstd_compress_internal.h +1636 -0
  286. data/vendor/zstd/lib/compress/zstd_compress_literals.c +235 -0
  287. data/vendor/zstd/lib/compress/zstd_compress_literals.h +39 -0
  288. data/vendor/zstd/lib/compress/zstd_compress_literals.o +0 -0
  289. data/vendor/zstd/lib/compress/zstd_compress_sequences.c +442 -0
  290. data/vendor/zstd/lib/compress/zstd_compress_sequences.h +55 -0
  291. data/vendor/zstd/lib/compress/zstd_compress_sequences.o +0 -0
  292. data/vendor/zstd/lib/compress/zstd_compress_superblock.c +688 -0
  293. data/vendor/zstd/lib/compress/zstd_compress_superblock.h +32 -0
  294. data/vendor/zstd/lib/compress/zstd_compress_superblock.o +0 -0
  295. data/vendor/zstd/lib/compress/zstd_cwksp.h +765 -0
  296. data/vendor/zstd/lib/compress/zstd_double_fast.c +778 -0
  297. data/vendor/zstd/lib/compress/zstd_double_fast.h +42 -0
  298. data/vendor/zstd/lib/compress/zstd_double_fast.o +0 -0
  299. data/vendor/zstd/lib/compress/zstd_fast.c +985 -0
  300. data/vendor/zstd/lib/compress/zstd_fast.h +30 -0
  301. data/vendor/zstd/lib/compress/zstd_fast.o +0 -0
  302. data/vendor/zstd/lib/compress/zstd_lazy.c +2243 -0
  303. data/vendor/zstd/lib/compress/zstd_lazy.h +193 -0
  304. data/vendor/zstd/lib/compress/zstd_lazy.o +0 -0
  305. data/vendor/zstd/lib/compress/zstd_ldm.c +745 -0
  306. data/vendor/zstd/lib/compress/zstd_ldm.h +109 -0
  307. data/vendor/zstd/lib/compress/zstd_ldm.o +0 -0
  308. data/vendor/zstd/lib/compress/zstd_ldm_geartab.h +106 -0
  309. data/vendor/zstd/lib/compress/zstd_opt.c +1572 -0
  310. data/vendor/zstd/lib/compress/zstd_opt.h +72 -0
  311. data/vendor/zstd/lib/compress/zstd_opt.o +0 -0
  312. data/vendor/zstd/lib/compress/zstd_preSplit.c +238 -0
  313. data/vendor/zstd/lib/compress/zstd_preSplit.h +33 -0
  314. data/vendor/zstd/lib/compress/zstd_preSplit.o +0 -0
  315. data/vendor/zstd/lib/compress/zstdmt_compress.c +1924 -0
  316. data/vendor/zstd/lib/compress/zstdmt_compress.h +102 -0
  317. data/vendor/zstd/lib/compress/zstdmt_compress.o +0 -0
  318. data/vendor/zstd/lib/decompress/huf_decompress.c +1953 -0
  319. data/vendor/zstd/lib/decompress/huf_decompress.o +0 -0
  320. data/vendor/zstd/lib/decompress/huf_decompress_amd64.S +766 -0
  321. data/vendor/zstd/lib/decompress/zstd_ddict.c +244 -0
  322. data/vendor/zstd/lib/decompress/zstd_ddict.h +44 -0
  323. data/vendor/zstd/lib/decompress/zstd_ddict.o +0 -0
  324. data/vendor/zstd/lib/decompress/zstd_decompress.c +2410 -0
  325. data/vendor/zstd/lib/decompress/zstd_decompress.o +0 -0
  326. data/vendor/zstd/lib/decompress/zstd_decompress_block.c +2311 -0
  327. data/vendor/zstd/lib/decompress/zstd_decompress_block.h +73 -0
  328. data/vendor/zstd/lib/decompress/zstd_decompress_block.o +0 -0
  329. data/vendor/zstd/lib/decompress/zstd_decompress_internal.h +240 -0
  330. data/vendor/zstd/lib/deprecated/zbuff.h +214 -0
  331. data/vendor/zstd/lib/deprecated/zbuff_common.c +26 -0
  332. data/vendor/zstd/lib/deprecated/zbuff_compress.c +167 -0
  333. data/vendor/zstd/lib/deprecated/zbuff_decompress.c +77 -0
  334. data/vendor/zstd/lib/dictBuilder/cover.c +1333 -0
  335. data/vendor/zstd/lib/dictBuilder/cover.h +152 -0
  336. data/vendor/zstd/lib/dictBuilder/divsufsort.c +1913 -0
  337. data/vendor/zstd/lib/dictBuilder/divsufsort.h +57 -0
  338. data/vendor/zstd/lib/dictBuilder/fastcover.c +765 -0
  339. data/vendor/zstd/lib/dictBuilder/zdict.c +1137 -0
  340. data/vendor/zstd/lib/dll/example/Makefile +48 -0
  341. data/vendor/zstd/lib/dll/example/README.md +63 -0
  342. data/vendor/zstd/lib/dll/example/build_package.bat +55 -0
  343. data/vendor/zstd/lib/dll/example/fullbench-dll.sln +25 -0
  344. data/vendor/zstd/lib/dll/example/fullbench-dll.vcxproj +181 -0
  345. data/vendor/zstd/lib/install_oses.mk +17 -0
  346. data/vendor/zstd/lib/legacy/zstd_legacy.h +452 -0
  347. data/vendor/zstd/lib/legacy/zstd_v01.c +2128 -0
  348. data/vendor/zstd/lib/legacy/zstd_v01.h +94 -0
  349. data/vendor/zstd/lib/legacy/zstd_v02.c +3465 -0
  350. data/vendor/zstd/lib/legacy/zstd_v02.h +93 -0
  351. data/vendor/zstd/lib/legacy/zstd_v03.c +3105 -0
  352. data/vendor/zstd/lib/legacy/zstd_v03.h +93 -0
  353. data/vendor/zstd/lib/legacy/zstd_v04.c +3598 -0
  354. data/vendor/zstd/lib/legacy/zstd_v04.h +142 -0
  355. data/vendor/zstd/lib/legacy/zstd_v05.c +4005 -0
  356. data/vendor/zstd/lib/legacy/zstd_v05.h +162 -0
  357. data/vendor/zstd/lib/legacy/zstd_v06.c +4110 -0
  358. data/vendor/zstd/lib/legacy/zstd_v06.h +172 -0
  359. data/vendor/zstd/lib/legacy/zstd_v07.c +4490 -0
  360. data/vendor/zstd/lib/legacy/zstd_v07.h +187 -0
  361. data/vendor/zstd/lib/libzstd.mk +238 -0
  362. data/vendor/zstd/lib/libzstd.pc.in +17 -0
  363. data/vendor/zstd/lib/module.modulemap +35 -0
  364. data/vendor/zstd/lib/zdict.h +481 -0
  365. data/vendor/zstd/lib/zstd.h +3209 -0
  366. data/vendor/zstd/lib/zstd_errors.h +107 -0
  367. data/vendor/zstd/programs/BUCK +44 -0
  368. data/vendor/zstd/programs/Makefile +445 -0
  369. data/vendor/zstd/programs/README.md +344 -0
  370. data/vendor/zstd/programs/benchfn.c +256 -0
  371. data/vendor/zstd/programs/benchfn.h +173 -0
  372. data/vendor/zstd/programs/benchzstd.c +1270 -0
  373. data/vendor/zstd/programs/benchzstd.h +191 -0
  374. data/vendor/zstd/programs/datagen.c +186 -0
  375. data/vendor/zstd/programs/datagen.h +38 -0
  376. data/vendor/zstd/programs/dibio.c +447 -0
  377. data/vendor/zstd/programs/dibio.h +39 -0
  378. data/vendor/zstd/programs/fileio.c +3717 -0
  379. data/vendor/zstd/programs/fileio.h +171 -0
  380. data/vendor/zstd/programs/fileio_asyncio.c +663 -0
  381. data/vendor/zstd/programs/fileio_asyncio.h +195 -0
  382. data/vendor/zstd/programs/fileio_common.h +121 -0
  383. data/vendor/zstd/programs/fileio_types.h +86 -0
  384. data/vendor/zstd/programs/lorem.c +285 -0
  385. data/vendor/zstd/programs/lorem.h +32 -0
  386. data/vendor/zstd/programs/platform.h +217 -0
  387. data/vendor/zstd/programs/timefn.c +170 -0
  388. data/vendor/zstd/programs/timefn.h +59 -0
  389. data/vendor/zstd/programs/util.c +1731 -0
  390. data/vendor/zstd/programs/util.h +364 -0
  391. data/vendor/zstd/programs/windres/verrsrc.h +17 -0
  392. data/vendor/zstd/programs/windres/zstd.rc +51 -0
  393. data/vendor/zstd/programs/windres/zstd32.res +0 -0
  394. data/vendor/zstd/programs/windres/zstd64.res +0 -0
  395. data/vendor/zstd/programs/zstd.1 +580 -0
  396. data/vendor/zstd/programs/zstd.1.md +714 -0
  397. data/vendor/zstd/programs/zstdcli.c +1675 -0
  398. data/vendor/zstd/programs/zstdcli_trace.c +173 -0
  399. data/vendor/zstd/programs/zstdcli_trace.h +24 -0
  400. data/vendor/zstd/programs/zstdgrep +134 -0
  401. data/vendor/zstd/programs/zstdgrep.1 +26 -0
  402. data/vendor/zstd/programs/zstdgrep.1.md +30 -0
  403. data/vendor/zstd/programs/zstdless +8 -0
  404. data/vendor/zstd/programs/zstdless.1 +14 -0
  405. data/vendor/zstd/programs/zstdless.1.md +16 -0
  406. data/vendor/zstd/tests/DEPRECATED-test-zstd-speed.py +378 -0
  407. data/vendor/zstd/tests/Makefile +485 -0
  408. data/vendor/zstd/tests/README.md +184 -0
  409. data/vendor/zstd/tests/automated_benchmarking.py +326 -0
  410. data/vendor/zstd/tests/checkTag.c +65 -0
  411. data/vendor/zstd/tests/check_size.py +31 -0
  412. data/vendor/zstd/tests/cli-tests/README.md +258 -0
  413. data/vendor/zstd/tests/cli-tests/basic/args.sh +10 -0
  414. data/vendor/zstd/tests/cli-tests/basic/args.sh.exit +1 -0
  415. data/vendor/zstd/tests/cli-tests/basic/args.sh.stderr.glob +28 -0
  416. data/vendor/zstd/tests/cli-tests/basic/help.sh +10 -0
  417. data/vendor/zstd/tests/cli-tests/basic/help.sh.stdout.glob +34 -0
  418. data/vendor/zstd/tests/cli-tests/basic/memlimit.sh +40 -0
  419. data/vendor/zstd/tests/cli-tests/basic/memlimit.sh.stderr.exact +13 -0
  420. data/vendor/zstd/tests/cli-tests/basic/memlimit.sh.stdout.exact +13 -0
  421. data/vendor/zstd/tests/cli-tests/basic/output_dir.sh +7 -0
  422. data/vendor/zstd/tests/cli-tests/basic/output_dir.sh.stderr.exact +2 -0
  423. data/vendor/zstd/tests/cli-tests/basic/output_dir.sh.stdout.exact +2 -0
  424. data/vendor/zstd/tests/cli-tests/basic/version.sh +6 -0
  425. data/vendor/zstd/tests/cli-tests/basic/version.sh.stdout.glob +2 -0
  426. data/vendor/zstd/tests/cli-tests/bin/cmp_size +44 -0
  427. data/vendor/zstd/tests/cli-tests/bin/datagen +3 -0
  428. data/vendor/zstd/tests/cli-tests/bin/die +4 -0
  429. data/vendor/zstd/tests/cli-tests/bin/println +2 -0
  430. data/vendor/zstd/tests/cli-tests/bin/unzstd +1 -0
  431. data/vendor/zstd/tests/cli-tests/bin/zstd +9 -0
  432. data/vendor/zstd/tests/cli-tests/bin/zstdcat +1 -0
  433. data/vendor/zstd/tests/cli-tests/bin/zstdgrep +2 -0
  434. data/vendor/zstd/tests/cli-tests/bin/zstdless +2 -0
  435. data/vendor/zstd/tests/cli-tests/cltools/setup +6 -0
  436. data/vendor/zstd/tests/cli-tests/cltools/zstdgrep.sh +8 -0
  437. data/vendor/zstd/tests/cli-tests/cltools/zstdgrep.sh.exit +1 -0
  438. data/vendor/zstd/tests/cli-tests/cltools/zstdgrep.sh.stderr.exact +1 -0
  439. data/vendor/zstd/tests/cli-tests/cltools/zstdgrep.sh.stdout.glob +4 -0
  440. data/vendor/zstd/tests/cli-tests/cltools/zstdless.sh +10 -0
  441. data/vendor/zstd/tests/cli-tests/cltools/zstdless.sh.stderr.exact +2 -0
  442. data/vendor/zstd/tests/cli-tests/cltools/zstdless.sh.stdout.glob +5 -0
  443. data/vendor/zstd/tests/cli-tests/common/format.sh +19 -0
  444. data/vendor/zstd/tests/cli-tests/common/mtime.sh +13 -0
  445. data/vendor/zstd/tests/cli-tests/common/permissions.sh +18 -0
  446. data/vendor/zstd/tests/cli-tests/common/platform.sh +47 -0
  447. data/vendor/zstd/tests/cli-tests/compression/adapt.sh +14 -0
  448. data/vendor/zstd/tests/cli-tests/compression/basic.sh +36 -0
  449. data/vendor/zstd/tests/cli-tests/compression/compress-literals.sh +10 -0
  450. data/vendor/zstd/tests/cli-tests/compression/format.sh +16 -0
  451. data/vendor/zstd/tests/cli-tests/compression/golden.sh +16 -0
  452. data/vendor/zstd/tests/cli-tests/compression/gzip-compat.sh +17 -0
  453. data/vendor/zstd/tests/cli-tests/compression/levels.sh +75 -0
  454. data/vendor/zstd/tests/cli-tests/compression/levels.sh.stderr.exact +80 -0
  455. data/vendor/zstd/tests/cli-tests/compression/long-distance-matcher.sh +7 -0
  456. data/vendor/zstd/tests/cli-tests/compression/multi-threaded.sh +22 -0
  457. data/vendor/zstd/tests/cli-tests/compression/multi-threaded.sh.stderr.exact +21 -0
  458. data/vendor/zstd/tests/cli-tests/compression/multiple-files.sh +21 -0
  459. data/vendor/zstd/tests/cli-tests/compression/multiple-files.sh.stdout.exact +12 -0
  460. data/vendor/zstd/tests/cli-tests/compression/row-match-finder.sh +7 -0
  461. data/vendor/zstd/tests/cli-tests/compression/setup +7 -0
  462. data/vendor/zstd/tests/cli-tests/compression/stream-size.sh +7 -0
  463. data/vendor/zstd/tests/cli-tests/compression/verbose-wlog.sh +11 -0
  464. data/vendor/zstd/tests/cli-tests/compression/verbose-wlog.sh.stderr.glob +5 -0
  465. data/vendor/zstd/tests/cli-tests/compression/verbose-wlog.sh.stdout.glob +5 -0
  466. data/vendor/zstd/tests/cli-tests/compression/window-resize.sh +9 -0
  467. data/vendor/zstd/tests/cli-tests/compression/window-resize.sh.stderr.ignore +0 -0
  468. data/vendor/zstd/tests/cli-tests/compression/window-resize.sh.stdout.glob +3 -0
  469. data/vendor/zstd/tests/cli-tests/decompression/detectErrors.sh +11 -0
  470. data/vendor/zstd/tests/cli-tests/decompression/golden.sh +7 -0
  471. data/vendor/zstd/tests/cli-tests/decompression/pass-through.sh +57 -0
  472. data/vendor/zstd/tests/cli-tests/decompression/pass-through.sh.stderr.exact +11 -0
  473. data/vendor/zstd/tests/cli-tests/decompression/pass-through.sh.stdout.exact +25 -0
  474. data/vendor/zstd/tests/cli-tests/determinism/basic.sh +36 -0
  475. data/vendor/zstd/tests/cli-tests/determinism/basic.sh.stderr.exact +0 -0
  476. data/vendor/zstd/tests/cli-tests/determinism/basic.sh.stdout.exact +880 -0
  477. data/vendor/zstd/tests/cli-tests/determinism/multithread.sh +45 -0
  478. data/vendor/zstd/tests/cli-tests/determinism/multithread.sh.stderr.exact +0 -0
  479. data/vendor/zstd/tests/cli-tests/determinism/multithread.sh.stdout.exact +260 -0
  480. data/vendor/zstd/tests/cli-tests/determinism/reuse.sh +44 -0
  481. data/vendor/zstd/tests/cli-tests/determinism/reuse.sh.stderr.exact +0 -0
  482. data/vendor/zstd/tests/cli-tests/determinism/reuse.sh.stdout.exact +19 -0
  483. data/vendor/zstd/tests/cli-tests/determinism/setup +5 -0
  484. data/vendor/zstd/tests/cli-tests/determinism/setup_once +30 -0
  485. data/vendor/zstd/tests/cli-tests/dict-builder/empty-input.sh +9 -0
  486. data/vendor/zstd/tests/cli-tests/dict-builder/empty-input.sh.stderr.exact +1 -0
  487. data/vendor/zstd/tests/cli-tests/dict-builder/no-inputs.sh +3 -0
  488. data/vendor/zstd/tests/cli-tests/dict-builder/no-inputs.sh.exit +1 -0
  489. data/vendor/zstd/tests/cli-tests/dict-builder/no-inputs.sh.stderr.exact +5 -0
  490. data/vendor/zstd/tests/cli-tests/dictionaries/dictionary-mismatch.sh +29 -0
  491. data/vendor/zstd/tests/cli-tests/dictionaries/dictionary-mismatch.sh.stderr.exact +7 -0
  492. data/vendor/zstd/tests/cli-tests/dictionaries/golden.sh +9 -0
  493. data/vendor/zstd/tests/cli-tests/dictionaries/setup +6 -0
  494. data/vendor/zstd/tests/cli-tests/dictionaries/setup_once +24 -0
  495. data/vendor/zstd/tests/cli-tests/file-handling/directory-mirror.sh +49 -0
  496. data/vendor/zstd/tests/cli-tests/file-handling/directory-mirror.sh.stderr.exact +0 -0
  497. data/vendor/zstd/tests/cli-tests/file-handling/directory-mirror.sh.stdout.exact +0 -0
  498. data/vendor/zstd/tests/cli-tests/file-stat/compress-file-to-dir-without-write-perm.sh +12 -0
  499. data/vendor/zstd/tests/cli-tests/file-stat/compress-file-to-dir-without-write-perm.sh.stderr.exact +30 -0
  500. data/vendor/zstd/tests/cli-tests/file-stat/compress-file-to-file.sh +9 -0
  501. data/vendor/zstd/tests/cli-tests/file-stat/compress-file-to-file.sh.stderr.glob +46 -0
  502. data/vendor/zstd/tests/cli-tests/file-stat/compress-file-to-stdout.sh +8 -0
  503. data/vendor/zstd/tests/cli-tests/file-stat/compress-file-to-stdout.sh.stderr.exact +24 -0
  504. data/vendor/zstd/tests/cli-tests/file-stat/compress-stdin-to-file.sh +8 -0
  505. data/vendor/zstd/tests/cli-tests/file-stat/compress-stdin-to-file.sh.stderr.glob +28 -0
  506. data/vendor/zstd/tests/cli-tests/file-stat/compress-stdin-to-stdout.sh +8 -0
  507. data/vendor/zstd/tests/cli-tests/file-stat/compress-stdin-to-stdout.sh.stderr.exact +18 -0
  508. data/vendor/zstd/tests/cli-tests/file-stat/decompress-file-to-file.sh +8 -0
  509. data/vendor/zstd/tests/cli-tests/file-stat/decompress-file-to-file.sh.stderr.glob +42 -0
  510. data/vendor/zstd/tests/cli-tests/file-stat/decompress-file-to-stdout.sh +7 -0
  511. data/vendor/zstd/tests/cli-tests/file-stat/decompress-file-to-stdout.sh.stderr.exact +18 -0
  512. data/vendor/zstd/tests/cli-tests/file-stat/decompress-stdin-to-file.sh +7 -0
  513. data/vendor/zstd/tests/cli-tests/file-stat/decompress-stdin-to-file.sh.stderr.glob +24 -0
  514. data/vendor/zstd/tests/cli-tests/file-stat/decompress-stdin-to-stdout.sh +7 -0
  515. data/vendor/zstd/tests/cli-tests/file-stat/decompress-stdin-to-stdout.sh.stderr.exact +14 -0
  516. data/vendor/zstd/tests/cli-tests/progress/no-progress.sh +46 -0
  517. data/vendor/zstd/tests/cli-tests/progress/no-progress.sh.stderr.glob +96 -0
  518. data/vendor/zstd/tests/cli-tests/progress/progress.sh +41 -0
  519. data/vendor/zstd/tests/cli-tests/progress/progress.sh.stderr.glob +62 -0
  520. data/vendor/zstd/tests/cli-tests/run.py +732 -0
  521. data/vendor/zstd/tests/cli-tests/zstd-symlinks/setup +6 -0
  522. data/vendor/zstd/tests/cli-tests/zstd-symlinks/zstdcat.sh +12 -0
  523. data/vendor/zstd/tests/cli-tests/zstd-symlinks/zstdcat.sh.stdout.exact +8 -0
  524. data/vendor/zstd/tests/datagencli.c +149 -0
  525. data/vendor/zstd/tests/decodecorpus.c +1998 -0
  526. data/vendor/zstd/tests/dict-files/zero-weight-dict +0 -0
  527. data/vendor/zstd/tests/external_matchfinder.c +140 -0
  528. data/vendor/zstd/tests/external_matchfinder.h +39 -0
  529. data/vendor/zstd/tests/fullbench.c +1210 -0
  530. data/vendor/zstd/tests/fuzz/Makefile +278 -0
  531. data/vendor/zstd/tests/fuzz/README.md +161 -0
  532. data/vendor/zstd/tests/fuzz/block_decompress.c +53 -0
  533. data/vendor/zstd/tests/fuzz/block_round_trip.c +103 -0
  534. data/vendor/zstd/tests/fuzz/decompress_cross_format.c +130 -0
  535. data/vendor/zstd/tests/fuzz/decompress_dstSize_tooSmall.c +74 -0
  536. data/vendor/zstd/tests/fuzz/dictionary_decompress.c +77 -0
  537. data/vendor/zstd/tests/fuzz/dictionary_loader.c +106 -0
  538. data/vendor/zstd/tests/fuzz/dictionary_round_trip.c +155 -0
  539. data/vendor/zstd/tests/fuzz/dictionary_stream_round_trip.c +209 -0
  540. data/vendor/zstd/tests/fuzz/fse_read_ncount.c +100 -0
  541. data/vendor/zstd/tests/fuzz/fuzz.h +57 -0
  542. data/vendor/zstd/tests/fuzz/fuzz.py +910 -0
  543. data/vendor/zstd/tests/fuzz/fuzz_data_producer.c +95 -0
  544. data/vendor/zstd/tests/fuzz/fuzz_data_producer.h +66 -0
  545. data/vendor/zstd/tests/fuzz/fuzz_helpers.c +47 -0
  546. data/vendor/zstd/tests/fuzz/fuzz_helpers.h +82 -0
  547. data/vendor/zstd/tests/fuzz/fuzz_third_party_seq_prod.h +116 -0
  548. data/vendor/zstd/tests/fuzz/generate_sequences.c +88 -0
  549. data/vendor/zstd/tests/fuzz/huf_decompress.c +68 -0
  550. data/vendor/zstd/tests/fuzz/huf_round_trip.c +137 -0
  551. data/vendor/zstd/tests/fuzz/raw_dictionary_round_trip.c +119 -0
  552. data/vendor/zstd/tests/fuzz/regression_driver.c +90 -0
  553. data/vendor/zstd/tests/fuzz/seekable_roundtrip.c +88 -0
  554. data/vendor/zstd/tests/fuzz/seq_prod_fuzz_example/Makefile +16 -0
  555. data/vendor/zstd/tests/fuzz/seq_prod_fuzz_example/README.md +12 -0
  556. data/vendor/zstd/tests/fuzz/seq_prod_fuzz_example/example_seq_prod.c +52 -0
  557. data/vendor/zstd/tests/fuzz/sequence_compression_api.c +452 -0
  558. data/vendor/zstd/tests/fuzz/simple_compress.c +60 -0
  559. data/vendor/zstd/tests/fuzz/simple_decompress.c +59 -0
  560. data/vendor/zstd/tests/fuzz/simple_round_trip.c +182 -0
  561. data/vendor/zstd/tests/fuzz/stream_decompress.c +119 -0
  562. data/vendor/zstd/tests/fuzz/stream_round_trip.c +218 -0
  563. data/vendor/zstd/tests/fuzz/zstd_frame_info.c +43 -0
  564. data/vendor/zstd/tests/fuzz/zstd_helpers.c +208 -0
  565. data/vendor/zstd/tests/fuzz/zstd_helpers.h +56 -0
  566. data/vendor/zstd/tests/fuzzer.c +5482 -0
  567. data/vendor/zstd/tests/golden-compression/PR-3517-block-splitter-corruption-test +1 -0
  568. data/vendor/zstd/tests/golden-compression/http +1 -0
  569. data/vendor/zstd/tests/golden-compression/huffman-compressed-larger +0 -0
  570. data/vendor/zstd/tests/golden-compression/large-literal-and-match-lengths +0 -0
  571. data/vendor/zstd/tests/golden-decompression/block-128k.zst +0 -0
  572. data/vendor/zstd/tests/golden-decompression/empty-block.zst +0 -0
  573. data/vendor/zstd/tests/golden-decompression/rle-first-block.zst +0 -0
  574. data/vendor/zstd/tests/golden-decompression/zeroSeq_2B.zst +0 -0
  575. data/vendor/zstd/tests/golden-decompression-errors/off0.bin.zst +0 -0
  576. data/vendor/zstd/tests/golden-decompression-errors/truncated_huff_state.zst +0 -0
  577. data/vendor/zstd/tests/golden-decompression-errors/zeroSeq_extraneous.zst +0 -0
  578. data/vendor/zstd/tests/golden-dictionaries/http-dict-missing-symbols +0 -0
  579. data/vendor/zstd/tests/gzip/Makefile +45 -0
  580. data/vendor/zstd/tests/gzip/gzip-env.sh +46 -0
  581. data/vendor/zstd/tests/gzip/helin-segv.sh +31 -0
  582. data/vendor/zstd/tests/gzip/help-version.sh +270 -0
  583. data/vendor/zstd/tests/gzip/hufts-segv.gz +0 -0
  584. data/vendor/zstd/tests/gzip/hufts.sh +34 -0
  585. data/vendor/zstd/tests/gzip/init.cfg +5 -0
  586. data/vendor/zstd/tests/gzip/init.sh +616 -0
  587. data/vendor/zstd/tests/gzip/keep.sh +51 -0
  588. data/vendor/zstd/tests/gzip/list.sh +31 -0
  589. data/vendor/zstd/tests/gzip/memcpy-abuse.sh +34 -0
  590. data/vendor/zstd/tests/gzip/mixed.sh +68 -0
  591. data/vendor/zstd/tests/gzip/null-suffix-clobber.sh +35 -0
  592. data/vendor/zstd/tests/gzip/stdin.sh +31 -0
  593. data/vendor/zstd/tests/gzip/test-driver.sh +150 -0
  594. data/vendor/zstd/tests/gzip/trailing-nul.sh +37 -0
  595. data/vendor/zstd/tests/gzip/unpack-invalid.sh +36 -0
  596. data/vendor/zstd/tests/gzip/z-suffix.sh +30 -0
  597. data/vendor/zstd/tests/gzip/zdiff.sh +48 -0
  598. data/vendor/zstd/tests/gzip/zgrep-context.sh +47 -0
  599. data/vendor/zstd/tests/gzip/zgrep-f.sh +43 -0
  600. data/vendor/zstd/tests/gzip/zgrep-signal.sh +64 -0
  601. data/vendor/zstd/tests/gzip/znew-k.sh +40 -0
  602. data/vendor/zstd/tests/invalidDictionaries.c +61 -0
  603. data/vendor/zstd/tests/largeDictionary.c +131 -0
  604. data/vendor/zstd/tests/legacy.c +262 -0
  605. data/vendor/zstd/tests/libzstd_builds.sh +104 -0
  606. data/vendor/zstd/tests/longmatch.c +123 -0
  607. data/vendor/zstd/tests/loremOut.c +50 -0
  608. data/vendor/zstd/tests/loremOut.h +15 -0
  609. data/vendor/zstd/tests/paramgrill.c +2965 -0
  610. data/vendor/zstd/tests/playTests.sh +1926 -0
  611. data/vendor/zstd/tests/poolTests.c +271 -0
  612. data/vendor/zstd/tests/rateLimiter.py +41 -0
  613. data/vendor/zstd/tests/regression/Makefile +60 -0
  614. data/vendor/zstd/tests/regression/README.md +28 -0
  615. data/vendor/zstd/tests/regression/config.c +404 -0
  616. data/vendor/zstd/tests/regression/config.h +91 -0
  617. data/vendor/zstd/tests/regression/data.c +631 -0
  618. data/vendor/zstd/tests/regression/data.h +121 -0
  619. data/vendor/zstd/tests/regression/levels.h +59 -0
  620. data/vendor/zstd/tests/regression/method.c +701 -0
  621. data/vendor/zstd/tests/regression/method.h +65 -0
  622. data/vendor/zstd/tests/regression/result.c +30 -0
  623. data/vendor/zstd/tests/regression/result.h +103 -0
  624. data/vendor/zstd/tests/regression/results.csv +1480 -0
  625. data/vendor/zstd/tests/regression/test.c +362 -0
  626. data/vendor/zstd/tests/roundTripCrash.c +241 -0
  627. data/vendor/zstd/tests/seqgen.c +260 -0
  628. data/vendor/zstd/tests/seqgen.h +58 -0
  629. data/vendor/zstd/tests/test-license.py +156 -0
  630. data/vendor/zstd/tests/test-variants.sh +115 -0
  631. data/vendor/zstd/tests/test-zstd-versions.py +308 -0
  632. data/vendor/zstd/tests/test_process_substitution.bash +92 -0
  633. data/vendor/zstd/tests/zstreamtest.c +3467 -0
  634. data/vendor/zstd/zlibWrapper/BUCK +22 -0
  635. data/vendor/zstd/zlibWrapper/Makefile +120 -0
  636. data/vendor/zstd/zlibWrapper/README.md +163 -0
  637. data/vendor/zstd/zlibWrapper/examples/example.c +598 -0
  638. data/vendor/zstd/zlibWrapper/examples/example_original.c +599 -0
  639. data/vendor/zstd/zlibWrapper/examples/fitblk.c +254 -0
  640. data/vendor/zstd/zlibWrapper/examples/fitblk_original.c +233 -0
  641. data/vendor/zstd/zlibWrapper/examples/minigzip.c +605 -0
  642. data/vendor/zstd/zlibWrapper/examples/zwrapbench.c +1018 -0
  643. data/vendor/zstd/zlibWrapper/gzclose.c +26 -0
  644. data/vendor/zstd/zlibWrapper/gzcompatibility.h +68 -0
  645. data/vendor/zstd/zlibWrapper/gzguts.h +229 -0
  646. data/vendor/zstd/zlibWrapper/gzlib.c +587 -0
  647. data/vendor/zstd/zlibWrapper/gzread.c +637 -0
  648. data/vendor/zstd/zlibWrapper/gzwrite.c +632 -0
  649. data/vendor/zstd/zlibWrapper/zstd_zlibwrapper.c +1200 -0
  650. data/vendor/zstd/zlibWrapper/zstd_zlibwrapper.h +91 -0
  651. metadata +738 -0
@@ -0,0 +1,774 @@
1
+ #!/usr/bin/env python3
2
+ # ################################################################
3
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
4
+ # All rights reserved.
5
+ #
6
+ # This source code is licensed under both the BSD-style license (found in the
7
+ # LICENSE file in the root directory of this source tree) and the GPLv2 (found
8
+ # in the COPYING file in the root directory of this source tree).
9
+ # You may select, at your option, one of the above-listed licenses.
10
+ # ##########################################################################
11
+
12
+ import argparse
13
+ import contextlib
14
+ import os
15
+ import re
16
+ import shutil
17
+ import sys
18
+ from typing import Optional
19
+
20
+
21
+ INCLUDED_SUBDIRS = ["common", "compress", "decompress"]
22
+
23
+ SKIPPED_FILES = [
24
+ "common/mem.h",
25
+ "common/zstd_deps.h",
26
+ "common/pool.c",
27
+ "common/pool.h",
28
+ "common/threading.c",
29
+ "common/threading.h",
30
+ "common/zstd_trace.h",
31
+ "compress/zstdmt_compress.h",
32
+ "compress/zstdmt_compress.c",
33
+ ]
34
+
35
+ XXHASH_FILES = [
36
+ "common/xxhash.c",
37
+ "common/xxhash.h",
38
+ ]
39
+
40
+
41
+ class FileLines(object):
42
+ def __init__(self, filename):
43
+ self.filename = filename
44
+ with open(self.filename, "r") as f:
45
+ self.lines = f.readlines()
46
+
47
+ def write(self):
48
+ with open(self.filename, "w") as f:
49
+ f.write("".join(self.lines))
50
+
51
+
52
+ class PartialPreprocessor(object):
53
+ """
54
+ Looks for simple ifdefs and ifndefs and replaces them.
55
+ Handles && and ||.
56
+ Has fancy logic to handle translating elifs to ifs.
57
+ Only looks for macros in the first part of the expression with no
58
+ parens.
59
+ Does not handle multi-line macros (only looks in first line).
60
+ """
61
+ def __init__(self, defs: [(str, Optional[str])], replaces: [(str, str)], undefs: [str]):
62
+ MACRO_GROUP = r"(?P<macro>[a-zA-Z_][a-zA-Z_0-9]*)"
63
+ ELIF_GROUP = r"(?P<elif>el)?"
64
+ OP_GROUP = r"(?P<op>&&|\|\|)?"
65
+
66
+ self._defs = {macro:value for macro, value in defs}
67
+ self._replaces = {macro:value for macro, value in replaces}
68
+ self._defs.update(self._replaces)
69
+ self._undefs = set(undefs)
70
+
71
+ self._define = re.compile(r"\s*#\s*define")
72
+ self._if = re.compile(r"\s*#\s*if")
73
+ self._elif = re.compile(r"\s*#\s*(?P<elif>el)if")
74
+ self._else = re.compile(r"\s*#\s*(?P<else>else)")
75
+ self._endif = re.compile(r"\s*#\s*endif")
76
+
77
+ self._ifdef = re.compile(fr"\s*#\s*if(?P<not>n)?def {MACRO_GROUP}\s*")
78
+ self._if_defined = re.compile(
79
+ fr"\s*#\s*{ELIF_GROUP}if\s+(?P<not>!)?\s*defined\s*\(\s*{MACRO_GROUP}\s*\)\s*{OP_GROUP}"
80
+ )
81
+ self._if_defined_value = re.compile(
82
+ fr"\s*#\s*{ELIF_GROUP}if\s+defined\s*\(\s*{MACRO_GROUP}\s*\)\s*"
83
+ fr"(?P<op>&&)\s*"
84
+ fr"(?P<openp>\()?\s*"
85
+ fr"(?P<macro2>[a-zA-Z_][a-zA-Z_0-9]*)\s*"
86
+ fr"(?P<cmp>[=><!]+)\s*"
87
+ fr"(?P<value>[0-9]*)\s*"
88
+ fr"(?P<closep>\))?\s*"
89
+ )
90
+ self._if_true = re.compile(
91
+ fr"\s*#\s*{ELIF_GROUP}if\s+{MACRO_GROUP}\s*{OP_GROUP}"
92
+ )
93
+
94
+ self._c_comment = re.compile(r"/\*.*?\*/")
95
+ self._cpp_comment = re.compile(r"//")
96
+
97
+ def _log(self, *args, **kwargs):
98
+ print(*args, **kwargs)
99
+
100
+ def _strip_comments(self, line):
101
+ # First strip c-style comments (may include //)
102
+ while True:
103
+ m = self._c_comment.search(line)
104
+ if m is None:
105
+ break
106
+ line = line[:m.start()] + line[m.end():]
107
+
108
+ # Then strip cpp-style comments
109
+ m = self._cpp_comment.search(line)
110
+ if m is not None:
111
+ line = line[:m.start()]
112
+
113
+ return line
114
+
115
+ def _fixup_indentation(self, macro, replace: [str]):
116
+ if len(replace) == 0:
117
+ return replace
118
+ if len(replace) == 1 and self._define.match(replace[0]) is None:
119
+ # If there is only one line, only replace defines
120
+ return replace
121
+
122
+
123
+ all_pound = True
124
+ for line in replace:
125
+ if not line.startswith('#'):
126
+ all_pound = False
127
+ if all_pound:
128
+ replace = [line[1:] for line in replace]
129
+
130
+ min_spaces = len(replace[0])
131
+ for line in replace:
132
+ spaces = 0
133
+ for i, c in enumerate(line):
134
+ if c != ' ':
135
+ # Non-preprocessor line ==> skip the fixup
136
+ if not all_pound and c != '#':
137
+ return replace
138
+ spaces = i
139
+ break
140
+ min_spaces = min(min_spaces, spaces)
141
+
142
+ replace = [line[min_spaces:] for line in replace]
143
+
144
+ if all_pound:
145
+ replace = ["#" + line for line in replace]
146
+
147
+ return replace
148
+
149
+ def _handle_if_block(self, macro, idx, is_true, prepend):
150
+ """
151
+ Remove the #if or #elif block starting on this line.
152
+ """
153
+ REMOVE_ONE = 0
154
+ KEEP_ONE = 1
155
+ REMOVE_REST = 2
156
+
157
+ if is_true:
158
+ state = KEEP_ONE
159
+ else:
160
+ state = REMOVE_ONE
161
+
162
+ line = self._inlines[idx]
163
+ is_if = self._if.match(line) is not None
164
+ assert is_if or self._elif.match(line) is not None
165
+ depth = 0
166
+
167
+ start_idx = idx
168
+
169
+ idx += 1
170
+ replace = prepend
171
+ finished = False
172
+ while idx < len(self._inlines):
173
+ line = self._inlines[idx]
174
+ # Nested if statement
175
+ if self._if.match(line):
176
+ depth += 1
177
+ idx += 1
178
+ continue
179
+ # We're inside a nested statement
180
+ if depth > 0:
181
+ if self._endif.match(line):
182
+ depth -= 1
183
+ idx += 1
184
+ continue
185
+
186
+ # We're at the original depth
187
+
188
+ # Looking only for an endif.
189
+ # We've found a true statement, but haven't
190
+ # completely elided the if block, so we just
191
+ # remove the remainder.
192
+ if state == REMOVE_REST:
193
+ if self._endif.match(line):
194
+ if is_if:
195
+ # Remove the endif because we took the first if
196
+ idx += 1
197
+ finished = True
198
+ break
199
+ idx += 1
200
+ continue
201
+
202
+ if state == KEEP_ONE:
203
+ m = self._elif.match(line)
204
+ if self._endif.match(line):
205
+ replace += self._inlines[start_idx + 1:idx]
206
+ idx += 1
207
+ finished = True
208
+ break
209
+ if self._elif.match(line) or self._else.match(line):
210
+ replace += self._inlines[start_idx + 1:idx]
211
+ state = REMOVE_REST
212
+ idx += 1
213
+ continue
214
+
215
+ if state == REMOVE_ONE:
216
+ m = self._elif.match(line)
217
+ if m is not None:
218
+ if is_if:
219
+ idx += 1
220
+ b = m.start('elif')
221
+ e = m.end('elif')
222
+ assert e - b == 2
223
+ replace.append(line[:b] + line[e:])
224
+ finished = True
225
+ break
226
+ m = self._else.match(line)
227
+ if m is not None:
228
+ if is_if:
229
+ idx += 1
230
+ while self._endif.match(self._inlines[idx]) is None:
231
+ replace.append(self._inlines[idx])
232
+ idx += 1
233
+ idx += 1
234
+ finished = True
235
+ break
236
+ if self._endif.match(line):
237
+ if is_if:
238
+ # Remove the endif because no other elifs
239
+ idx += 1
240
+ finished = True
241
+ break
242
+ idx += 1
243
+ continue
244
+ if not finished:
245
+ raise RuntimeError("Unterminated if block!")
246
+
247
+ replace = self._fixup_indentation(macro, replace)
248
+
249
+ self._log(f"\tHardwiring {macro}")
250
+ if start_idx > 0:
251
+ self._log(f"\t\t {self._inlines[start_idx - 1][:-1]}")
252
+ for x in range(start_idx, idx):
253
+ self._log(f"\t\t- {self._inlines[x][:-1]}")
254
+ for line in replace:
255
+ self._log(f"\t\t+ {line[:-1]}")
256
+ if idx < len(self._inlines):
257
+ self._log(f"\t\t {self._inlines[idx][:-1]}")
258
+
259
+ return idx, replace
260
+
261
+ def _preprocess_once(self):
262
+ outlines = []
263
+ idx = 0
264
+ changed = False
265
+ while idx < len(self._inlines):
266
+ line = self._inlines[idx]
267
+ sline = self._strip_comments(line)
268
+ m = self._ifdef.fullmatch(sline)
269
+ if_true = False
270
+ if m is None:
271
+ m = self._if_defined_value.fullmatch(sline)
272
+ if m is None:
273
+ m = self._if_defined.match(sline)
274
+ if m is None:
275
+ m = self._if_true.match(sline)
276
+ if_true = (m is not None)
277
+ if m is None:
278
+ outlines.append(line)
279
+ idx += 1
280
+ continue
281
+
282
+ groups = m.groupdict()
283
+ macro = groups['macro']
284
+ op = groups.get('op')
285
+
286
+ if not (macro in self._defs or macro in self._undefs):
287
+ outlines.append(line)
288
+ idx += 1
289
+ continue
290
+
291
+ defined = macro in self._defs
292
+
293
+ # Needed variables set:
294
+ # resolved: Is the statement fully resolved?
295
+ # is_true: If resolved, is the statement true?
296
+ ifdef = False
297
+ if if_true:
298
+ if not defined:
299
+ outlines.append(line)
300
+ idx += 1
301
+ continue
302
+
303
+ defined_value = self._defs[macro]
304
+ is_int = True
305
+ try:
306
+ defined_value = int(defined_value)
307
+ except TypeError:
308
+ is_int = False
309
+ except ValueError:
310
+ is_int = False
311
+
312
+ resolved = is_int
313
+ is_true = (defined_value != 0)
314
+
315
+ if resolved and op is not None:
316
+ if op == '&&':
317
+ resolved = not is_true
318
+ else:
319
+ assert op == '||'
320
+ resolved = is_true
321
+
322
+ else:
323
+ ifdef = groups.get('not') is None
324
+ elseif = groups.get('elif') is not None
325
+
326
+ macro2 = groups.get('macro2')
327
+ cmp = groups.get('cmp')
328
+ value = groups.get('value')
329
+ openp = groups.get('openp')
330
+ closep = groups.get('closep')
331
+
332
+ is_true = (ifdef == defined)
333
+ resolved = True
334
+ if op is not None:
335
+ if op == '&&':
336
+ resolved = not is_true
337
+ else:
338
+ assert op == '||'
339
+ resolved = is_true
340
+
341
+ if macro2 is not None and not resolved:
342
+ assert ifdef and defined and op == '&&' and cmp is not None
343
+ # If the statement is true, but we have a single value check, then
344
+ # check the value.
345
+ defined_value = self._defs[macro]
346
+ are_ints = True
347
+ try:
348
+ defined_value = int(defined_value)
349
+ value = int(value)
350
+ except TypeError:
351
+ are_ints = False
352
+ except ValueError:
353
+ are_ints = False
354
+ if (
355
+ macro == macro2 and
356
+ ((openp is None) == (closep is None)) and
357
+ are_ints
358
+ ):
359
+ resolved = True
360
+ if cmp == '<':
361
+ is_true = defined_value < value
362
+ elif cmp == '<=':
363
+ is_true = defined_value <= value
364
+ elif cmp == '==':
365
+ is_true = defined_value == value
366
+ elif cmp == '!=':
367
+ is_true = defined_value != value
368
+ elif cmp == '>=':
369
+ is_true = defined_value >= value
370
+ elif cmp == '>':
371
+ is_true = defined_value > value
372
+ else:
373
+ resolved = False
374
+
375
+ if op is not None and not resolved:
376
+ # Remove the first op in the line + spaces
377
+ if op == '&&':
378
+ opre = op
379
+ else:
380
+ assert op == '||'
381
+ opre = r'\|\|'
382
+ needle = re.compile(fr"(?P<if>\s*#\s*(el)?if\s+).*?(?P<op>{opre}\s*)")
383
+ match = needle.match(line)
384
+ assert match is not None
385
+ newline = line[:match.end('if')] + line[match.end('op'):]
386
+
387
+ self._log(f"\tHardwiring partially resolved {macro}")
388
+ self._log(f"\t\t- {line[:-1]}")
389
+ self._log(f"\t\t+ {newline[:-1]}")
390
+
391
+ outlines.append(newline)
392
+ idx += 1
393
+ continue
394
+
395
+ # Skip any statements we cannot fully compute
396
+ if not resolved:
397
+ outlines.append(line)
398
+ idx += 1
399
+ continue
400
+
401
+ prepend = []
402
+ if macro in self._replaces:
403
+ assert not ifdef
404
+ assert op is None
405
+ value = self._replaces.pop(macro)
406
+ prepend = [f"#define {macro} {value}\n"]
407
+
408
+ idx, replace = self._handle_if_block(macro, idx, is_true, prepend)
409
+ outlines += replace
410
+ changed = True
411
+
412
+ return changed, outlines
413
+
414
+ def preprocess(self, filename):
415
+ with open(filename, 'r') as f:
416
+ self._inlines = f.readlines()
417
+ changed = True
418
+ iters = 0
419
+ while changed:
420
+ iters += 1
421
+ changed, outlines = self._preprocess_once()
422
+ self._inlines = outlines
423
+
424
+ with open(filename, 'w') as f:
425
+ f.write(''.join(self._inlines))
426
+
427
+
428
+ class Freestanding(object):
429
+ def __init__(
430
+ self, zstd_deps: str, mem: str, source_lib: str, output_lib: str,
431
+ external_xxhash: bool, xxh64_state: Optional[str],
432
+ xxh64_prefix: Optional[str], rewritten_includes: [(str, str)],
433
+ defs: [(str, Optional[str])], replaces: [(str, str)],
434
+ undefs: [str], excludes: [str], seds: [str], spdx: bool,
435
+ ):
436
+ self._zstd_deps = zstd_deps
437
+ self._mem = mem
438
+ self._src_lib = source_lib
439
+ self._dst_lib = output_lib
440
+ self._external_xxhash = external_xxhash
441
+ self._xxh64_state = xxh64_state
442
+ self._xxh64_prefix = xxh64_prefix
443
+ self._rewritten_includes = rewritten_includes
444
+ self._defs = defs
445
+ self._replaces = replaces
446
+ self._undefs = undefs
447
+ self._excludes = excludes
448
+ self._seds = seds
449
+ self._spdx = spdx
450
+
451
+ def _dst_lib_file_paths(self):
452
+ """
453
+ Yields all the file paths in the dst_lib.
454
+ """
455
+ for root, dirname, filenames in os.walk(self._dst_lib):
456
+ for filename in filenames:
457
+ filepath = os.path.join(root, filename)
458
+ yield filepath
459
+
460
+ def _log(self, *args, **kwargs):
461
+ print(*args, **kwargs)
462
+
463
+ def _copy_file(self, lib_path):
464
+ suffixes = [".c", ".h", ".S"]
465
+ if not any((lib_path.endswith(suffix) for suffix in suffixes)):
466
+ return
467
+ if lib_path in SKIPPED_FILES:
468
+ self._log(f"\tSkipping file: {lib_path}")
469
+ return
470
+ if self._external_xxhash and lib_path in XXHASH_FILES:
471
+ self._log(f"\tSkipping xxhash file: {lib_path}")
472
+ return
473
+
474
+ src_path = os.path.join(self._src_lib, lib_path)
475
+ dst_path = os.path.join(self._dst_lib, lib_path)
476
+ self._log(f"\tCopying: {src_path} -> {dst_path}")
477
+ shutil.copyfile(src_path, dst_path)
478
+
479
+ def _copy_source_lib(self):
480
+ self._log("Copying source library into output library")
481
+
482
+ assert os.path.exists(self._src_lib)
483
+ os.makedirs(self._dst_lib, exist_ok=True)
484
+ self._copy_file("zstd.h")
485
+ self._copy_file("zstd_errors.h")
486
+ for subdir in INCLUDED_SUBDIRS:
487
+ src_dir = os.path.join(self._src_lib, subdir)
488
+ dst_dir = os.path.join(self._dst_lib, subdir)
489
+
490
+ assert os.path.exists(src_dir)
491
+ os.makedirs(dst_dir, exist_ok=True)
492
+
493
+ for filename in os.listdir(src_dir):
494
+ lib_path = os.path.join(subdir, filename)
495
+ self._copy_file(lib_path)
496
+
497
+ def _copy_zstd_deps(self):
498
+ dst_zstd_deps = os.path.join(self._dst_lib, "common", "zstd_deps.h")
499
+ self._log(f"Copying zstd_deps: {self._zstd_deps} -> {dst_zstd_deps}")
500
+ shutil.copyfile(self._zstd_deps, dst_zstd_deps)
501
+
502
+ def _copy_mem(self):
503
+ dst_mem = os.path.join(self._dst_lib, "common", "mem.h")
504
+ self._log(f"Copying mem: {self._mem} -> {dst_mem}")
505
+ shutil.copyfile(self._mem, dst_mem)
506
+
507
+ def _hardwire_preprocessor(self, name: str, value: Optional[str] = None, undef=False):
508
+ """
509
+ If value=None then hardwire that it is defined, but not what the value is.
510
+ If undef=True then value must be None.
511
+ If value='' then the macro is defined to '' exactly.
512
+ """
513
+ assert not (undef and value is not None)
514
+ for filepath in self._dst_lib_file_paths():
515
+ file = FileLines(filepath)
516
+
517
+ def _hardwire_defines(self):
518
+ self._log("Hardwiring macros")
519
+ partial_preprocessor = PartialPreprocessor(self._defs, self._replaces, self._undefs)
520
+ for filepath in self._dst_lib_file_paths():
521
+ partial_preprocessor.preprocess(filepath)
522
+
523
+ def _remove_excludes(self):
524
+ self._log("Removing excluded sections")
525
+ for exclude in self._excludes:
526
+ self._log(f"\tRemoving excluded sections for: {exclude}")
527
+ begin_re = re.compile(f"BEGIN {exclude}")
528
+ end_re = re.compile(f"END {exclude}")
529
+ for filepath in self._dst_lib_file_paths():
530
+ file = FileLines(filepath)
531
+ outlines = []
532
+ skipped = []
533
+ emit = True
534
+ for line in file.lines:
535
+ if emit and begin_re.search(line) is not None:
536
+ assert end_re.search(line) is None
537
+ emit = False
538
+ if emit:
539
+ outlines.append(line)
540
+ else:
541
+ skipped.append(line)
542
+ if end_re.search(line) is not None:
543
+ assert begin_re.search(line) is None
544
+ self._log(f"\t\tRemoving excluded section: {exclude}")
545
+ for s in skipped:
546
+ self._log(f"\t\t\t- {s}")
547
+ emit = True
548
+ skipped = []
549
+ if not emit:
550
+ raise RuntimeError("Excluded section unfinished!")
551
+ file.lines = outlines
552
+ file.write()
553
+
554
+ def _rewrite_include(self, original, rewritten):
555
+ self._log(f"\tRewriting include: {original} -> {rewritten}")
556
+ regex = re.compile(f"\\s*#\\s*include\\s*(?P<include>{original})")
557
+ for filepath in self._dst_lib_file_paths():
558
+ file = FileLines(filepath)
559
+ for i, line in enumerate(file.lines):
560
+ match = regex.match(line)
561
+ if match is None:
562
+ continue
563
+ s = match.start('include')
564
+ e = match.end('include')
565
+ file.lines[i] = line[:s] + rewritten + line[e:]
566
+ file.write()
567
+
568
+ def _rewrite_includes(self):
569
+ self._log("Rewriting includes")
570
+ for original, rewritten in self._rewritten_includes:
571
+ self._rewrite_include(original, rewritten)
572
+
573
+ def _replace_xxh64_prefix(self):
574
+ if self._xxh64_prefix is None:
575
+ return
576
+ self._log(f"Replacing XXH64 prefix with {self._xxh64_prefix}")
577
+ replacements = []
578
+ if self._xxh64_state is not None:
579
+ replacements.append(
580
+ (re.compile(r"([^\w]|^)(?P<orig>XXH64_state_t)([^\w]|$)"), self._xxh64_state)
581
+ )
582
+ if self._xxh64_prefix is not None:
583
+ replacements.append(
584
+ (re.compile(r"([^\w]|^)(?P<orig>XXH64)[\(_]"), self._xxh64_prefix)
585
+ )
586
+ for filepath in self._dst_lib_file_paths():
587
+ file = FileLines(filepath)
588
+ for i, line in enumerate(file.lines):
589
+ modified = False
590
+ for regex, replacement in replacements:
591
+ match = regex.search(line)
592
+ while match is not None:
593
+ modified = True
594
+ b = match.start('orig')
595
+ e = match.end('orig')
596
+ line = line[:b] + replacement + line[e:]
597
+ match = regex.search(line)
598
+ if modified:
599
+ self._log(f"\t- {file.lines[i][:-1]}")
600
+ self._log(f"\t+ {line[:-1]}")
601
+ file.lines[i] = line
602
+ file.write()
603
+
604
+ def _parse_sed(self, sed):
605
+ assert sed[0] == 's'
606
+ delim = sed[1]
607
+ match = re.fullmatch(f's{delim}(.+){delim}(.*){delim}(.*)', sed)
608
+ assert match is not None
609
+ regex = re.compile(match.group(1))
610
+ format_str = match.group(2)
611
+ is_global = match.group(3) == 'g'
612
+ return regex, format_str, is_global
613
+
614
+ def _process_sed(self, sed):
615
+ self._log(f"Processing sed: {sed}")
616
+ regex, format_str, is_global = self._parse_sed(sed)
617
+
618
+ for filepath in self._dst_lib_file_paths():
619
+ file = FileLines(filepath)
620
+ for i, line in enumerate(file.lines):
621
+ modified = False
622
+ while True:
623
+ match = regex.search(line)
624
+ if match is None:
625
+ break
626
+ replacement = format_str.format(match.groups(''), match.groupdict(''))
627
+ b = match.start()
628
+ e = match.end()
629
+ line = line[:b] + replacement + line[e:]
630
+ modified = True
631
+ if not is_global:
632
+ break
633
+ if modified:
634
+ self._log(f"\t- {file.lines[i][:-1]}")
635
+ self._log(f"\t+ {line[:-1]}")
636
+ file.lines[i] = line
637
+ file.write()
638
+
639
+ def _process_seds(self):
640
+ self._log("Processing seds")
641
+ for sed in self._seds:
642
+ self._process_sed(sed)
643
+
644
+ def _process_spdx(self):
645
+ if not self._spdx:
646
+ return
647
+ self._log("Processing spdx")
648
+ SPDX_C = "// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause\n"
649
+ SPDX_H_S = "/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */\n"
650
+ for filepath in self._dst_lib_file_paths():
651
+ file = FileLines(filepath)
652
+ if file.lines[0] == SPDX_C or file.lines[0] == SPDX_H_S:
653
+ continue
654
+ for line in file.lines:
655
+ if "SPDX-License-Identifier" in line:
656
+ raise RuntimeError(f"Unexpected SPDX license identifier: {file.filename} {repr(line)}")
657
+ if file.filename.endswith(".c"):
658
+ file.lines.insert(0, SPDX_C)
659
+ elif file.filename.endswith(".h") or file.filename.endswith(".S"):
660
+ file.lines.insert(0, SPDX_H_S)
661
+ else:
662
+ raise RuntimeError(f"Unexpected file extension: {file.filename}")
663
+ file.write()
664
+
665
+
666
+
667
+ def go(self):
668
+ self._copy_source_lib()
669
+ self._copy_zstd_deps()
670
+ self._copy_mem()
671
+ self._hardwire_defines()
672
+ self._remove_excludes()
673
+ self._rewrite_includes()
674
+ self._replace_xxh64_prefix()
675
+ self._process_seds()
676
+ self._process_spdx()
677
+
678
+
679
+ def parse_optional_pair(defines: [str]) -> [(str, Optional[str])]:
680
+ output = []
681
+ for define in defines:
682
+ parsed = define.split('=')
683
+ if len(parsed) == 1:
684
+ output.append((parsed[0], None))
685
+ elif len(parsed) == 2:
686
+ output.append((parsed[0], parsed[1]))
687
+ else:
688
+ raise RuntimeError(f"Bad define: {define}")
689
+ return output
690
+
691
+
692
+ def parse_pair(rewritten_includes: [str]) -> [(str, str)]:
693
+ output = []
694
+ for rewritten_include in rewritten_includes:
695
+ parsed = rewritten_include.split('=')
696
+ if len(parsed) == 2:
697
+ output.append((parsed[0], parsed[1]))
698
+ else:
699
+ raise RuntimeError(f"Bad rewritten include: {rewritten_include}")
700
+ return output
701
+
702
+
703
+
704
+ def main(name, args):
705
+ parser = argparse.ArgumentParser(prog=name)
706
+ parser.add_argument("--zstd-deps", default="zstd_deps.h", help="Zstd dependencies file")
707
+ parser.add_argument("--mem", default="mem.h", help="Memory module")
708
+ parser.add_argument("--source-lib", default="../../lib", help="Location of the zstd library")
709
+ parser.add_argument("--output-lib", default="./freestanding_lib", help="Where to output the freestanding zstd library")
710
+ parser.add_argument("--xxhash", default=None, help="Alternate external xxhash include e.g. --xxhash='<xxhash.h>'. If set xxhash is not included.")
711
+ parser.add_argument("--xxh64-state", default=None, help="Alternate XXH64 state type (excluding _) e.g. --xxh64-state='struct xxh64_state'")
712
+ parser.add_argument("--xxh64-prefix", default=None, help="Alternate XXH64 function prefix (excluding _) e.g. --xxh64-prefix=xxh64")
713
+ parser.add_argument("--rewrite-include", default=[], dest="rewritten_includes", action="append", help="Rewrite an include REGEX=NEW (e.g. '<stddef\\.h>=<linux/types.h>')")
714
+ parser.add_argument("--sed", default=[], dest="seds", action="append", help="Apply a sed replacement. Format: `s/REGEX/FORMAT/[g]`. REGEX is a Python regex. FORMAT is a Python format string formatted by the regex dict.")
715
+ parser.add_argument("--spdx", action="store_true", help="Add SPDX License Identifiers")
716
+ parser.add_argument("-D", "--define", default=[], dest="defs", action="append", help="Pre-define this macro (can be passed multiple times)")
717
+ parser.add_argument("-U", "--undefine", default=[], dest="undefs", action="append", help="Pre-undefine this macro (can be passed multiple times)")
718
+ parser.add_argument("-R", "--replace", default=[], dest="replaces", action="append", help="Pre-define this macro and replace the first ifndef block with its definition")
719
+ parser.add_argument("-E", "--exclude", default=[], dest="excludes", action="append", help="Exclude all lines between 'BEGIN <EXCLUDE>' and 'END <EXCLUDE>'")
720
+ args = parser.parse_args(args)
721
+
722
+ # Always remove threading
723
+ if "ZSTD_MULTITHREAD" not in args.undefs:
724
+ args.undefs.append("ZSTD_MULTITHREAD")
725
+
726
+ args.defs = parse_optional_pair(args.defs)
727
+ for name, _ in args.defs:
728
+ if name in args.undefs:
729
+ raise RuntimeError(f"{name} is both defined and undefined!")
730
+
731
+ # Always set tracing to 0
732
+ if "ZSTD_NO_TRACE" not in (arg[0] for arg in args.defs):
733
+ args.defs.append(("ZSTD_NO_TRACE", None))
734
+ args.defs.append(("ZSTD_TRACE", "0"))
735
+
736
+ args.replaces = parse_pair(args.replaces)
737
+ for name, _ in args.replaces:
738
+ if name in args.undefs or name in args.defs:
739
+ raise RuntimeError(f"{name} is both replaced and (un)defined!")
740
+
741
+ args.rewritten_includes = parse_pair(args.rewritten_includes)
742
+
743
+ external_xxhash = False
744
+ if args.xxhash is not None:
745
+ external_xxhash = True
746
+ args.rewritten_includes.append(('"(\\.\\./common/)?xxhash.h"', args.xxhash))
747
+
748
+ if args.xxh64_prefix is not None:
749
+ if not external_xxhash:
750
+ raise RuntimeError("--xxh64-prefix may only be used with --xxhash provided")
751
+
752
+ if args.xxh64_state is not None:
753
+ if not external_xxhash:
754
+ raise RuntimeError("--xxh64-state may only be used with --xxhash provided")
755
+
756
+ Freestanding(
757
+ args.zstd_deps,
758
+ args.mem,
759
+ args.source_lib,
760
+ args.output_lib,
761
+ external_xxhash,
762
+ args.xxh64_state,
763
+ args.xxh64_prefix,
764
+ args.rewritten_includes,
765
+ args.defs,
766
+ args.replaces,
767
+ args.undefs,
768
+ args.excludes,
769
+ args.seds,
770
+ args.spdx,
771
+ ).go()
772
+
773
+ if __name__ == "__main__":
774
+ main(sys.argv[0], sys.argv[1:])