electrobun 0.0.1 → 0.0.2

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 (667) hide show
  1. package/.gitmodules +3 -0
  2. package/dist/webview +0 -0
  3. package/package.json +1 -1
  4. package/src/cli/build/electrobun +0 -0
  5. package/example/assets/electrobun-logo-32-template.png +0 -0
  6. package/example/buildScript.ts +0 -1
  7. package/example/bun.lockb +0 -0
  8. package/example/electrobun.config +0 -48
  9. package/example/icon.iconset/icon_128x128.png +0 -0
  10. package/example/icon.iconset/icon_128x128@2x.png +0 -0
  11. package/example/icon.iconset/icon_16x16.png +0 -0
  12. package/example/icon.iconset/icon_16x16@2x.png +0 -0
  13. package/example/icon.iconset/icon_256x256.png +0 -0
  14. package/example/icon.iconset/icon_256x256@2x.png +0 -0
  15. package/example/icon.iconset/icon_32x32.png +0 -0
  16. package/example/icon.iconset/icon_32x32@2x.png +0 -0
  17. package/example/icon.iconset/icon_512x512.png +0 -0
  18. package/example/icon.iconset/icon_512x512@2x.png +0 -0
  19. package/example/package-lock.json +0 -32
  20. package/example/package.json +0 -11
  21. package/example/readme.md +0 -0
  22. package/example/src/bun/index.ts +0 -403
  23. package/example/src/mainview/index.css +0 -4
  24. package/example/src/mainview/index.html +0 -13
  25. package/example/src/mainview/index.ts +0 -45
  26. package/example/src/mainview/rpc.ts +0 -36
  27. package/example/src/myextension/preload.ts +0 -15
  28. package/example/src/myextension/rpc.ts +0 -15
  29. package/example/src/webviewtag/electrobun.png +0 -0
  30. package/example/src/webviewtag/index.html +0 -94
  31. package/example/src/webviewtag/index.ts +0 -26
  32. package/src/bsdiff/bsdiff.zig +0 -842
  33. package/src/bsdiff/bspatch.zig +0 -253
  34. package/src/bsdiff/build.zig +0 -73
  35. package/src/bsdiff/zig-out/bin/bsdiff +0 -0
  36. package/src/bsdiff/zig-out/bin/bspatch +0 -0
  37. package/src/bsdiff/zig-out/lib/libzstd.a +0 -0
  38. package/src/bsdiff/zstd/.buckconfig +0 -9
  39. package/src/bsdiff/zstd/.buckversion +0 -1
  40. package/src/bsdiff/zstd/.circleci/config.yml +0 -123
  41. package/src/bsdiff/zstd/.circleci/images/primary/Dockerfile +0 -9
  42. package/src/bsdiff/zstd/.cirrus.yml +0 -10
  43. package/src/bsdiff/zstd/.gitattributes +0 -21
  44. package/src/bsdiff/zstd/.github/ISSUE_TEMPLATE/bug_report.md +0 -35
  45. package/src/bsdiff/zstd/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  46. package/src/bsdiff/zstd/.github/dependabot.yml +0 -6
  47. package/src/bsdiff/zstd/.github/workflows/commit.yml +0 -89
  48. package/src/bsdiff/zstd/.github/workflows/dev-long-tests.yml +0 -297
  49. package/src/bsdiff/zstd/.github/workflows/dev-short-tests.yml +0 -633
  50. package/src/bsdiff/zstd/.github/workflows/nightly.yml +0 -65
  51. package/src/bsdiff/zstd/.github/workflows/publish-release-artifacts.yml +0 -73
  52. package/src/bsdiff/zstd/.github/workflows/scorecards.yml +0 -64
  53. package/src/bsdiff/zstd/.github/workflows/windows-artifacts.yml +0 -58
  54. package/src/bsdiff/zstd/CHANGELOG +0 -837
  55. package/src/bsdiff/zstd/CODE_OF_CONDUCT.md +0 -5
  56. package/src/bsdiff/zstd/CONTRIBUTING.md +0 -489
  57. package/src/bsdiff/zstd/COPYING +0 -339
  58. package/src/bsdiff/zstd/LICENSE +0 -30
  59. package/src/bsdiff/zstd/Makefile +0 -457
  60. package/src/bsdiff/zstd/Package.swift +0 -36
  61. package/src/bsdiff/zstd/README.md +0 -227
  62. package/src/bsdiff/zstd/SECURITY.md +0 -15
  63. package/src/bsdiff/zstd/TESTING.md +0 -43
  64. package/src/bsdiff/zstd/build/LICENSE +0 -0
  65. package/src/bsdiff/zstd/build/README.md +0 -56
  66. package/src/bsdiff/zstd/build/VS2008/fullbench/fullbench.vcproj +0 -549
  67. package/src/bsdiff/zstd/build/VS2008/fuzzer/fuzzer.vcproj +0 -585
  68. package/src/bsdiff/zstd/build/VS2008/zstd/zstd.vcproj +0 -677
  69. package/src/bsdiff/zstd/build/VS2008/zstd.sln +0 -56
  70. package/src/bsdiff/zstd/build/VS2008/zstdlib/zstdlib.vcproj +0 -635
  71. package/src/bsdiff/zstd/build/VS2010/CompileAsCpp.props +0 -8
  72. package/src/bsdiff/zstd/build/VS2010/datagen/datagen.vcxproj +0 -170
  73. package/src/bsdiff/zstd/build/VS2010/fullbench/fullbench.vcxproj +0 -218
  74. package/src/bsdiff/zstd/build/VS2010/fullbench-dll/fullbench-dll.vcxproj +0 -189
  75. package/src/bsdiff/zstd/build/VS2010/fuzzer/fuzzer.vcxproj +0 -223
  76. package/src/bsdiff/zstd/build/VS2010/libzstd/libzstd.vcxproj +0 -242
  77. package/src/bsdiff/zstd/build/VS2010/libzstd-dll/libzstd-dll.rc +0 -51
  78. package/src/bsdiff/zstd/build/VS2010/libzstd-dll/libzstd-dll.vcxproj +0 -249
  79. package/src/bsdiff/zstd/build/VS2010/zstd/zstd.rc +0 -51
  80. package/src/bsdiff/zstd/build/VS2010/zstd/zstd.vcxproj +0 -265
  81. package/src/bsdiff/zstd/build/VS2010/zstd.sln +0 -89
  82. package/src/bsdiff/zstd/build/VS_scripts/README.md +0 -64
  83. package/src/bsdiff/zstd/build/VS_scripts/build.VS2010.cmd +0 -7
  84. package/src/bsdiff/zstd/build/VS_scripts/build.VS2012.cmd +0 -6
  85. package/src/bsdiff/zstd/build/VS_scripts/build.VS2013.cmd +0 -7
  86. package/src/bsdiff/zstd/build/VS_scripts/build.VS2015.cmd +0 -7
  87. package/src/bsdiff/zstd/build/VS_scripts/build.VS2017.cmd +0 -7
  88. package/src/bsdiff/zstd/build/VS_scripts/build.VS2017Community.cmd +0 -7
  89. package/src/bsdiff/zstd/build/VS_scripts/build.VS2017Enterprise.cmd +0 -7
  90. package/src/bsdiff/zstd/build/VS_scripts/build.VS2017Professional.cmd +0 -7
  91. package/src/bsdiff/zstd/build/VS_scripts/build.generic.cmd +0 -72
  92. package/src/bsdiff/zstd/build/cmake/CMakeLists.txt +0 -216
  93. package/src/bsdiff/zstd/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake +0 -121
  94. package/src/bsdiff/zstd/build/cmake/CMakeModules/FindLibLZ4.cmake +0 -49
  95. package/src/bsdiff/zstd/build/cmake/CMakeModules/GetZstdLibraryVersion.cmake +0 -10
  96. package/src/bsdiff/zstd/build/cmake/CMakeModules/JoinPaths.cmake +0 -23
  97. package/src/bsdiff/zstd/build/cmake/README.md +0 -136
  98. package/src/bsdiff/zstd/build/cmake/contrib/CMakeLists.txt +0 -13
  99. package/src/bsdiff/zstd/build/cmake/contrib/gen_html/CMakeLists.txt +0 -30
  100. package/src/bsdiff/zstd/build/cmake/contrib/pzstd/CMakeLists.txt +0 -39
  101. package/src/bsdiff/zstd/build/cmake/lib/CMakeLists.txt +0 -253
  102. package/src/bsdiff/zstd/build/cmake/lib/cmake_uninstall.cmake.in +0 -22
  103. package/src/bsdiff/zstd/build/cmake/programs/CMakeLists.txt +0 -144
  104. package/src/bsdiff/zstd/build/cmake/tests/CMakeLists.txt +0 -118
  105. package/src/bsdiff/zstd/build/cmake/zstdConfig.cmake.in +0 -10
  106. package/src/bsdiff/zstd/build/meson/GetZstdLibraryVersion.py +0 -39
  107. package/src/bsdiff/zstd/build/meson/InstallSymlink.py +0 -55
  108. package/src/bsdiff/zstd/build/meson/README.md +0 -38
  109. package/src/bsdiff/zstd/build/meson/contrib/gen_html/meson.build +0 -30
  110. package/src/bsdiff/zstd/build/meson/contrib/meson.build +0 -12
  111. package/src/bsdiff/zstd/build/meson/contrib/pzstd/meson.build +0 -25
  112. package/src/bsdiff/zstd/build/meson/lib/meson.build +0 -167
  113. package/src/bsdiff/zstd/build/meson/meson.build +0 -145
  114. package/src/bsdiff/zstd/build/meson/meson_options.txt +0 -36
  115. package/src/bsdiff/zstd/build/meson/programs/meson.build +0 -124
  116. package/src/bsdiff/zstd/build/meson/tests/meson.build +0 -217
  117. package/src/bsdiff/zstd/build/meson/tests/valgrindTest.py +0 -90
  118. package/src/bsdiff/zstd/build/single_file_libs/README.md +0 -33
  119. package/src/bsdiff/zstd/build/single_file_libs/build_decoder_test.sh +0 -91
  120. package/src/bsdiff/zstd/build/single_file_libs/build_library_test.sh +0 -97
  121. package/src/bsdiff/zstd/build/single_file_libs/combine.py +0 -234
  122. package/src/bsdiff/zstd/build/single_file_libs/combine.sh +0 -249
  123. package/src/bsdiff/zstd/build/single_file_libs/create_single_file_decoder.sh +0 -19
  124. package/src/bsdiff/zstd/build/single_file_libs/create_single_file_library.sh +0 -19
  125. package/src/bsdiff/zstd/build/single_file_libs/examples/README.md +0 -11
  126. package/src/bsdiff/zstd/build/single_file_libs/examples/emscripten.c +0 -340
  127. package/src/bsdiff/zstd/build/single_file_libs/examples/roundtrip.c +0 -83
  128. package/src/bsdiff/zstd/build/single_file_libs/examples/shell.html +0 -31
  129. package/src/bsdiff/zstd/build/single_file_libs/examples/simple.c +0 -75
  130. package/src/bsdiff/zstd/build/single_file_libs/examples/testcard-dxt1.inl +0 -2731
  131. package/src/bsdiff/zstd/build/single_file_libs/examples/testcard-zstd.inl +0 -261
  132. package/src/bsdiff/zstd/build/single_file_libs/examples/testcard.png +0 -0
  133. package/src/bsdiff/zstd/build/single_file_libs/zstd-in.c +0 -90
  134. package/src/bsdiff/zstd/build/single_file_libs/zstddeclib-in.c +0 -62
  135. package/src/bsdiff/zstd/contrib/VS2005/README.md +0 -3
  136. package/src/bsdiff/zstd/contrib/VS2005/fullbench/fullbench.vcproj +0 -440
  137. package/src/bsdiff/zstd/contrib/VS2005/fuzzer/fuzzer.vcproj +0 -488
  138. package/src/bsdiff/zstd/contrib/VS2005/zstd/zstd.vcproj +0 -552
  139. package/src/bsdiff/zstd/contrib/VS2005/zstd.sln +0 -55
  140. package/src/bsdiff/zstd/contrib/VS2005/zstdlib/zstdlib.vcproj +0 -546
  141. package/src/bsdiff/zstd/contrib/cleanTabs +0 -2
  142. package/src/bsdiff/zstd/contrib/diagnose_corruption/Makefile +0 -35
  143. package/src/bsdiff/zstd/contrib/diagnose_corruption/check_flipped_bits.c +0 -400
  144. package/src/bsdiff/zstd/contrib/docker/Dockerfile +0 -20
  145. package/src/bsdiff/zstd/contrib/docker/README.md +0 -20
  146. package/src/bsdiff/zstd/contrib/externalSequenceProducer/Makefile +0 -40
  147. package/src/bsdiff/zstd/contrib/externalSequenceProducer/README.md +0 -14
  148. package/src/bsdiff/zstd/contrib/externalSequenceProducer/main.c +0 -107
  149. package/src/bsdiff/zstd/contrib/externalSequenceProducer/sequence_producer.c +0 -80
  150. package/src/bsdiff/zstd/contrib/externalSequenceProducer/sequence_producer.h +0 -26
  151. package/src/bsdiff/zstd/contrib/freestanding_lib/freestanding.py +0 -774
  152. package/src/bsdiff/zstd/contrib/gen_html/Makefile +0 -51
  153. package/src/bsdiff/zstd/contrib/gen_html/README.md +0 -31
  154. package/src/bsdiff/zstd/contrib/gen_html/gen-zstd-manual.sh +0 -9
  155. package/src/bsdiff/zstd/contrib/gen_html/gen_html.cpp +0 -224
  156. package/src/bsdiff/zstd/contrib/largeNbDicts/Makefile +0 -58
  157. package/src/bsdiff/zstd/contrib/largeNbDicts/README.md +0 -33
  158. package/src/bsdiff/zstd/contrib/largeNbDicts/largeNbDicts.c +0 -1085
  159. package/src/bsdiff/zstd/contrib/linux-kernel/Makefile +0 -108
  160. package/src/bsdiff/zstd/contrib/linux-kernel/README.md +0 -14
  161. package/src/bsdiff/zstd/contrib/linux-kernel/btrfs-benchmark.sh +0 -104
  162. package/src/bsdiff/zstd/contrib/linux-kernel/btrfs-extract-benchmark.sh +0 -99
  163. package/src/bsdiff/zstd/contrib/linux-kernel/decompress_sources.h +0 -34
  164. package/src/bsdiff/zstd/contrib/linux-kernel/linux.mk +0 -43
  165. package/src/bsdiff/zstd/contrib/linux-kernel/linux_zstd.h +0 -447
  166. package/src/bsdiff/zstd/contrib/linux-kernel/mem.h +0 -262
  167. package/src/bsdiff/zstd/contrib/linux-kernel/squashfs-benchmark.sh +0 -39
  168. package/src/bsdiff/zstd/contrib/linux-kernel/test/Makefile +0 -49
  169. package/src/bsdiff/zstd/contrib/linux-kernel/test/include/asm/unaligned.h +0 -187
  170. package/src/bsdiff/zstd/contrib/linux-kernel/test/include/linux/compiler.h +0 -23
  171. package/src/bsdiff/zstd/contrib/linux-kernel/test/include/linux/errno.h +0 -15
  172. package/src/bsdiff/zstd/contrib/linux-kernel/test/include/linux/kernel.h +0 -19
  173. package/src/bsdiff/zstd/contrib/linux-kernel/test/include/linux/limits.h +0 -15
  174. package/src/bsdiff/zstd/contrib/linux-kernel/test/include/linux/math64.h +0 -15
  175. package/src/bsdiff/zstd/contrib/linux-kernel/test/include/linux/module.h +0 -20
  176. package/src/bsdiff/zstd/contrib/linux-kernel/test/include/linux/printk.h +0 -15
  177. package/src/bsdiff/zstd/contrib/linux-kernel/test/include/linux/stddef.h +0 -15
  178. package/src/bsdiff/zstd/contrib/linux-kernel/test/include/linux/swab.h +0 -16
  179. package/src/bsdiff/zstd/contrib/linux-kernel/test/include/linux/types.h +0 -16
  180. package/src/bsdiff/zstd/contrib/linux-kernel/test/include/linux/xxhash.h +0 -745
  181. package/src/bsdiff/zstd/contrib/linux-kernel/test/macro-test.sh +0 -44
  182. package/src/bsdiff/zstd/contrib/linux-kernel/test/static_test.c +0 -52
  183. package/src/bsdiff/zstd/contrib/linux-kernel/test/test.c +0 -229
  184. package/src/bsdiff/zstd/contrib/linux-kernel/zstd_common_module.c +0 -29
  185. package/src/bsdiff/zstd/contrib/linux-kernel/zstd_compress_module.c +0 -164
  186. package/src/bsdiff/zstd/contrib/linux-kernel/zstd_decompress_module.c +0 -105
  187. package/src/bsdiff/zstd/contrib/linux-kernel/zstd_deps.h +0 -121
  188. package/src/bsdiff/zstd/contrib/match_finders/README.md +0 -42
  189. package/src/bsdiff/zstd/contrib/match_finders/zstd_edist.c +0 -558
  190. package/src/bsdiff/zstd/contrib/match_finders/zstd_edist.h +0 -70
  191. package/src/bsdiff/zstd/contrib/premake/premake4.lua +0 -6
  192. package/src/bsdiff/zstd/contrib/premake/zstd.lua +0 -80
  193. package/src/bsdiff/zstd/contrib/pzstd/BUCK +0 -72
  194. package/src/bsdiff/zstd/contrib/pzstd/ErrorHolder.h +0 -54
  195. package/src/bsdiff/zstd/contrib/pzstd/Logging.h +0 -72
  196. package/src/bsdiff/zstd/contrib/pzstd/Makefile +0 -265
  197. package/src/bsdiff/zstd/contrib/pzstd/Options.cpp +0 -424
  198. package/src/bsdiff/zstd/contrib/pzstd/Options.h +0 -71
  199. package/src/bsdiff/zstd/contrib/pzstd/Pzstd.cpp +0 -618
  200. package/src/bsdiff/zstd/contrib/pzstd/Pzstd.h +0 -153
  201. package/src/bsdiff/zstd/contrib/pzstd/README.md +0 -56
  202. package/src/bsdiff/zstd/contrib/pzstd/SkippableFrame.cpp +0 -30
  203. package/src/bsdiff/zstd/contrib/pzstd/SkippableFrame.h +0 -64
  204. package/src/bsdiff/zstd/contrib/pzstd/images/Cspeed.png +0 -0
  205. package/src/bsdiff/zstd/contrib/pzstd/images/Dspeed.png +0 -0
  206. package/src/bsdiff/zstd/contrib/pzstd/main.cpp +0 -27
  207. package/src/bsdiff/zstd/contrib/pzstd/test/BUCK +0 -37
  208. package/src/bsdiff/zstd/contrib/pzstd/test/OptionsTest.cpp +0 -536
  209. package/src/bsdiff/zstd/contrib/pzstd/test/PzstdTest.cpp +0 -149
  210. package/src/bsdiff/zstd/contrib/pzstd/test/RoundTrip.h +0 -86
  211. package/src/bsdiff/zstd/contrib/pzstd/test/RoundTripTest.cpp +0 -86
  212. package/src/bsdiff/zstd/contrib/pzstd/utils/BUCK +0 -75
  213. package/src/bsdiff/zstd/contrib/pzstd/utils/Buffer.h +0 -99
  214. package/src/bsdiff/zstd/contrib/pzstd/utils/FileSystem.h +0 -96
  215. package/src/bsdiff/zstd/contrib/pzstd/utils/Likely.h +0 -28
  216. package/src/bsdiff/zstd/contrib/pzstd/utils/Portability.h +0 -16
  217. package/src/bsdiff/zstd/contrib/pzstd/utils/Range.h +0 -133
  218. package/src/bsdiff/zstd/contrib/pzstd/utils/ResourcePool.h +0 -96
  219. package/src/bsdiff/zstd/contrib/pzstd/utils/ScopeGuard.h +0 -50
  220. package/src/bsdiff/zstd/contrib/pzstd/utils/ThreadPool.h +0 -58
  221. package/src/bsdiff/zstd/contrib/pzstd/utils/WorkQueue.h +0 -181
  222. package/src/bsdiff/zstd/contrib/pzstd/utils/test/BUCK +0 -35
  223. package/src/bsdiff/zstd/contrib/pzstd/utils/test/BufferTest.cpp +0 -89
  224. package/src/bsdiff/zstd/contrib/pzstd/utils/test/RangeTest.cpp +0 -82
  225. package/src/bsdiff/zstd/contrib/pzstd/utils/test/ResourcePoolTest.cpp +0 -72
  226. package/src/bsdiff/zstd/contrib/pzstd/utils/test/ScopeGuardTest.cpp +0 -28
  227. package/src/bsdiff/zstd/contrib/pzstd/utils/test/ThreadPoolTest.cpp +0 -71
  228. package/src/bsdiff/zstd/contrib/pzstd/utils/test/WorkQueueTest.cpp +0 -282
  229. package/src/bsdiff/zstd/contrib/recovery/Makefile +0 -35
  230. package/src/bsdiff/zstd/contrib/recovery/recover_directory.c +0 -152
  231. package/src/bsdiff/zstd/contrib/seekable_format/README.md +0 -42
  232. package/src/bsdiff/zstd/contrib/seekable_format/examples/Makefile +0 -53
  233. package/src/bsdiff/zstd/contrib/seekable_format/examples/parallel_compression.c +0 -214
  234. package/src/bsdiff/zstd/contrib/seekable_format/examples/parallel_processing.c +0 -194
  235. package/src/bsdiff/zstd/contrib/seekable_format/examples/seekable_compression.c +0 -136
  236. package/src/bsdiff/zstd/contrib/seekable_format/examples/seekable_decompression.c +0 -141
  237. package/src/bsdiff/zstd/contrib/seekable_format/examples/seekable_decompression_mem.c +0 -147
  238. package/src/bsdiff/zstd/contrib/seekable_format/tests/Makefile +0 -38
  239. package/src/bsdiff/zstd/contrib/seekable_format/tests/seekable_tests.c +0 -363
  240. package/src/bsdiff/zstd/contrib/seekable_format/zstd_seekable.h +0 -226
  241. package/src/bsdiff/zstd/contrib/seekable_format/zstd_seekable_compression_format.md +0 -116
  242. package/src/bsdiff/zstd/contrib/seekable_format/zstdseek_compress.c +0 -365
  243. package/src/bsdiff/zstd/contrib/seekable_format/zstdseek_decompress.c +0 -595
  244. package/src/bsdiff/zstd/contrib/seqBench/Makefile +0 -58
  245. package/src/bsdiff/zstd/contrib/seqBench/seqBench.c +0 -53
  246. package/src/bsdiff/zstd/contrib/snap/snapcraft.yaml +0 -28
  247. package/src/bsdiff/zstd/doc/README.md +0 -26
  248. package/src/bsdiff/zstd/doc/decompressor_errata.md +0 -148
  249. package/src/bsdiff/zstd/doc/decompressor_permissive.md +0 -60
  250. package/src/bsdiff/zstd/doc/educational_decoder/Makefile +0 -62
  251. package/src/bsdiff/zstd/doc/educational_decoder/README.md +0 -36
  252. package/src/bsdiff/zstd/doc/educational_decoder/harness.c +0 -119
  253. package/src/bsdiff/zstd/doc/educational_decoder/zstd_decompress.c +0 -2323
  254. package/src/bsdiff/zstd/doc/educational_decoder/zstd_decompress.h +0 -61
  255. package/src/bsdiff/zstd/doc/images/CSpeed2.png +0 -0
  256. package/src/bsdiff/zstd/doc/images/DCspeed5.png +0 -0
  257. package/src/bsdiff/zstd/doc/images/DSpeed3.png +0 -0
  258. package/src/bsdiff/zstd/doc/images/cdict_v136.png +0 -0
  259. package/src/bsdiff/zstd/doc/images/dict-cr.png +0 -0
  260. package/src/bsdiff/zstd/doc/images/dict-cs.png +0 -0
  261. package/src/bsdiff/zstd/doc/images/dict-ds.png +0 -0
  262. package/src/bsdiff/zstd/doc/images/zstd_cdict_v1_3_5.png +0 -0
  263. package/src/bsdiff/zstd/doc/images/zstd_logo86.png +0 -0
  264. package/src/bsdiff/zstd/doc/zstd_compression_format.md +0 -1737
  265. package/src/bsdiff/zstd/doc/zstd_manual.html +0 -2170
  266. package/src/bsdiff/zstd/examples/Makefile +0 -93
  267. package/src/bsdiff/zstd/examples/README.md +0 -46
  268. package/src/bsdiff/zstd/examples/common.h +0 -246
  269. package/src/bsdiff/zstd/examples/dictionary_compression.c +0 -107
  270. package/src/bsdiff/zstd/examples/dictionary_decompression.c +0 -99
  271. package/src/bsdiff/zstd/examples/multiple_simple_compression.c +0 -116
  272. package/src/bsdiff/zstd/examples/multiple_streaming_compression.c +0 -133
  273. package/src/bsdiff/zstd/examples/simple_compression.c +0 -68
  274. package/src/bsdiff/zstd/examples/simple_decompression.c +0 -65
  275. package/src/bsdiff/zstd/examples/streaming_compression.c +0 -146
  276. package/src/bsdiff/zstd/examples/streaming_compression_thread_pool.c +0 -180
  277. package/src/bsdiff/zstd/examples/streaming_decompression.c +0 -100
  278. package/src/bsdiff/zstd/examples/streaming_memory_usage.c +0 -137
  279. package/src/bsdiff/zstd/lib/BUCK +0 -232
  280. package/src/bsdiff/zstd/lib/Makefile +0 -369
  281. package/src/bsdiff/zstd/lib/README.md +0 -237
  282. package/src/bsdiff/zstd/lib/common/allocations.h +0 -55
  283. package/src/bsdiff/zstd/lib/common/bits.h +0 -200
  284. package/src/bsdiff/zstd/lib/common/bitstream.h +0 -457
  285. package/src/bsdiff/zstd/lib/common/compiler.h +0 -450
  286. package/src/bsdiff/zstd/lib/common/cpu.h +0 -249
  287. package/src/bsdiff/zstd/lib/common/debug.c +0 -30
  288. package/src/bsdiff/zstd/lib/common/debug.h +0 -116
  289. package/src/bsdiff/zstd/lib/common/entropy_common.c +0 -340
  290. package/src/bsdiff/zstd/lib/common/error_private.c +0 -63
  291. package/src/bsdiff/zstd/lib/common/error_private.h +0 -168
  292. package/src/bsdiff/zstd/lib/common/fse.h +0 -640
  293. package/src/bsdiff/zstd/lib/common/fse_decompress.c +0 -313
  294. package/src/bsdiff/zstd/lib/common/huf.h +0 -286
  295. package/src/bsdiff/zstd/lib/common/mem.h +0 -426
  296. package/src/bsdiff/zstd/lib/common/pool.c +0 -371
  297. package/src/bsdiff/zstd/lib/common/pool.h +0 -90
  298. package/src/bsdiff/zstd/lib/common/portability_macros.h +0 -158
  299. package/src/bsdiff/zstd/lib/common/threading.c +0 -182
  300. package/src/bsdiff/zstd/lib/common/threading.h +0 -150
  301. package/src/bsdiff/zstd/lib/common/xxhash.c +0 -18
  302. package/src/bsdiff/zstd/lib/common/xxhash.h +0 -7020
  303. package/src/bsdiff/zstd/lib/common/zstd_common.c +0 -48
  304. package/src/bsdiff/zstd/lib/common/zstd_deps.h +0 -111
  305. package/src/bsdiff/zstd/lib/common/zstd_internal.h +0 -392
  306. package/src/bsdiff/zstd/lib/common/zstd_trace.h +0 -163
  307. package/src/bsdiff/zstd/lib/compress/clevels.h +0 -134
  308. package/src/bsdiff/zstd/lib/compress/fse_compress.c +0 -625
  309. package/src/bsdiff/zstd/lib/compress/hist.c +0 -181
  310. package/src/bsdiff/zstd/lib/compress/hist.h +0 -75
  311. package/src/bsdiff/zstd/lib/compress/huf_compress.c +0 -1464
  312. package/src/bsdiff/zstd/lib/compress/zstd_compress.c +0 -7153
  313. package/src/bsdiff/zstd/lib/compress/zstd_compress_internal.h +0 -1534
  314. package/src/bsdiff/zstd/lib/compress/zstd_compress_literals.c +0 -235
  315. package/src/bsdiff/zstd/lib/compress/zstd_compress_literals.h +0 -39
  316. package/src/bsdiff/zstd/lib/compress/zstd_compress_sequences.c +0 -442
  317. package/src/bsdiff/zstd/lib/compress/zstd_compress_sequences.h +0 -54
  318. package/src/bsdiff/zstd/lib/compress/zstd_compress_superblock.c +0 -688
  319. package/src/bsdiff/zstd/lib/compress/zstd_compress_superblock.h +0 -32
  320. package/src/bsdiff/zstd/lib/compress/zstd_cwksp.h +0 -748
  321. package/src/bsdiff/zstd/lib/compress/zstd_double_fast.c +0 -770
  322. package/src/bsdiff/zstd/lib/compress/zstd_double_fast.h +0 -50
  323. package/src/bsdiff/zstd/lib/compress/zstd_fast.c +0 -968
  324. package/src/bsdiff/zstd/lib/compress/zstd_fast.h +0 -38
  325. package/src/bsdiff/zstd/lib/compress/zstd_lazy.c +0 -2199
  326. package/src/bsdiff/zstd/lib/compress/zstd_lazy.h +0 -202
  327. package/src/bsdiff/zstd/lib/compress/zstd_ldm.c +0 -730
  328. package/src/bsdiff/zstd/lib/compress/zstd_ldm.h +0 -117
  329. package/src/bsdiff/zstd/lib/compress/zstd_ldm_geartab.h +0 -106
  330. package/src/bsdiff/zstd/lib/compress/zstd_opt.c +0 -1576
  331. package/src/bsdiff/zstd/lib/compress/zstd_opt.h +0 -80
  332. package/src/bsdiff/zstd/lib/compress/zstdmt_compress.c +0 -1882
  333. package/src/bsdiff/zstd/lib/compress/zstdmt_compress.h +0 -113
  334. package/src/bsdiff/zstd/lib/decompress/huf_decompress.c +0 -1944
  335. package/src/bsdiff/zstd/lib/decompress/huf_decompress_amd64.S +0 -595
  336. package/src/bsdiff/zstd/lib/decompress/zstd_ddict.c +0 -244
  337. package/src/bsdiff/zstd/lib/decompress/zstd_ddict.h +0 -44
  338. package/src/bsdiff/zstd/lib/decompress/zstd_decompress.c +0 -2407
  339. package/src/bsdiff/zstd/lib/decompress/zstd_decompress_block.c +0 -2215
  340. package/src/bsdiff/zstd/lib/decompress/zstd_decompress_block.h +0 -73
  341. package/src/bsdiff/zstd/lib/decompress/zstd_decompress_internal.h +0 -240
  342. package/src/bsdiff/zstd/lib/deprecated/zbuff.h +0 -214
  343. package/src/bsdiff/zstd/lib/deprecated/zbuff_common.c +0 -26
  344. package/src/bsdiff/zstd/lib/deprecated/zbuff_compress.c +0 -167
  345. package/src/bsdiff/zstd/lib/deprecated/zbuff_decompress.c +0 -77
  346. package/src/bsdiff/zstd/lib/dictBuilder/cover.c +0 -1261
  347. package/src/bsdiff/zstd/lib/dictBuilder/cover.h +0 -152
  348. package/src/bsdiff/zstd/lib/dictBuilder/divsufsort.c +0 -1913
  349. package/src/bsdiff/zstd/lib/dictBuilder/divsufsort.h +0 -67
  350. package/src/bsdiff/zstd/lib/dictBuilder/fastcover.c +0 -766
  351. package/src/bsdiff/zstd/lib/dictBuilder/zdict.c +0 -1133
  352. package/src/bsdiff/zstd/lib/dll/example/Makefile +0 -48
  353. package/src/bsdiff/zstd/lib/dll/example/README.md +0 -63
  354. package/src/bsdiff/zstd/lib/dll/example/build_package.bat +0 -20
  355. package/src/bsdiff/zstd/lib/dll/example/fullbench-dll.sln +0 -25
  356. package/src/bsdiff/zstd/lib/dll/example/fullbench-dll.vcxproj +0 -181
  357. package/src/bsdiff/zstd/lib/legacy/zstd_legacy.h +0 -452
  358. package/src/bsdiff/zstd/lib/legacy/zstd_v01.c +0 -2127
  359. package/src/bsdiff/zstd/lib/legacy/zstd_v01.h +0 -94
  360. package/src/bsdiff/zstd/lib/legacy/zstd_v02.c +0 -3465
  361. package/src/bsdiff/zstd/lib/legacy/zstd_v02.h +0 -93
  362. package/src/bsdiff/zstd/lib/legacy/zstd_v03.c +0 -3105
  363. package/src/bsdiff/zstd/lib/legacy/zstd_v03.h +0 -93
  364. package/src/bsdiff/zstd/lib/legacy/zstd_v04.c +0 -3598
  365. package/src/bsdiff/zstd/lib/legacy/zstd_v04.h +0 -142
  366. package/src/bsdiff/zstd/lib/legacy/zstd_v05.c +0 -4005
  367. package/src/bsdiff/zstd/lib/legacy/zstd_v05.h +0 -162
  368. package/src/bsdiff/zstd/lib/legacy/zstd_v06.c +0 -4106
  369. package/src/bsdiff/zstd/lib/legacy/zstd_v06.h +0 -172
  370. package/src/bsdiff/zstd/lib/legacy/zstd_v07.c +0 -4490
  371. package/src/bsdiff/zstd/lib/legacy/zstd_v07.h +0 -187
  372. package/src/bsdiff/zstd/lib/libzstd.mk +0 -237
  373. package/src/bsdiff/zstd/lib/libzstd.pc.in +0 -16
  374. package/src/bsdiff/zstd/lib/module.modulemap +0 -35
  375. package/src/bsdiff/zstd/lib/zdict.h +0 -474
  376. package/src/bsdiff/zstd/lib/zstd.h +0 -3089
  377. package/src/bsdiff/zstd/lib/zstd_errors.h +0 -114
  378. package/src/bsdiff/zstd/programs/BUCK +0 -44
  379. package/src/bsdiff/zstd/programs/Makefile +0 -445
  380. package/src/bsdiff/zstd/programs/README.md +0 -302
  381. package/src/bsdiff/zstd/programs/benchfn.c +0 -256
  382. package/src/bsdiff/zstd/programs/benchfn.h +0 -183
  383. package/src/bsdiff/zstd/programs/benchzstd.c +0 -1264
  384. package/src/bsdiff/zstd/programs/benchzstd.h +0 -198
  385. package/src/bsdiff/zstd/programs/datagen.c +0 -186
  386. package/src/bsdiff/zstd/programs/datagen.h +0 -30
  387. package/src/bsdiff/zstd/programs/dibio.c +0 -440
  388. package/src/bsdiff/zstd/programs/dibio.h +0 -39
  389. package/src/bsdiff/zstd/programs/fileio.c +0 -3470
  390. package/src/bsdiff/zstd/programs/fileio.h +0 -181
  391. package/src/bsdiff/zstd/programs/fileio_asyncio.c +0 -663
  392. package/src/bsdiff/zstd/programs/fileio_asyncio.h +0 -203
  393. package/src/bsdiff/zstd/programs/fileio_common.h +0 -125
  394. package/src/bsdiff/zstd/programs/fileio_types.h +0 -86
  395. package/src/bsdiff/zstd/programs/lorem.c +0 -285
  396. package/src/bsdiff/zstd/programs/lorem.h +0 -32
  397. package/src/bsdiff/zstd/programs/platform.h +0 -218
  398. package/src/bsdiff/zstd/programs/timefn.c +0 -168
  399. package/src/bsdiff/zstd/programs/timefn.h +0 -70
  400. package/src/bsdiff/zstd/programs/util.c +0 -1652
  401. package/src/bsdiff/zstd/programs/util.h +0 -359
  402. package/src/bsdiff/zstd/programs/windres/verrsrc.h +0 -17
  403. package/src/bsdiff/zstd/programs/windres/zstd.rc +0 -51
  404. package/src/bsdiff/zstd/programs/windres/zstd32.res +0 -0
  405. package/src/bsdiff/zstd/programs/windres/zstd64.res +0 -0
  406. package/src/bsdiff/zstd/programs/zstd.1 +0 -566
  407. package/src/bsdiff/zstd/programs/zstd.1.md +0 -695
  408. package/src/bsdiff/zstd/programs/zstdcli.c +0 -1625
  409. package/src/bsdiff/zstd/programs/zstdcli_trace.c +0 -172
  410. package/src/bsdiff/zstd/programs/zstdcli_trace.h +0 -24
  411. package/src/bsdiff/zstd/programs/zstdgrep +0 -134
  412. package/src/bsdiff/zstd/programs/zstdgrep.1 +0 -26
  413. package/src/bsdiff/zstd/programs/zstdgrep.1.md +0 -30
  414. package/src/bsdiff/zstd/programs/zstdless +0 -8
  415. package/src/bsdiff/zstd/programs/zstdless.1 +0 -14
  416. package/src/bsdiff/zstd/programs/zstdless.1.md +0 -16
  417. package/src/bsdiff/zstd/tests/DEPRECATED-test-zstd-speed.py +0 -378
  418. package/src/bsdiff/zstd/tests/Makefile +0 -477
  419. package/src/bsdiff/zstd/tests/README.md +0 -184
  420. package/src/bsdiff/zstd/tests/automated_benchmarking.py +0 -326
  421. package/src/bsdiff/zstd/tests/bigdict.c +0 -128
  422. package/src/bsdiff/zstd/tests/checkTag.c +0 -65
  423. package/src/bsdiff/zstd/tests/check_size.py +0 -31
  424. package/src/bsdiff/zstd/tests/cli-tests/README.md +0 -258
  425. package/src/bsdiff/zstd/tests/cli-tests/basic/args.sh +0 -10
  426. package/src/bsdiff/zstd/tests/cli-tests/basic/args.sh.exit +0 -1
  427. package/src/bsdiff/zstd/tests/cli-tests/basic/args.sh.stderr.glob +0 -28
  428. package/src/bsdiff/zstd/tests/cli-tests/basic/help.sh +0 -10
  429. package/src/bsdiff/zstd/tests/cli-tests/basic/help.sh.stdout.glob +0 -34
  430. package/src/bsdiff/zstd/tests/cli-tests/basic/memlimit.sh +0 -40
  431. package/src/bsdiff/zstd/tests/cli-tests/basic/memlimit.sh.stderr.exact +0 -13
  432. package/src/bsdiff/zstd/tests/cli-tests/basic/memlimit.sh.stdout.exact +0 -13
  433. package/src/bsdiff/zstd/tests/cli-tests/basic/output_dir.sh +0 -7
  434. package/src/bsdiff/zstd/tests/cli-tests/basic/output_dir.sh.stderr.exact +0 -2
  435. package/src/bsdiff/zstd/tests/cli-tests/basic/output_dir.sh.stdout.exact +0 -2
  436. package/src/bsdiff/zstd/tests/cli-tests/basic/version.sh +0 -6
  437. package/src/bsdiff/zstd/tests/cli-tests/basic/version.sh.stdout.glob +0 -2
  438. package/src/bsdiff/zstd/tests/cli-tests/bin/cmp_size +0 -44
  439. package/src/bsdiff/zstd/tests/cli-tests/bin/datagen +0 -3
  440. package/src/bsdiff/zstd/tests/cli-tests/bin/die +0 -4
  441. package/src/bsdiff/zstd/tests/cli-tests/bin/println +0 -2
  442. package/src/bsdiff/zstd/tests/cli-tests/bin/zstd +0 -9
  443. package/src/bsdiff/zstd/tests/cli-tests/bin/zstdgrep +0 -2
  444. package/src/bsdiff/zstd/tests/cli-tests/bin/zstdless +0 -2
  445. package/src/bsdiff/zstd/tests/cli-tests/cltools/setup +0 -6
  446. package/src/bsdiff/zstd/tests/cli-tests/cltools/zstdgrep.sh +0 -8
  447. package/src/bsdiff/zstd/tests/cli-tests/cltools/zstdgrep.sh.exit +0 -1
  448. package/src/bsdiff/zstd/tests/cli-tests/cltools/zstdgrep.sh.stderr.exact +0 -1
  449. package/src/bsdiff/zstd/tests/cli-tests/cltools/zstdgrep.sh.stdout.glob +0 -4
  450. package/src/bsdiff/zstd/tests/cli-tests/cltools/zstdless.sh +0 -10
  451. package/src/bsdiff/zstd/tests/cli-tests/cltools/zstdless.sh.stderr.exact +0 -2
  452. package/src/bsdiff/zstd/tests/cli-tests/cltools/zstdless.sh.stdout.glob +0 -5
  453. package/src/bsdiff/zstd/tests/cli-tests/common/format.sh +0 -19
  454. package/src/bsdiff/zstd/tests/cli-tests/common/mtime.sh +0 -13
  455. package/src/bsdiff/zstd/tests/cli-tests/common/permissions.sh +0 -18
  456. package/src/bsdiff/zstd/tests/cli-tests/common/platform.sh +0 -37
  457. package/src/bsdiff/zstd/tests/cli-tests/compression/adapt.sh +0 -14
  458. package/src/bsdiff/zstd/tests/cli-tests/compression/basic.sh +0 -36
  459. package/src/bsdiff/zstd/tests/cli-tests/compression/compress-literals.sh +0 -10
  460. package/src/bsdiff/zstd/tests/cli-tests/compression/format.sh +0 -16
  461. package/src/bsdiff/zstd/tests/cli-tests/compression/golden.sh +0 -16
  462. package/src/bsdiff/zstd/tests/cli-tests/compression/gzip-compat.sh +0 -17
  463. package/src/bsdiff/zstd/tests/cli-tests/compression/levels.sh +0 -62
  464. package/src/bsdiff/zstd/tests/cli-tests/compression/levels.sh.stderr.exact +0 -69
  465. package/src/bsdiff/zstd/tests/cli-tests/compression/long-distance-matcher.sh +0 -7
  466. package/src/bsdiff/zstd/tests/cli-tests/compression/multi-threaded.sh +0 -15
  467. package/src/bsdiff/zstd/tests/cli-tests/compression/multi-threaded.sh.stderr.exact +0 -11
  468. package/src/bsdiff/zstd/tests/cli-tests/compression/multiple-files.sh +0 -21
  469. package/src/bsdiff/zstd/tests/cli-tests/compression/multiple-files.sh.stdout.exact +0 -12
  470. package/src/bsdiff/zstd/tests/cli-tests/compression/row-match-finder.sh +0 -7
  471. package/src/bsdiff/zstd/tests/cli-tests/compression/setup +0 -7
  472. package/src/bsdiff/zstd/tests/cli-tests/compression/stream-size.sh +0 -7
  473. package/src/bsdiff/zstd/tests/cli-tests/compression/verbose-wlog.sh +0 -11
  474. package/src/bsdiff/zstd/tests/cli-tests/compression/verbose-wlog.sh.stderr.glob +0 -5
  475. package/src/bsdiff/zstd/tests/cli-tests/compression/verbose-wlog.sh.stdout.glob +0 -5
  476. package/src/bsdiff/zstd/tests/cli-tests/compression/window-resize.sh +0 -9
  477. package/src/bsdiff/zstd/tests/cli-tests/compression/window-resize.sh.stderr.ignore +0 -0
  478. package/src/bsdiff/zstd/tests/cli-tests/compression/window-resize.sh.stdout.glob +0 -3
  479. package/src/bsdiff/zstd/tests/cli-tests/decompression/detectErrors.sh +0 -11
  480. package/src/bsdiff/zstd/tests/cli-tests/decompression/golden.sh +0 -7
  481. package/src/bsdiff/zstd/tests/cli-tests/decompression/pass-through.sh +0 -57
  482. package/src/bsdiff/zstd/tests/cli-tests/decompression/pass-through.sh.stderr.exact +0 -11
  483. package/src/bsdiff/zstd/tests/cli-tests/decompression/pass-through.sh.stdout.exact +0 -25
  484. package/src/bsdiff/zstd/tests/cli-tests/dict-builder/empty-input.sh +0 -9
  485. package/src/bsdiff/zstd/tests/cli-tests/dict-builder/empty-input.sh.stderr.exact +0 -1
  486. package/src/bsdiff/zstd/tests/cli-tests/dict-builder/no-inputs.sh +0 -3
  487. package/src/bsdiff/zstd/tests/cli-tests/dict-builder/no-inputs.sh.exit +0 -1
  488. package/src/bsdiff/zstd/tests/cli-tests/dict-builder/no-inputs.sh.stderr.exact +0 -5
  489. package/src/bsdiff/zstd/tests/cli-tests/dictionaries/dictionary-mismatch.sh +0 -29
  490. package/src/bsdiff/zstd/tests/cli-tests/dictionaries/dictionary-mismatch.sh.stderr.exact +0 -7
  491. package/src/bsdiff/zstd/tests/cli-tests/dictionaries/golden.sh +0 -9
  492. package/src/bsdiff/zstd/tests/cli-tests/dictionaries/setup +0 -6
  493. package/src/bsdiff/zstd/tests/cli-tests/dictionaries/setup_once +0 -24
  494. package/src/bsdiff/zstd/tests/cli-tests/file-handling/directory-mirror.sh +0 -49
  495. package/src/bsdiff/zstd/tests/cli-tests/file-handling/directory-mirror.sh.stderr.exact +0 -0
  496. package/src/bsdiff/zstd/tests/cli-tests/file-handling/directory-mirror.sh.stdout.exact +0 -0
  497. package/src/bsdiff/zstd/tests/cli-tests/file-stat/compress-file-to-dir-without-write-perm.sh +0 -12
  498. package/src/bsdiff/zstd/tests/cli-tests/file-stat/compress-file-to-dir-without-write-perm.sh.stderr.exact +0 -26
  499. package/src/bsdiff/zstd/tests/cli-tests/file-stat/compress-file-to-file.sh +0 -9
  500. package/src/bsdiff/zstd/tests/cli-tests/file-stat/compress-file-to-file.sh.stderr.exact +0 -42
  501. package/src/bsdiff/zstd/tests/cli-tests/file-stat/compress-file-to-stdout.sh +0 -8
  502. package/src/bsdiff/zstd/tests/cli-tests/file-stat/compress-file-to-stdout.sh.stderr.exact +0 -24
  503. package/src/bsdiff/zstd/tests/cli-tests/file-stat/compress-stdin-to-file.sh +0 -8
  504. package/src/bsdiff/zstd/tests/cli-tests/file-stat/compress-stdin-to-file.sh.stderr.exact +0 -24
  505. package/src/bsdiff/zstd/tests/cli-tests/file-stat/compress-stdin-to-stdout.sh +0 -8
  506. package/src/bsdiff/zstd/tests/cli-tests/file-stat/compress-stdin-to-stdout.sh.stderr.exact +0 -18
  507. package/src/bsdiff/zstd/tests/cli-tests/file-stat/decompress-file-to-file.sh +0 -8
  508. package/src/bsdiff/zstd/tests/cli-tests/file-stat/decompress-file-to-file.sh.stderr.exact +0 -38
  509. package/src/bsdiff/zstd/tests/cli-tests/file-stat/decompress-file-to-stdout.sh +0 -7
  510. package/src/bsdiff/zstd/tests/cli-tests/file-stat/decompress-file-to-stdout.sh.stderr.exact +0 -18
  511. package/src/bsdiff/zstd/tests/cli-tests/file-stat/decompress-stdin-to-file.sh +0 -7
  512. package/src/bsdiff/zstd/tests/cli-tests/file-stat/decompress-stdin-to-file.sh.stderr.exact +0 -20
  513. package/src/bsdiff/zstd/tests/cli-tests/file-stat/decompress-stdin-to-stdout.sh +0 -7
  514. package/src/bsdiff/zstd/tests/cli-tests/file-stat/decompress-stdin-to-stdout.sh.stderr.exact +0 -14
  515. package/src/bsdiff/zstd/tests/cli-tests/progress/no-progress.sh +0 -46
  516. package/src/bsdiff/zstd/tests/cli-tests/progress/no-progress.sh.stderr.glob +0 -96
  517. package/src/bsdiff/zstd/tests/cli-tests/progress/progress.sh +0 -41
  518. package/src/bsdiff/zstd/tests/cli-tests/progress/progress.sh.stderr.glob +0 -62
  519. package/src/bsdiff/zstd/tests/cli-tests/run.py +0 -731
  520. package/src/bsdiff/zstd/tests/cli-tests/zstd-symlinks/setup +0 -6
  521. package/src/bsdiff/zstd/tests/cli-tests/zstd-symlinks/zstdcat.sh +0 -12
  522. package/src/bsdiff/zstd/tests/cli-tests/zstd-symlinks/zstdcat.sh.stdout.exact +0 -8
  523. package/src/bsdiff/zstd/tests/datagencli.c +0 -149
  524. package/src/bsdiff/zstd/tests/decodecorpus.c +0 -1936
  525. package/src/bsdiff/zstd/tests/dict-files/zero-weight-dict +0 -0
  526. package/src/bsdiff/zstd/tests/external_matchfinder.c +0 -140
  527. package/src/bsdiff/zstd/tests/external_matchfinder.h +0 -39
  528. package/src/bsdiff/zstd/tests/fullbench.c +0 -980
  529. package/src/bsdiff/zstd/tests/fuzz/Makefile +0 -277
  530. package/src/bsdiff/zstd/tests/fuzz/README.md +0 -161
  531. package/src/bsdiff/zstd/tests/fuzz/block_decompress.c +0 -53
  532. package/src/bsdiff/zstd/tests/fuzz/block_round_trip.c +0 -103
  533. package/src/bsdiff/zstd/tests/fuzz/decompress_cross_format.c +0 -130
  534. package/src/bsdiff/zstd/tests/fuzz/decompress_dstSize_tooSmall.c +0 -74
  535. package/src/bsdiff/zstd/tests/fuzz/dictionary_decompress.c +0 -77
  536. package/src/bsdiff/zstd/tests/fuzz/dictionary_loader.c +0 -106
  537. package/src/bsdiff/zstd/tests/fuzz/dictionary_round_trip.c +0 -155
  538. package/src/bsdiff/zstd/tests/fuzz/dictionary_stream_round_trip.c +0 -209
  539. package/src/bsdiff/zstd/tests/fuzz/fse_read_ncount.c +0 -100
  540. package/src/bsdiff/zstd/tests/fuzz/fuzz.h +0 -57
  541. package/src/bsdiff/zstd/tests/fuzz/fuzz.py +0 -911
  542. package/src/bsdiff/zstd/tests/fuzz/fuzz_data_producer.c +0 -95
  543. package/src/bsdiff/zstd/tests/fuzz/fuzz_data_producer.h +0 -66
  544. package/src/bsdiff/zstd/tests/fuzz/fuzz_helpers.c +0 -48
  545. package/src/bsdiff/zstd/tests/fuzz/fuzz_helpers.h +0 -81
  546. package/src/bsdiff/zstd/tests/fuzz/fuzz_third_party_seq_prod.h +0 -116
  547. package/src/bsdiff/zstd/tests/fuzz/generate_sequences.c +0 -88
  548. package/src/bsdiff/zstd/tests/fuzz/huf_decompress.c +0 -68
  549. package/src/bsdiff/zstd/tests/fuzz/huf_round_trip.c +0 -137
  550. package/src/bsdiff/zstd/tests/fuzz/raw_dictionary_round_trip.c +0 -119
  551. package/src/bsdiff/zstd/tests/fuzz/regression_driver.c +0 -90
  552. package/src/bsdiff/zstd/tests/fuzz/seekable_roundtrip.c +0 -88
  553. package/src/bsdiff/zstd/tests/fuzz/seq_prod_fuzz_example/Makefile +0 -16
  554. package/src/bsdiff/zstd/tests/fuzz/seq_prod_fuzz_example/README.md +0 -12
  555. package/src/bsdiff/zstd/tests/fuzz/seq_prod_fuzz_example/example_seq_prod.c +0 -52
  556. package/src/bsdiff/zstd/tests/fuzz/sequence_compression_api.c +0 -381
  557. package/src/bsdiff/zstd/tests/fuzz/simple_compress.c +0 -60
  558. package/src/bsdiff/zstd/tests/fuzz/simple_decompress.c +0 -59
  559. package/src/bsdiff/zstd/tests/fuzz/simple_round_trip.c +0 -182
  560. package/src/bsdiff/zstd/tests/fuzz/stream_decompress.c +0 -119
  561. package/src/bsdiff/zstd/tests/fuzz/stream_round_trip.c +0 -218
  562. package/src/bsdiff/zstd/tests/fuzz/zstd_frame_info.c +0 -43
  563. package/src/bsdiff/zstd/tests/fuzz/zstd_helpers.c +0 -207
  564. package/src/bsdiff/zstd/tests/fuzz/zstd_helpers.h +0 -56
  565. package/src/bsdiff/zstd/tests/fuzzer.c +0 -4933
  566. package/src/bsdiff/zstd/tests/golden-compression/PR-3517-block-splitter-corruption-test +0 -1
  567. package/src/bsdiff/zstd/tests/golden-compression/http +0 -1
  568. package/src/bsdiff/zstd/tests/golden-compression/huffman-compressed-larger +0 -0
  569. package/src/bsdiff/zstd/tests/golden-compression/large-literal-and-match-lengths +0 -0
  570. package/src/bsdiff/zstd/tests/golden-decompression/block-128k.zst +0 -0
  571. package/src/bsdiff/zstd/tests/golden-decompression/empty-block.zst +0 -0
  572. package/src/bsdiff/zstd/tests/golden-decompression/rle-first-block.zst +0 -0
  573. package/src/bsdiff/zstd/tests/golden-decompression/zeroSeq_2B.zst +0 -0
  574. package/src/bsdiff/zstd/tests/golden-decompression-errors/off0.bin.zst +0 -0
  575. package/src/bsdiff/zstd/tests/golden-decompression-errors/zeroSeq_extraneous.zst +0 -0
  576. package/src/bsdiff/zstd/tests/golden-dictionaries/http-dict-missing-symbols +0 -0
  577. package/src/bsdiff/zstd/tests/gzip/Makefile +0 -45
  578. package/src/bsdiff/zstd/tests/gzip/gzip-env.sh +0 -46
  579. package/src/bsdiff/zstd/tests/gzip/helin-segv.sh +0 -31
  580. package/src/bsdiff/zstd/tests/gzip/help-version.sh +0 -270
  581. package/src/bsdiff/zstd/tests/gzip/hufts-segv.gz +0 -0
  582. package/src/bsdiff/zstd/tests/gzip/hufts.sh +0 -34
  583. package/src/bsdiff/zstd/tests/gzip/init.cfg +0 -5
  584. package/src/bsdiff/zstd/tests/gzip/init.sh +0 -616
  585. package/src/bsdiff/zstd/tests/gzip/keep.sh +0 -51
  586. package/src/bsdiff/zstd/tests/gzip/list.sh +0 -31
  587. package/src/bsdiff/zstd/tests/gzip/memcpy-abuse.sh +0 -34
  588. package/src/bsdiff/zstd/tests/gzip/mixed.sh +0 -68
  589. package/src/bsdiff/zstd/tests/gzip/null-suffix-clobber.sh +0 -35
  590. package/src/bsdiff/zstd/tests/gzip/stdin.sh +0 -31
  591. package/src/bsdiff/zstd/tests/gzip/test-driver.sh +0 -150
  592. package/src/bsdiff/zstd/tests/gzip/trailing-nul.sh +0 -37
  593. package/src/bsdiff/zstd/tests/gzip/unpack-invalid.sh +0 -36
  594. package/src/bsdiff/zstd/tests/gzip/z-suffix.sh +0 -30
  595. package/src/bsdiff/zstd/tests/gzip/zdiff.sh +0 -48
  596. package/src/bsdiff/zstd/tests/gzip/zgrep-context.sh +0 -47
  597. package/src/bsdiff/zstd/tests/gzip/zgrep-f.sh +0 -43
  598. package/src/bsdiff/zstd/tests/gzip/zgrep-signal.sh +0 -64
  599. package/src/bsdiff/zstd/tests/gzip/znew-k.sh +0 -40
  600. package/src/bsdiff/zstd/tests/invalidDictionaries.c +0 -61
  601. package/src/bsdiff/zstd/tests/legacy.c +0 -260
  602. package/src/bsdiff/zstd/tests/libzstd_builds.sh +0 -104
  603. package/src/bsdiff/zstd/tests/longmatch.c +0 -102
  604. package/src/bsdiff/zstd/tests/loremOut.c +0 -50
  605. package/src/bsdiff/zstd/tests/loremOut.h +0 -15
  606. package/src/bsdiff/zstd/tests/paramgrill.c +0 -2966
  607. package/src/bsdiff/zstd/tests/playTests.sh +0 -1928
  608. package/src/bsdiff/zstd/tests/poolTests.c +0 -271
  609. package/src/bsdiff/zstd/tests/rateLimiter.py +0 -41
  610. package/src/bsdiff/zstd/tests/regression/Makefile +0 -60
  611. package/src/bsdiff/zstd/tests/regression/README.md +0 -28
  612. package/src/bsdiff/zstd/tests/regression/config.c +0 -404
  613. package/src/bsdiff/zstd/tests/regression/config.h +0 -91
  614. package/src/bsdiff/zstd/tests/regression/data.c +0 -631
  615. package/src/bsdiff/zstd/tests/regression/data.h +0 -121
  616. package/src/bsdiff/zstd/tests/regression/levels.h +0 -59
  617. package/src/bsdiff/zstd/tests/regression/method.c +0 -701
  618. package/src/bsdiff/zstd/tests/regression/method.h +0 -65
  619. package/src/bsdiff/zstd/tests/regression/result.c +0 -28
  620. package/src/bsdiff/zstd/tests/regression/result.h +0 -103
  621. package/src/bsdiff/zstd/tests/regression/results.csv +0 -1480
  622. package/src/bsdiff/zstd/tests/regression/test.c +0 -362
  623. package/src/bsdiff/zstd/tests/roundTripCrash.c +0 -241
  624. package/src/bsdiff/zstd/tests/seqgen.c +0 -260
  625. package/src/bsdiff/zstd/tests/seqgen.h +0 -58
  626. package/src/bsdiff/zstd/tests/test-license.py +0 -156
  627. package/src/bsdiff/zstd/tests/test-variants.sh +0 -115
  628. package/src/bsdiff/zstd/tests/test-zstd-versions.py +0 -308
  629. package/src/bsdiff/zstd/tests/zstreamtest.c +0 -3407
  630. package/src/bsdiff/zstd/zlibWrapper/BUCK +0 -22
  631. package/src/bsdiff/zstd/zlibWrapper/Makefile +0 -120
  632. package/src/bsdiff/zstd/zlibWrapper/README.md +0 -163
  633. package/src/bsdiff/zstd/zlibWrapper/examples/example.c +0 -598
  634. package/src/bsdiff/zstd/zlibWrapper/examples/example_original.c +0 -599
  635. package/src/bsdiff/zstd/zlibWrapper/examples/fitblk.c +0 -254
  636. package/src/bsdiff/zstd/zlibWrapper/examples/fitblk_original.c +0 -233
  637. package/src/bsdiff/zstd/zlibWrapper/examples/minigzip.c +0 -605
  638. package/src/bsdiff/zstd/zlibWrapper/examples/zwrapbench.c +0 -1018
  639. package/src/bsdiff/zstd/zlibWrapper/gzclose.c +0 -26
  640. package/src/bsdiff/zstd/zlibWrapper/gzcompatibility.h +0 -68
  641. package/src/bsdiff/zstd/zlibWrapper/gzguts.h +0 -229
  642. package/src/bsdiff/zstd/zlibWrapper/gzlib.c +0 -587
  643. package/src/bsdiff/zstd/zlibWrapper/gzread.c +0 -637
  644. package/src/bsdiff/zstd/zlibWrapper/gzwrite.c +0 -631
  645. package/src/bsdiff/zstd/zlibWrapper/zstd_zlibwrapper.c +0 -1200
  646. package/src/bsdiff/zstd/zlibWrapper/zstd_zlibwrapper.h +0 -91
  647. package/src/objc/build/objcWrapper.o +0 -0
  648. package/src/objc/objcWrapper.m +0 -1380
  649. package/src/zig/build/index.js +0 -782
  650. package/src/zig/build/libObjcWrapper.a +0 -0
  651. package/src/zig/build.zig +0 -29
  652. package/src/zig/macos/application.zig +0 -6
  653. package/src/zig/macos/objc.zig +0 -123
  654. package/src/zig/macos/tray.zig +0 -102
  655. package/src/zig/macos/webview.zig +0 -693
  656. package/src/zig/macos/window.zig +0 -189
  657. package/src/zig/main.zig +0 -16
  658. package/src/zig/rpc/pipesin.zig +0 -202
  659. package/src/zig/rpc/rpc.zig +0 -19
  660. package/src/zig/rpc/schema/handlers.zig +0 -402
  661. package/src/zig/rpc/schema/request.zig +0 -59
  662. package/src/zig/rpc/schema/schema.zig +0 -412
  663. package/src/zig/rpc/stdin.zig +0 -112
  664. package/src/zig/rpc/stdout.zig +0 -106
  665. package/src/zig/rpc/types.zig +0 -41
  666. package/src/zig/utils.zig +0 -49
  667. package/src/zig/zig-out/bin/webview +0 -0
@@ -1,842 +0,0 @@
1
- // Copyright 2003-2005 Colin Percival
2
- // Copyright 2024 Yoav Givati
3
- // All rights reserved
4
- //
5
- // Redistribution and use in source and binary forms, with or without
6
- // modification, are permitted providing that the following conditions
7
- // are met:
8
- // 1. Redistributions of source code must retain the above copyright
9
- // notice, this list of conditions and the following disclaimer.
10
- // 2. Redistributions in binary form must reproduce the above copyright
11
- // notice, this list of conditions and the following disclaimer in the
12
- // documentation and/or other materials provided with the distribution.
13
- //
14
- // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
15
- // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16
- // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17
- // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
18
- // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19
- // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20
- // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21
- // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
22
- // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
23
- // IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24
- // POSSIBILITY OF SUCH DAMAGE.
25
-
26
- // Note: This is a modified version of bsdiff from Colin Percival.
27
- // The goal is to move compression from bzip2 sections in the patch file to zstd for the whole patch file,
28
- // explore other performance improvements leveraging zig, and potentially optimize for tar file diffing
29
- // used by electrobun.
30
-
31
- // todo:
32
- // 1. implement qsufsort and split
33
- // 2. implement search and matchlen
34
- // 3. implement diffb
35
- // 4. add wrapper that takes two absolute file paths and test creating patches
36
- // 5. implement bspatch.zig
37
- // 6. test applying a patch file with checksum
38
- // 7. compare TRDIFF10 with zstd compression with bsdiff4.
39
- // 8. create a cli interace that takes two file paths and creates a patch file
40
- // 9. make build zig fast and small to compare sizes and perf and use in cli
41
- // 10. consider making a standalone repo
42
- const std = @import("std");
43
-
44
- const zstd = @cImport({
45
- @cInclude("zstd.h");
46
- });
47
-
48
- const vectorSize = std.simd.suggestVectorSize(u8) orelse 4;
49
-
50
- // 1. create a bsdiff implementation that supports bzip2 classic bsdiff, and a mode that doesn't compress the patch file at all (so you can apply any compression to the whole file)
51
- // since only the electrobun cli needs to compress the file size doesn't matter, we just need prebuilt binaries to electrobun build on different platforms
52
- // 2. compile binaries for every target platform of bsdiff and bspatch with/without bzip2 compression.
53
- // 2. the electrobun launcher will import the bzip-less bspatch.zig implementation and use the bspatch.zig directly in launcher.zig
54
- // 4. the launcher will have an alternate mode to decompress a zstd file.
55
- // 5. the cli will just use exec to run bsdiff against two tar files, it can do this in parallel to compare multiple versions at the same time.
56
- // 6. the cli will then compress all the patch files with the zstd node library, also in parallel. support maybe the last 5 versions of the app. (configurable)
57
- // 5. the electrobun bun api will call the launcher in the mode when it needs to decompress a zstd compressed patch file and apply it.
58
-
59
- // 1. update bsdiff to take file path args instead of hardcoded
60
- // 2. build bsdiff binary for arm and make it available to the cli
61
- // 3. update electrobun cli to use bsdiff and the node zstd to generate patches in parallel by spawning multiple processes
62
- // Note: patches don't contain all the information to create the old file from the new file, so the last x versions need to be kept and downloaded.
63
- // 4. write the cli logic to download, generate patches, and create the artifacts folder
64
- // 5. update the launcher binary to include zstd decompress and bspatch.zig directly.
65
- // 6. create electrobun update api to check for updates, download, apply patches, and restart the app.
66
-
67
- // 7. then later move bsdiff to its own repo, implement bzip backwards compatability, and a npm package with typescript wrapper.
68
- pub fn main() !void {
69
- var allocator = std.heap.page_allocator;
70
-
71
- var args = try std.process.argsWithAllocator(allocator);
72
-
73
- defer args.deinit();
74
-
75
- // skip the first arg which is the program name
76
- _ = args.skip();
77
-
78
- const oldFilePath = args.next() orelse "";
79
- const newFilePath = args.next() orelse "";
80
- const patchFilePath = args.next() orelse "";
81
- // By default we compress the blocks with bzip2 to make patches compatible with
82
- // the original bsdiff implementation.
83
- // In electrobun we disable block compression and compress the whole patch file with zstd
84
- // in a separate process.
85
- const optionUseZstd = args.next() orelse "";
86
- const useZstd = std.mem.eql(u8, optionUseZstd, "--use-zstd");
87
-
88
- if (oldFilePath.len == 0 or newFilePath.len == 0 or patchFilePath.len == 0) {
89
- std.debug.print("Usage: bsdiff <oldFilePath> <newFilePath> <patchFilePath>\n", .{});
90
- std.debug.print("Usage: bsdiff <oldFilePath> <newFilePath> <patchFilePath> --use-zstd\n", .{});
91
- std.process.exit(1);
92
- }
93
-
94
- const oldFile = try std.fs.cwd().openFile(oldFilePath, .{ .mode = .read_only });
95
- defer oldFile.close();
96
-
97
- const oldFileSize = try oldFile.getEndPos();
98
- var oldFileBuff = try allocator.alloc(u8, oldFileSize);
99
- defer allocator.free(oldFileBuff);
100
- _ = try oldFile.readAll(oldFileBuff);
101
-
102
- const newFile = try std.fs.cwd().openFile(newFilePath, .{ .mode = .read_only });
103
- defer newFile.close();
104
-
105
- const newFileSize = try newFile.getEndPos();
106
- var newFileBuff = try allocator.alloc(u8, newFileSize);
107
- defer allocator.free(newFileBuff);
108
- _ = try newFile.readAll(newFileBuff);
109
-
110
- const patch = try calculateDifferences(&allocator, oldFileBuff, newFileBuff, useZstd);
111
-
112
- // Write the patch file, internal blocks compressed with bzip2
113
- const patchFile = try std.fs.cwd().createFile(patchFilePath, .{});
114
- defer patchFile.close();
115
-
116
- _ = try patchFile.writeAll(patch);
117
- }
118
-
119
- fn calculateDifferences(allocator: *std.mem.Allocator, oldData: []const u8, newData: []const u8, useZstd: bool) ![]u8 {
120
- if (!useZstd) {
121
- std.debug.print("Block compression with bzip2 not yet implemented.\n", .{});
122
- }
123
-
124
- // Allocate memory for the suffix array based on the length of the old data
125
- var suffixIndexes = try allocator.alloc(i64, oldData.len + 1);
126
- defer allocator.free(suffixIndexes);
127
-
128
- // Note: This is where a significant amount of time is spent in the diffing process
129
- // Todo: replace with a more modern suffix sort algorithm like libdivsufsort
130
- try qsufsortFast(allocator, suffixIndexes, oldData);
131
-
132
- const newsize = newData.len;
133
- const oldsize = oldData.len;
134
-
135
- var streamingBytes = true;
136
- // compression threads
137
- // control block
138
- var controlBlockStreamOffset: usize = 0;
139
- var controlBlockStream = try allocator.alloc(u8, newsize);
140
- var controlBlockInput = zstd.ZSTD_inBuffer{ .src = controlBlockStream.ptr, .size = 0, .pos = 0 };
141
- var controlBlockCompressed = try allocator.alloc(u8, zstd.ZSTD_compressBound(controlBlockStream.len));
142
- var controlBlockOutput = zstd.ZSTD_outBuffer{ .dst = controlBlockCompressed.ptr, .size = controlBlockCompressed.len, .pos = 0 };
143
- const controlBlockThread = try std.Thread.spawn(.{}, compressBlockStream, .{ &controlBlockInput, &controlBlockOutput, &streamingBytes });
144
- // diff block
145
- // var diffBlockStreamOffset: usize = 0;
146
- var diffBlockStream = try allocator.alloc(u8, newsize);
147
- var diffBlockInput = zstd.ZSTD_inBuffer{ .src = diffBlockStream.ptr, .size = 0, .pos = 0 };
148
- var diffBlockCompressed = try allocator.alloc(u8, zstd.ZSTD_compressBound(diffBlockStream.len));
149
- var diffBlockOutput = zstd.ZSTD_outBuffer{ .dst = diffBlockCompressed.ptr, .size = diffBlockCompressed.len, .pos = 0 };
150
- const diffBlockThread = try std.Thread.spawn(.{}, compressBlockStream, .{ &diffBlockInput, &diffBlockOutput, &streamingBytes });
151
- // extra block
152
- var extraBlockStream = try allocator.alloc(u8, newsize);
153
- var extraBlockInput = zstd.ZSTD_inBuffer{ .src = extraBlockStream.ptr, .size = 0, .pos = 0 };
154
- var extraBlockCompressed = try allocator.alloc(u8, zstd.ZSTD_compressBound(extraBlockStream.len));
155
- var extraBlockOutput = zstd.ZSTD_outBuffer{ .dst = extraBlockCompressed.ptr, .size = extraBlockCompressed.len, .pos = 0 };
156
- const extraBlockThread = try std.Thread.spawn(.{}, compressBlockStream, .{ &extraBlockInput, &extraBlockOutput, &streamingBytes });
157
-
158
- // Header is
159
- // 0 8 "BSDIFF40" or "TRDIFF10" // The only difference in file format is bzip2 vs zstd compression of the blocks
160
- // 8 8 length of ctrl block i64
161
- // 16 8 length of diff block i64
162
- // 24 8 length of extra block i64
163
- // File is
164
- // 0 32 Header
165
- // 32 ?? ctrl block uncompresses to i64
166
- // ?? ?? diff block uncompresses to i8
167
- // ?? ?? extra block uncompresses to u8
168
-
169
- // Placeholder for the buffer used in offtout
170
- var buffer = [_]u8{0} ** 8;
171
-
172
- // Initialize variables for tracking positions and scores during the diffing process
173
- var scanIndex: i64 = 0;
174
- var matchLength: i64 = 0;
175
- var lastScanIndex: i64 = 0;
176
- var lastMatchPosition: i64 = 0;
177
- var lastOffset: i64 = 0;
178
- var matchScore: i64 = 0;
179
- var matchPosition: i64 = 0;
180
-
181
- // More variables for managing the diffing process
182
- var scoreCounter: i64 = 0;
183
- var forwardScore: i64 = 0;
184
- var forwardLength: i64 = 0;
185
- var backwardScore: i64 = 0;
186
- var backwardLength: i64 = 0;
187
-
188
- // Variables for handling overlaps in the diffing process
189
- var overlapLength: i64 = 0;
190
- var bestOverlapScore: i64 = 0;
191
- var bestOverlapLength: i64 = 0;
192
-
193
- // var controlBlockOffset: usize = 0;
194
-
195
- // Begin the main loop for calculating differences
196
- while (scanIndex < newsize) {
197
- matchScore = 0;
198
- scanIndex += matchLength;
199
- scoreCounter = scanIndex;
200
-
201
- // Loop through newData, searching for matches in oldData
202
- while (scanIndex < newsize) {
203
- // Note: most of the time during the diffing phase is spend in search()
204
- matchLength = @intCast(search(suffixIndexes, oldData, newData[@intCast(scanIndex)..], 0, @intCast(oldsize), &matchPosition));
205
-
206
- // Increment matchScore based on direct matches between newData and shifted oldData
207
- while (scoreCounter < scanIndex + matchLength) {
208
- const currentScanPos = scoreCounter + lastOffset;
209
- if (currentScanPos < oldsize and oldData[@intCast(currentScanPos)] == newData[@intCast(scoreCounter)]) {
210
- matchScore += 1;
211
- }
212
- scoreCounter += 1;
213
- }
214
-
215
- // Break conditions for optimizing the search process
216
- if (matchLength == matchScore and matchLength != 0) {
217
- break;
218
- }
219
- if (matchLength > matchScore + 8) {
220
- break;
221
- }
222
- if (scanIndex + lastOffset < oldsize and oldData[@intCast(scanIndex + lastOffset)] == newData[@intCast(scanIndex)]) {
223
- matchScore -= 1;
224
- }
225
-
226
- scanIndex += 1;
227
- }
228
-
229
- // After finding a match, calculate the forward and backward lengths for the diff and extra blocks
230
- if (matchLength != matchScore or scanIndex == newsize) {
231
- scoreCounter = 0;
232
- forwardScore = 0;
233
- forwardLength = 0;
234
- var i: i64 = 0;
235
-
236
- // Calculate forward length - how much data from the old file matches directly after the current position
237
- while (lastScanIndex + i < scanIndex and lastMatchPosition + i < oldsize) {
238
- if (oldData[@intCast(lastMatchPosition + i)] == newData[@intCast(lastScanIndex + i)]) {
239
- scoreCounter += 1;
240
- }
241
- i += 1;
242
- if (scoreCounter * 2 - i > forwardScore * 2 - forwardLength) {
243
- forwardScore = scoreCounter;
244
- forwardLength = i;
245
- }
246
- }
247
-
248
- // Calculate backward length - similar to forward length but in the opposite direction
249
- backwardLength = 0;
250
- if (scanIndex < newsize) {
251
- scoreCounter = 0;
252
- backwardScore = 0;
253
- i = 1;
254
- while (scanIndex >= lastScanIndex + i and matchPosition >= i) {
255
- if (oldData[@intCast(matchPosition - i)] == newData[@intCast(scanIndex - i)]) {
256
- scoreCounter += 1;
257
- }
258
- if (scoreCounter * 2 - i > backwardScore * 2 - backwardLength) {
259
- backwardScore = scoreCounter;
260
- backwardLength = i;
261
- }
262
- i += 1;
263
- }
264
- }
265
-
266
- // Handle overlaps between forward and backward matches
267
- if (lastScanIndex + forwardLength > scanIndex - backwardLength) {
268
- overlapLength = (lastScanIndex + forwardLength) - (scanIndex - backwardLength);
269
- scoreCounter = 0;
270
- bestOverlapScore = 0;
271
- bestOverlapLength = 0;
272
- i = 0;
273
-
274
- while (i < overlapLength) {
275
- if (newData[@intCast(lastScanIndex + forwardLength - overlapLength + i)] == oldData[@intCast(lastMatchPosition + forwardLength - overlapLength + i)]) {
276
- scoreCounter += 1;
277
- }
278
-
279
- if (newData[@intCast(scanIndex - backwardLength + i)] == oldData[@intCast(matchPosition - backwardLength + i)]) {
280
- scoreCounter -= 1;
281
- }
282
-
283
- if (scoreCounter > bestOverlapScore) {
284
- bestOverlapScore = scoreCounter;
285
- bestOverlapLength = i + 1;
286
- }
287
-
288
- i += 1;
289
- }
290
-
291
- forwardLength += bestOverlapLength - overlapLength;
292
- backwardLength -= bestOverlapLength;
293
- }
294
-
295
- i = 0;
296
-
297
- // Write the calculated diff and extra data to their respective blocks
298
- while (i < forwardLength) {
299
- // perf: use simd for calculations where possible
300
- if (i + vectorSize <= forwardLength) {
301
- var oldpos: usize = @intCast(lastMatchPosition + i);
302
- var newpos: usize = @intCast(lastScanIndex + i);
303
- var diffpos: usize = @intCast(diffBlockInput.size + @as(usize, @intCast(i)));
304
-
305
- const newVec: @Vector(vectorSize, u8) = newData[newpos..][0..vectorSize].*;
306
- const oldVec: @Vector(vectorSize, u8) = oldData[oldpos..][0..vectorSize].*;
307
- const resultVec = @subWithOverflow(newVec, oldVec)[0];
308
- const resultArray: [vectorSize]u8 = resultVec;
309
- @memcpy(diffBlockStream[diffpos..][0..vectorSize], &resultArray);
310
-
311
- i += vectorSize;
312
- continue;
313
- }
314
-
315
- const newByte: u8 = newData[@intCast(lastScanIndex + i)];
316
- const oldByte: u8 = oldData[@intCast(lastMatchPosition + i)];
317
- const diffByte: u8 = @subWithOverflow(newByte, oldByte)[0];
318
-
319
- diffBlockStream[@intCast(diffBlockInput.size + @as(usize, @intCast(i)))] = diffByte;
320
-
321
- i += 1;
322
- }
323
-
324
- i = 0;
325
-
326
- // Write extra data that doesn't match directly but needs to be added to the new data
327
- const newBytesAded = (scanIndex - backwardLength) - (lastScanIndex + forwardLength);
328
-
329
- // Note: Oddly doing a @memcpy here is significantly slower than a loop
330
- while (i < newBytesAded) {
331
- // extraBlock[@intCast(extraBlockInput.size + @as(usize, @intCast(i)))] = newData[@intCast(lastScanIndex + forwardLength + i)];
332
- extraBlockStream[@intCast(extraBlockInput.size + @as(usize, @intCast(i)))] = newData[@intCast(lastScanIndex + forwardLength + i)];
333
- i += 1;
334
- }
335
-
336
- const readDiffBy = forwardLength;
337
- const readExtraBy = newBytesAded;
338
- const seekBy = (matchPosition - backwardLength) - (lastMatchPosition + forwardLength);
339
-
340
- // Update lengths and control block information for the next iteration
341
- diffBlockInput.size += @intCast(readDiffBy);
342
- extraBlockInput.size += @intCast(readExtraBy);
343
-
344
- offtout(readDiffBy, controlBlockStream[controlBlockStreamOffset..][0..8]);
345
- controlBlockStreamOffset += 8;
346
- offtout(readExtraBy, controlBlockStream[controlBlockStreamOffset..][0..8]);
347
- controlBlockStreamOffset += 8;
348
- offtout(seekBy, controlBlockStream[controlBlockStreamOffset..][0..8]);
349
- controlBlockStreamOffset += 8;
350
- controlBlockInput.size = controlBlockStreamOffset;
351
-
352
- // Update positions for the next loop iteration
353
- lastScanIndex = scanIndex - backwardLength;
354
- lastMatchPosition = matchPosition - backwardLength;
355
- lastOffset = matchPosition - scanIndex;
356
- }
357
- }
358
-
359
- // Tell the compression threads to wrap up and wait for them
360
- streamingBytes = false;
361
- diffBlockThread.join();
362
- controlBlockThread.join();
363
- extraBlockThread.join();
364
-
365
- // Combine header, diffBlock, and extraBlock into a single byte slice to return
366
- const headerLength = 32;
367
-
368
- var patch = try allocator.alloc(u8, headerLength + controlBlockOutput.pos + diffBlockOutput.pos + extraBlockOutput.pos);
369
- // write the header compressed
370
- @memcpy(patch[0..8], "TRDIFF10");
371
-
372
- offtout(@intCast(controlBlockOutput.pos), &buffer);
373
- @memcpy(patch[8..16], &buffer);
374
-
375
- offtout(@intCast(diffBlockOutput.pos), &buffer);
376
- @memcpy(patch[16..24], &buffer);
377
-
378
- offtout(@intCast(newsize), &buffer);
379
- @memcpy(patch[24..32], &buffer);
380
-
381
- var patchFileOffset: usize = headerLength;
382
- @memcpy(patch[patchFileOffset..][0..controlBlockOutput.pos], controlBlockCompressed.ptr);
383
- patchFileOffset += controlBlockOutput.pos;
384
-
385
- @memcpy(patch[patchFileOffset..][0..diffBlockOutput.pos], diffBlockCompressed.ptr);
386
- patchFileOffset += diffBlockOutput.pos;
387
-
388
- @memcpy(patch[patchFileOffset..][0..extraBlockOutput.pos], extraBlockCompressed.ptr);
389
- patchFileOffset += extraBlockOutput.pos;
390
-
391
- return patch;
392
- }
393
-
394
- var totalCompressedSize: usize = 0;
395
-
396
- // Notes on Zstd:
397
- // compressed output between single shot and streaming with a single frame is roughly the same.
398
- // with a single frame zstd takes roughly 20% longer to compress the same data. but with streaming you can compress in parallel to the actual diffing in another thread.
399
- fn compressBlock(allocator: *std.mem.Allocator, block: []const u8) !void {
400
- // non-streaming
401
- const maxCompressedSize = zstd.ZSTD_compressBound(block.len);
402
- var compressedBlock = try allocator.alloc(u8, maxCompressedSize);
403
- // defer allocator.free(compressedBlock);
404
-
405
- const compressedSize = zstd.ZSTD_compress(compressedBlock.ptr, compressedBlock.len, block.ptr, block.len, 22);
406
- totalCompressedSize += compressedSize;
407
- // return compressedSize;
408
- // return compressedBlock[0..compressedSize];
409
- }
410
-
411
- fn compressBlockStream(input: *zstd.ZSTD_inBuffer, output: *zstd.ZSTD_outBuffer, streamingBytes: *bool) !void {
412
- const cstream = zstd.ZSTD_createCStream();
413
- defer {
414
- _ = zstd.ZSTD_freeCStream(cstream);
415
- }
416
-
417
- // Note: Experimentally there's no significant difference between 19 and 22 with regard to compression output
418
- // creates smaller output at 19 than bzip2. However there is a huge time cost between 19 and 22, roughly 20% longer.
419
- // setting this to 22 the total bsdiff time matches the original bsdiff c implementation
420
- // setting this to 19 the total bsdiff time is roughly 20% faster than the original bsdiff c implementation
421
- // in both cases the output is roughly 10% smaller.
422
- // obviously this will vary based on the data being compressed.
423
- _ = zstd.ZSTD_initCStream(cstream, 19);
424
-
425
- while (streamingBytes.* or input.pos < input.size) {
426
- if (input.pos < input.size) {
427
- _ = zstd.ZSTD_compressStream(cstream, output, input);
428
- } else {
429
- std.time.sleep(std.time.ns_per_ms * 10);
430
- }
431
- }
432
-
433
- _ = zstd.ZSTD_endStream(cstream, output);
434
- }
435
-
436
- // offtout puts an int64 (little endian) to buf
437
- fn offtout(x: i64, buf: []u8) void {
438
- var y: u64 = undefined;
439
- if (x < 0) {
440
- y = @as(u64, @bitCast(-x)) | 0x8000000000000000;
441
- } else {
442
- y = @as(u64, @bitCast(x));
443
- }
444
-
445
- buf[0] = @intCast(y & 0xFF);
446
- buf[1] = @intCast((y >> 8) & 0xFF);
447
- buf[2] = @intCast((y >> 16) & 0xFF);
448
- buf[3] = @intCast((y >> 24) & 0xFF);
449
- buf[4] = @intCast((y >> 32) & 0xFF);
450
- buf[5] = @intCast((y >> 40) & 0xFF);
451
- buf[6] = @intCast((y >> 48) & 0xFF);
452
- buf[7] = @intCast((y >> 56) & 0xFF);
453
- }
454
-
455
- /// Do a binary search to find the longest match of `newData` within `oldData` using precomputed suffixIndexes.
456
- fn search(suffixIndexes: []i64, oldData: []const u8, newData: []const u8, from: usize, to: usize, bestMatchPosition: *i64) usize {
457
- var midPoint: usize = 0;
458
- var matchLength: usize = 0;
459
- const oldDataSize = oldData.len;
460
- const newDataSize = newData.len;
461
- const searchLength = to - from;
462
-
463
- // Base case: If the search range is less than 2, directly compare the matches at the start and end points.
464
- if (searchLength < 2) {
465
- midPoint = matchlenFast(oldData[@intCast(suffixIndexes[from])..], newData);
466
- matchLength = matchlenFast(oldData[@intCast(suffixIndexes[to])..], newData);
467
-
468
- if (midPoint > matchLength) {
469
- bestMatchPosition.* = suffixIndexes[from];
470
- return midPoint;
471
- }
472
- bestMatchPosition.* = suffixIndexes[to];
473
- return matchLength;
474
- }
475
-
476
- // Calculate the midpoint of the current search range.
477
- midPoint = from + @divTrunc((searchLength), 2);
478
- // Determine the length to compare based on the remaining length in `oldData` and the total length of `newData`.
479
- const compareLength = @min(oldDataSize - @as(usize, @intCast(suffixIndexes[midPoint])), newDataSize);
480
- const compareFrom: usize = @intCast(suffixIndexes[midPoint]);
481
- // Compare the substring of `oldData` starting from `compareStart` with the beginning of `newData`.
482
- const compareResult = compareSlicesFast(oldData[compareFrom .. compareFrom + compareLength], newData[0..compareLength]);
483
-
484
- // Recursively search in the half of the range where the comparison indicates the match might be found.
485
- if (compareResult < 0) {
486
- return search(suffixIndexes, oldData, newData, midPoint, to, bestMatchPosition);
487
- } else {
488
- return search(suffixIndexes, oldData, newData, from, midPoint, bestMatchPosition);
489
- }
490
- }
491
-
492
- fn compareSlicesOrig(a: []const u8, b: []const u8) i64 {
493
- const minSize = @min(a.len, b.len);
494
- // std.debug.print("minSize: {}\n", .{minSize});
495
- for (0..minSize) |i| {
496
- if (a[i] < b[i]) return -1;
497
- if (a[i] > b[i]) return 1;
498
- }
499
-
500
- // If all compared elements are equal, decide based on length
501
- if (a.len < b.len) return -1;
502
- if (a.len > b.len) return 1;
503
- return 0;
504
- }
505
-
506
- // For two 48MB files doing lookaheads makes it about 6.5 seconds (30%) faster
507
- // this is because for software updates the files are typically mostly the same
508
- // and this function tends to compare large swaths of the file in one go as it
509
- // bisects down
510
- fn compareSlicesFast(a: []const u8, b: []const u8) i64 {
511
- const minSize = @min(a.len, b.len);
512
- var i: usize = 0;
513
- var lookAheadIndex: usize = 0;
514
- var lookAheadDistance: usize = 8;
515
-
516
- while (i < minSize) {
517
- if (i >= lookAheadIndex and i + lookAheadDistance < minSize) {
518
- while (i + lookAheadDistance < minSize) {
519
- lookAheadIndex = i + lookAheadDistance;
520
-
521
- const aSlice = a[i..lookAheadIndex];
522
- const bSlice = b[i..lookAheadIndex];
523
-
524
- const aSlicePointer: *const [8]u8 = @ptrCast(&aSlice[0]);
525
- const bSlicePointer: *const [8]u8 = @ptrCast(&bSlice[0]);
526
-
527
- const aAs64 = std.mem.readIntBig(u64, aSlicePointer);
528
- const bAs64 = std.mem.readIntBig(u64, bSlicePointer);
529
-
530
- if (aAs64 == bAs64) {
531
- i = lookAheadIndex;
532
- } else {
533
- break;
534
- }
535
- }
536
- }
537
-
538
- // perf: 0 and -1 tend to be most common, so check those first
539
- if (a[i] == b[i]) {
540
- i += 1;
541
- continue;
542
- } else if (a[i] < b[i]) {
543
- return -1;
544
- } else {
545
- return 1;
546
- }
547
-
548
- if (a[i] == b[i]) {
549
- i += 1;
550
- continue;
551
- } else if (a[i] < b[i]) {
552
- return -1;
553
- } else {
554
- return 1;
555
- }
556
-
557
- // i += 1;
558
- // std.debug.print("match: {}\n", .{i});
559
- }
560
- // If all compared elements are equal, decide based on length
561
- // perf: when used in the diffing algorithm search function
562
- // these tend to be equal when we get here, so check that first
563
- // this saves a surprising amount of time. for file diffs that take 20 seconds
564
- // with the c bsdiff, this saves about 500ms.
565
- if (a.len == b.len) {
566
- return 0;
567
- } else if (a.len < b.len) {
568
- return -1;
569
- } else {
570
- return 1;
571
- }
572
- }
573
-
574
- /// Calculates the length of the longest prefix match between two byte arrays using a lookahead optimization.
575
- // in practice the total iterations using matchlenFast are around 16% of the total iterations needed by a brute force matchlen
576
- // eg: diff did 297,101,075 total iterations instead of 1,852,824,342
577
- // on m1 max it shaves about 4% off the total time when diffing two 48MB files
578
- fn matchlenFast(oldData: []const u8, newData: []const u8) usize {
579
- var matchLength: usize = 0;
580
- var lookAheadIndex: usize = 0;
581
- // This works well with 8, you tend be able to skip more iteration loops and get more matches with 7
582
- // eg: in a 48MB file diff, you skip an additional 50 million iterations with 7 than with 8
583
- var lookAheadDistance: usize = 7;
584
-
585
- const oldsize = oldData.len;
586
- const newsize = newData.len;
587
- const minSize = @min(oldsize, newsize);
588
-
589
- while (matchLength < minSize) {
590
- // perf: Go faster by comparing 7 bytes at a time
591
- if (matchLength >= lookAheadIndex and matchLength + lookAheadDistance < minSize) {
592
- while (matchLength + lookAheadDistance < minSize) {
593
- lookAheadIndex = matchLength + lookAheadDistance;
594
-
595
- const oldSlice = oldData[matchLength..lookAheadIndex];
596
- const newSlice = newData[matchLength..lookAheadIndex];
597
-
598
- const oldSlicePointer: *const [7]u8 = @ptrCast(&oldSlice[0]);
599
- const newSlicePointer: *const [7]u8 = @ptrCast(&newSlice[0]);
600
-
601
- const oldAs56 = std.mem.readIntBig(u56, oldSlicePointer);
602
- const newAs56 = std.mem.readIntBig(u56, newSlicePointer);
603
-
604
- if (oldAs56 == newAs56) {
605
- matchLength = lookAheadIndex;
606
- } else {
607
- break;
608
- }
609
- }
610
- }
611
-
612
- if (oldData[matchLength] != newData[matchLength]) {
613
- break;
614
- }
615
- matchLength += 1;
616
- }
617
- return matchLength;
618
- }
619
-
620
- fn qsufsortFast(allocator: *std.mem.Allocator, suffixIndexes: []i64, buf: []const u8) !void {
621
- // perf: instead of creating a buckets array of 256 elements, and shifting them over one index back and forth in the alogirthm,
622
- // we can create a slightly longer array, and just reposition the slice which should be a bit faster
623
-
624
- var _buckets: [257]i64 = [_]i64{0} ** 257;
625
- var buckets = _buckets[1..];
626
-
627
- // inverse of the suffix array, sorted array of suffixes. indexes are suffixes sorted longest to shortest, values the index of the first character group in the sorted array
628
- const inverseSuffix = try allocator.alloc(i64, suffixIndexes.len);
629
- defer allocator.free(inverseSuffix);
630
- const bufzise = buf.len;
631
- const bufzisePlusOne: i64 = @intCast(buf.len + 1);
632
- var startTime = std.time.milliTimestamp();
633
-
634
- for (buf) |b| {
635
- buckets[b] += 1;
636
- }
637
-
638
- startTime = std.time.milliTimestamp();
639
-
640
- // looping up, set each element to the sum of the previous elements
641
- // bucket[1] = bucket[0] + bucket[1];
642
- // this effectively makes them the starting index of the next bucket
643
- for (1..256) |i| {
644
- buckets[i] += buckets[i - 1];
645
- }
646
-
647
- // looping down, shift each element one index to the right
648
- // bucket[255] = bucket[254];
649
- // then set bucket[0] = 0;
650
- buckets = _buckets[0..256];
651
-
652
- buckets[0] = 0;
653
- // incrementing each 'starting index' for each bucket to get the 'next index for that bucket'
654
- // use the index to set the position of each suffix
655
- for (buf, 0..) |b, i| {
656
- buckets[b] += 1;
657
- // Note: in zig array indexes are assumed to be usize, so we need to cast i64 to usize
658
- suffixIndexes[@intCast(buckets[@intCast(b)])] = @intCast(i);
659
- }
660
- // at this point we have the suffixes sorted by bucket
661
-
662
- startTime = std.time.milliTimestamp();
663
- suffixIndexes[0] = @intCast(bufzise);
664
-
665
- // create inverseSuffix that maps each suffix to the last index of
666
- // that suffix grouping in the semi-sorted array.
667
- for (buf, 0..) |b, i| {
668
- inverseSuffix[i] = buckets[b];
669
- }
670
-
671
- startTime = std.time.milliTimestamp();
672
-
673
- inverseSuffix[bufzise] = 0;
674
-
675
- for (1..256) |i| {
676
- if (buckets[i] == buckets[i - 1] + 1) {
677
- suffixIndexes[@intCast(buckets[i])] = -1;
678
- }
679
- }
680
-
681
- suffixIndexes[0] = -1;
682
-
683
- var h: i64 = 1;
684
- while (suffixIndexes[0] != -bufzisePlusOne) {
685
- var ln: i64 = 0;
686
- var i: i64 = 0;
687
- while (i < bufzisePlusOne) {
688
- const suffixIndexesI = suffixIndexes[@intCast(i)];
689
- if (suffixIndexesI < 0) {
690
- ln -= suffixIndexesI;
691
- i -= suffixIndexesI;
692
- } else {
693
- if (ln != 0) {
694
- suffixIndexes[@intCast(i - ln)] = -ln;
695
- }
696
- ln = inverseSuffix[@intCast(suffixIndexesI)] + 1 - i;
697
- split(suffixIndexes, inverseSuffix, i, ln, h);
698
- i += ln;
699
- ln = 0;
700
- }
701
- }
702
- if (ln != 0) {
703
- suffixIndexes[@intCast(i - ln)] = -ln;
704
- }
705
- h += h;
706
- }
707
-
708
- startTime = std.time.milliTimestamp();
709
-
710
- for (0..buf.len) |i| {
711
- suffixIndexes[@intCast(inverseSuffix[@intCast(i)])] = @intCast(i);
712
- }
713
-
714
- startTime = std.time.milliTimestamp();
715
-
716
- suffixIndexes[0] = 0;
717
- }
718
-
719
- var swapTemp: i64 = 0;
720
-
721
- fn split(suffixIndexes: []i64, inverseSuffix: []i64, start: i64, ln: i64, h: i64) void {
722
- var i: i64 = 0;
723
- var j: i64 = 0;
724
- var k: i64 = 0;
725
- var x: i64 = 0;
726
- var jj: i64 = 0;
727
- var kk: i64 = 0;
728
-
729
- if (ln < 16) {
730
- k = start;
731
- const end = start + ln;
732
- while (k < end) {
733
- j = 1;
734
- x = inverseSuffix[@intCast(suffixIndexes[@intCast(k)] + h)];
735
- i = 1;
736
-
737
- while (k + i < end) {
738
- const KplusI: usize = @intCast(k + i);
739
- const suffixIndexesKplusI: usize = @intCast(suffixIndexes[KplusI]);
740
- const suffixIndexesKplusIh: usize = @intCast(suffixIndexesKplusI + @as(usize, @intCast(h)));
741
- const inverseSuffixsuffixIndexeskPlusIh: i64 = inverseSuffix[suffixIndexesKplusIh];
742
-
743
- if (inverseSuffixsuffixIndexeskPlusIh < x) {
744
- x = inverseSuffixsuffixIndexeskPlusIh;
745
- j = 0;
746
- }
747
- if (inverseSuffixsuffixIndexeskPlusIh == x) {
748
- const kPlusJ: usize = @intCast(k + j);
749
- swapTemp = suffixIndexes[kPlusJ];
750
- suffixIndexes[kPlusJ] = @intCast(suffixIndexesKplusI);
751
- suffixIndexes[KplusI] = swapTemp;
752
- j += 1;
753
- }
754
-
755
- i += 1;
756
- }
757
-
758
- const kPlusJMinus1: i64 = k + j - 1;
759
- const k_usize: usize = @intCast(k);
760
- for (0..@intCast(j)) |ii| {
761
- inverseSuffix[@intCast(suffixIndexes[k_usize + ii])] = kPlusJMinus1;
762
- }
763
-
764
- if (j == 1) suffixIndexes[@intCast(k)] = -1;
765
- k += j;
766
- }
767
- return;
768
- }
769
-
770
- x = inverseSuffix[@intCast(suffixIndexes[@intCast(start + (@divTrunc(ln, 2)))] + h)];
771
- kk = 0;
772
- jj = kk;
773
-
774
- i = start;
775
- const startPlusLn: i64 = start + ln;
776
- while (i < startPlusLn) {
777
- const inverseSuffixsuffixIndexesIPlusH: i64 = inverseSuffix[@intCast(suffixIndexes[@intCast(i)] + h)];
778
- if (inverseSuffixsuffixIndexesIPlusH < x) {
779
- jj += 1;
780
- } else if (inverseSuffixsuffixIndexesIPlusH == x) {
781
- kk += 1;
782
- }
783
-
784
- i += 1;
785
- }
786
-
787
- jj += start;
788
- kk += jj;
789
-
790
- i = start;
791
- k = 0;
792
- j = k;
793
-
794
- while (i < jj) {
795
- const inverseSuffixsuffixIndexesIPlusH: i64 = inverseSuffix[@intCast(suffixIndexes[@intCast(i)] + h)];
796
- if (inverseSuffixsuffixIndexesIPlusH < x) {
797
- i += 1;
798
- } else if (inverseSuffixsuffixIndexesIPlusH == x) {
799
- swapTemp = suffixIndexes[@intCast(i)];
800
- suffixIndexes[@intCast(i)] = suffixIndexes[@intCast(jj + j)];
801
- suffixIndexes[@intCast(jj + j)] = swapTemp;
802
- j += 1;
803
- } else {
804
- swapTemp = suffixIndexes[@intCast(i)];
805
- suffixIndexes[@intCast(i)] = suffixIndexes[@intCast(kk + k)];
806
- suffixIndexes[@intCast(kk + k)] = swapTemp;
807
- k += 1;
808
- }
809
- }
810
-
811
- const kkMinusJJ: i64 = kk - jj;
812
- while (j < kkMinusJJ) {
813
- // while (jj + j < kk) {
814
- const jjPlusJ: usize = @intCast(jj + j);
815
- if (inverseSuffix[@intCast(suffixIndexes[jjPlusJ] + h)] == x) {
816
- j += 1;
817
- } else {
818
- swapTemp = suffixIndexes[jjPlusJ];
819
- suffixIndexes[jjPlusJ] = suffixIndexes[@intCast(kk + k)];
820
- suffixIndexes[@intCast(kk + k)] = swapTemp;
821
- k += 1;
822
- }
823
- }
824
-
825
- if (jj > start) {
826
- split(suffixIndexes, inverseSuffix, start, jj - start, h);
827
- }
828
-
829
- i = 0;
830
- while (i < kk - jj) {
831
- inverseSuffix[@intCast(suffixIndexes[@intCast(jj + i)])] = kk - 1;
832
- i += 1;
833
- }
834
-
835
- if (jj == kk - 1) {
836
- suffixIndexes[@intCast(jj)] = -1;
837
- }
838
-
839
- if (start + ln > kk) {
840
- split(suffixIndexes, inverseSuffix, kk, start + ln - kk, h);
841
- }
842
- }