pigeonhole-db 1.1.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 (1256) hide show
  1. checksums.yaml +7 -0
  2. data/Cargo.lock +899 -0
  3. data/Cargo.toml +45 -0
  4. data/LICENSE +21 -0
  5. data/README.md +22 -0
  6. data/extconf.rb +12 -0
  7. data/lib/pigeonhole/api.rb +615 -0
  8. data/lib/pigeonhole/index.rb +208 -0
  9. data/lib/pigeonhole/memory.rb +507 -0
  10. data/lib/pigeonhole/version.rb +6 -0
  11. data/lib/pigeonhole-db.rb +6 -0
  12. data/lib/pigeonhole.rb +47 -0
  13. data/sig/pigeonhole.rbs +1484 -0
  14. data/src/budget.rs +205 -0
  15. data/src/classes.rs +279 -0
  16. data/src/convert.rs +192 -0
  17. data/src/db.rs +685 -0
  18. data/src/error.rs +151 -0
  19. data/src/feed.rs +316 -0
  20. data/src/fork.rs +64 -0
  21. data/src/gvl.rs +112 -0
  22. data/src/index.rs +1157 -0
  23. data/src/lib.rs +534 -0
  24. data/src/memory.rs +2178 -0
  25. data/src/read.rs +312 -0
  26. data/src/table.rs +1161 -0
  27. data/src/vector.rs +262 -0
  28. data/src/walk.rs +406 -0
  29. data/vendor/bundle/ruby/3.4.0/bin/minitest +29 -0
  30. data/vendor/bundle/ruby/3.4.0/bin/rake +29 -0
  31. data/vendor/bundle/ruby/3.4.0/bin/rake-compiler +29 -0
  32. data/vendor/bundle/ruby/3.4.0/bin/rake-compiler-dock +29 -0
  33. data/vendor/bundle/ruby/3.4.0/bin/rb-sys-dock +29 -0
  34. data/vendor/bundle/ruby/3.4.0/bin/rbs +29 -0
  35. data/vendor/bundle/ruby/3.4.0/cache/drb-2.2.3.gem +0 -0
  36. data/vendor/bundle/ruby/3.4.0/cache/logger-1.7.0.gem +0 -0
  37. data/vendor/bundle/ruby/3.4.0/cache/minitest-6.0.6.gem +0 -0
  38. data/vendor/bundle/ruby/3.4.0/cache/prism-1.9.0.gem +0 -0
  39. data/vendor/bundle/ruby/3.4.0/cache/rake-13.4.2.gem +0 -0
  40. data/vendor/bundle/ruby/3.4.0/cache/rake-compiler-1.3.2.gem +0 -0
  41. data/vendor/bundle/ruby/3.4.0/cache/rake-compiler-dock-1.12.0.gem +0 -0
  42. data/vendor/bundle/ruby/3.4.0/cache/rb_sys-0.9.130.gem +0 -0
  43. data/vendor/bundle/ruby/3.4.0/cache/rbs-4.2.0.gem +0 -0
  44. data/vendor/bundle/ruby/3.4.0/cache/toml-rb-6.0.0.gem +0 -0
  45. data/vendor/bundle/ruby/3.4.0/cache/tsort-0.2.0.gem +0 -0
  46. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.9.0/gem.build_complete +0 -0
  47. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.9.0/gem_make.out +44 -0
  48. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.9.0/mkmf.log +74 -0
  49. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.9.0/prism/prism.so +0 -0
  50. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/rbs-4.2.0/gem.build_complete +0 -0
  51. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/rbs-4.2.0/gem_make.out +41 -0
  52. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/rbs-4.2.0/mkmf.log +102 -0
  53. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/rbs-4.2.0/rbs_extension.so +0 -0
  54. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/LICENSE.txt +22 -0
  55. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/drb.gemspec +42 -0
  56. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/acl.rb +239 -0
  57. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/drb.rb +1993 -0
  58. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/eq.rb +15 -0
  59. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/extserv.rb +44 -0
  60. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/extservm.rb +94 -0
  61. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/gw.rb +161 -0
  62. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/observer.rb +26 -0
  63. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/ssl.rb +354 -0
  64. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/timeridconv.rb +97 -0
  65. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/unix.rb +118 -0
  66. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/version.rb +3 -0
  67. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/weakidconv.rb +31 -0
  68. data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb.rb +3 -0
  69. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/BSDL +22 -0
  70. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/COPYING +56 -0
  71. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/README.md +104 -0
  72. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/errors.rb +9 -0
  73. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/formatter.rb +36 -0
  74. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/log_device.rb +265 -0
  75. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/period.rb +47 -0
  76. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/severity.rb +38 -0
  77. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/version.rb +5 -0
  78. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger.rb +789 -0
  79. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/History.rdoc +1860 -0
  80. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/Manifest.txt +41 -0
  81. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/README.rdoc +763 -0
  82. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/Rakefile +89 -0
  83. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/bin/minitest +5 -0
  84. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/design_rationale.rb +54 -0
  85. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/hoe/minitest.rb +30 -0
  86. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/assertions.rb +821 -0
  87. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/autorun.rb +5 -0
  88. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/benchmark.rb +452 -0
  89. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/bisect.rb +304 -0
  90. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/complete.rb +56 -0
  91. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/compress.rb +94 -0
  92. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/error_on_warning.rb +11 -0
  93. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/expectations.rb +321 -0
  94. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/find_minimal_combination.rb +127 -0
  95. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/hell.rb +11 -0
  96. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/manual_plugins.rb +4 -0
  97. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/parallel.rb +72 -0
  98. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/path_expander.rb +432 -0
  99. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/pride.rb +4 -0
  100. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/pride_plugin.rb +135 -0
  101. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/server.rb +49 -0
  102. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/server_plugin.rb +88 -0
  103. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/spec.rb +324 -0
  104. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/sprint.rb +105 -0
  105. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/sprint_plugin.rb +39 -0
  106. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/test.rb +232 -0
  107. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/test_task.rb +331 -0
  108. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest.rb +1232 -0
  109. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/metametameta.rb +150 -0
  110. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_bisect.rb +249 -0
  111. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_find_minimal_combination.rb +138 -0
  112. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_minitest_assertions.rb +1729 -0
  113. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_minitest_benchmark.rb +151 -0
  114. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_minitest_reporter.rb +437 -0
  115. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_minitest_spec.rb +1095 -0
  116. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_minitest_test.rb +1295 -0
  117. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_minitest_test_task.rb +57 -0
  118. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_path_expander.rb +229 -0
  119. data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_server.rb +146 -0
  120. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/BSDmakefile +58 -0
  121. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/CHANGELOG.md +786 -0
  122. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/CODE_OF_CONDUCT.md +76 -0
  123. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/CONTRIBUTING.md +58 -0
  124. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/LICENSE.md +7 -0
  125. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/Makefile +116 -0
  126. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/README.md +143 -0
  127. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/config.yml +4739 -0
  128. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/build_system.md +119 -0
  129. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/configuration.md +68 -0
  130. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/cruby_compilation.md +27 -0
  131. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/design.md +53 -0
  132. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/encoding.md +121 -0
  133. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/fuzzing.md +88 -0
  134. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/heredocs.md +36 -0
  135. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/javascript.md +118 -0
  136. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/local_variable_depth.md +229 -0
  137. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/mapping.md +117 -0
  138. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/parser_translation.md +24 -0
  139. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/parsing_rules.md +22 -0
  140. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/releasing.md +75 -0
  141. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/relocation.md +34 -0
  142. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/ripper_translation.md +63 -0
  143. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/ruby_api.md +45 -0
  144. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/ruby_parser_translation.md +19 -0
  145. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/serialization.md +233 -0
  146. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/testing.md +55 -0
  147. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/ext/prism/Makefile +273 -0
  148. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/ext/prism/api_node.c +6945 -0
  149. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/ext/prism/api_pack.c +276 -0
  150. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/ext/prism/extconf.rb +127 -0
  151. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/ext/prism/extension.c +1427 -0
  152. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/ext/prism/extension.h +19 -0
  153. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/ast.h +8254 -0
  154. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/defines.h +260 -0
  155. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/diagnostic.h +458 -0
  156. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/encoding.h +283 -0
  157. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/node.h +129 -0
  158. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/options.h +488 -0
  159. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/pack.h +163 -0
  160. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/parser.h +936 -0
  161. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/prettyprint.h +34 -0
  162. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/regexp.h +43 -0
  163. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/static_literals.h +121 -0
  164. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_buffer.h +236 -0
  165. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_char.h +204 -0
  166. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_constant_pool.h +218 -0
  167. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_integer.h +130 -0
  168. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_list.h +103 -0
  169. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_memchr.h +29 -0
  170. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_newline_list.h +113 -0
  171. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_string.h +200 -0
  172. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_strncasecmp.h +32 -0
  173. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_strpbrk.h +46 -0
  174. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/version.h +29 -0
  175. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism.h +408 -0
  176. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/compiler.rb +801 -0
  177. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/desugar_compiler.rb +392 -0
  178. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/dispatcher.rb +2210 -0
  179. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/dot_visitor.rb +4767 -0
  180. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/dsl.rb +1003 -0
  181. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/ffi.rb +578 -0
  182. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/inspect_visitor.rb +2393 -0
  183. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/lex_compat.rb +911 -0
  184. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/mutation_compiler.rb +772 -0
  185. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/node.rb +19966 -0
  186. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/node_ext.rb +511 -0
  187. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/pack.rb +230 -0
  188. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/parse_result/comments.rb +188 -0
  189. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/parse_result/errors.rb +66 -0
  190. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/parse_result/newlines.rb +155 -0
  191. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/parse_result.rb +907 -0
  192. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/pattern.rb +269 -0
  193. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/polyfill/append_as_bytes.rb +15 -0
  194. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/polyfill/byteindex.rb +13 -0
  195. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/polyfill/scan_byte.rb +14 -0
  196. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/polyfill/unpack1.rb +14 -0
  197. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/polyfill/warn.rb +36 -0
  198. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/prism.so +0 -0
  199. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/reflection.rb +416 -0
  200. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/relocation.rb +505 -0
  201. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/serialize.rb +2400 -0
  202. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/string_query.rb +31 -0
  203. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/parser/builder.rb +62 -0
  204. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/parser/compiler.rb +2234 -0
  205. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/parser/lexer.rb +820 -0
  206. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/parser.rb +376 -0
  207. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/parser_current.rb +26 -0
  208. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/parser_versions.rb +36 -0
  209. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/ripper/filter.rb +53 -0
  210. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/ripper/lexer.rb +135 -0
  211. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/ripper/sexp.rb +126 -0
  212. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/ripper/shim.rb +5 -0
  213. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/ripper.rb +3520 -0
  214. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/ruby_parser.rb +1964 -0
  215. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation.rb +18 -0
  216. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/visitor.rb +813 -0
  217. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism.rb +98 -0
  218. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/prism.gemspec +172 -0
  219. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/compiler.rbi +12 -0
  220. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/dsl.rbi +524 -0
  221. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/inspect_visitor.rbi +12 -0
  222. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/node.rbi +8750 -0
  223. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/node_ext.rbi +107 -0
  224. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/parse_result.rbi +404 -0
  225. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/reflection.rbi +58 -0
  226. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/string_query.rbi +12 -0
  227. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/translation/parser.rbi +11 -0
  228. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/translation/parser_versions.rbi +23 -0
  229. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/translation/ripper.rbi +15 -0
  230. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/visitor.rbi +473 -0
  231. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism.rbi +63 -0
  232. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/compiler.rbs +9 -0
  233. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/dispatcher.rbs +19 -0
  234. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/dot_visitor.rbs +6 -0
  235. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/dsl.rbs +351 -0
  236. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/inspect_visitor.rbs +22 -0
  237. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/lex_compat.rbs +10 -0
  238. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/mutation_compiler.rbs +159 -0
  239. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/node.rbs +4042 -0
  240. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/node_ext.rbs +149 -0
  241. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/pack.rbs +43 -0
  242. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/parse_result/comments.rbs +38 -0
  243. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/parse_result.rbs +197 -0
  244. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/pattern.rbs +13 -0
  245. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/reflection.rbs +50 -0
  246. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/relocation.rbs +185 -0
  247. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/serialize.rbs +8 -0
  248. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/string_query.rbs +11 -0
  249. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/visitor.rbs +169 -0
  250. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism.rbs +272 -0
  251. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/diagnostic.c +854 -0
  252. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/encoding.c +5340 -0
  253. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/node.c +8685 -0
  254. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/options.c +338 -0
  255. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/pack.c +509 -0
  256. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/prettyprint.c +8957 -0
  257. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/prism.c +22679 -0
  258. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/regexp.c +790 -0
  259. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/serialize.c +2274 -0
  260. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/static_literals.c +617 -0
  261. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/token_type.c +703 -0
  262. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_buffer.c +357 -0
  263. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_char.c +318 -0
  264. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_constant_pool.c +342 -0
  265. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_integer.c +670 -0
  266. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_list.c +49 -0
  267. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_memchr.c +35 -0
  268. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_newline_list.c +125 -0
  269. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_string.c +381 -0
  270. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_strncasecmp.c +36 -0
  271. data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_strpbrk.c +206 -0
  272. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/History.rdoc +2454 -0
  273. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/MIT-LICENSE +21 -0
  274. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/README.rdoc +155 -0
  275. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/command_line_usage.rdoc +171 -0
  276. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/Rakefile1 +38 -0
  277. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/Rakefile2 +35 -0
  278. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/a.c +6 -0
  279. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/b.c +6 -0
  280. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/main.c +11 -0
  281. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/glossary.rdoc +42 -0
  282. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/jamis.rb +592 -0
  283. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/proto_rake.rdoc +127 -0
  284. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/rake.1 +156 -0
  285. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/rakefile.rdoc +635 -0
  286. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/rational.rdoc +151 -0
  287. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/exe/rake +27 -0
  288. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/application.rb +847 -0
  289. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/backtrace.rb +25 -0
  290. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/clean.rb +78 -0
  291. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/cloneable.rb +17 -0
  292. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/cpu_counter.rb +122 -0
  293. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/default_loader.rb +15 -0
  294. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/dsl_definition.rb +196 -0
  295. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/early_time.rb +22 -0
  296. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/ext/core.rb +26 -0
  297. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/ext/string.rb +176 -0
  298. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_creation_task.rb +25 -0
  299. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_list.rb +435 -0
  300. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_task.rb +58 -0
  301. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_utils.rb +137 -0
  302. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_utils_ext.rb +135 -0
  303. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/invocation_chain.rb +57 -0
  304. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/invocation_exception_mixin.rb +17 -0
  305. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/late_time.rb +18 -0
  306. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/linked_list.rb +112 -0
  307. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/loaders/makefile.rb +54 -0
  308. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/multi_task.rb +14 -0
  309. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/name_space.rb +38 -0
  310. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/options.rb +31 -0
  311. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/packagetask.rb +222 -0
  312. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/phony.rb +16 -0
  313. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/private_reader.rb +21 -0
  314. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/promise.rb +100 -0
  315. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/pseudo_status.rb +30 -0
  316. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/rake_module.rb +67 -0
  317. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/rake_test_loader.rb +27 -0
  318. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
  319. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/scope.rb +43 -0
  320. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/task.rb +434 -0
  321. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/task_argument_error.rb +8 -0
  322. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/task_arguments.rb +113 -0
  323. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/task_manager.rb +333 -0
  324. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/tasklib.rb +12 -0
  325. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/testtask.rb +192 -0
  326. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/thread_history_display.rb +49 -0
  327. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/thread_pool.rb +157 -0
  328. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/trace_output.rb +23 -0
  329. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/version.rb +10 -0
  330. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/win32.rb +17 -0
  331. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake.rb +69 -0
  332. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/rake.gemspec +102 -0
  333. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/Gemfile +8 -0
  334. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/History.md +708 -0
  335. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/LICENSE.txt +20 -0
  336. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/README.md +505 -0
  337. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/Rakefile +15 -0
  338. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/appveyor.yml +22 -0
  339. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/bin/rake-compiler +24 -0
  340. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/cucumber.yml +4 -0
  341. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/compile.feature +79 -0
  342. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/cross-compile.feature +23 -0
  343. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/cross-package-multi.feature +15 -0
  344. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/cross-package.feature +14 -0
  345. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/java-compile.feature +22 -0
  346. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/java-no-native-compile.feature +33 -0
  347. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/java-package.feature +24 -0
  348. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/package.feature +40 -0
  349. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/step_definitions/compilation.rb +70 -0
  350. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/step_definitions/cross_compilation.rb +27 -0
  351. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/step_definitions/execution.rb +52 -0
  352. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/step_definitions/folders.rb +32 -0
  353. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/step_definitions/gem.rb +46 -0
  354. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/step_definitions/java_compilation.rb +7 -0
  355. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/support/env.rb +10 -0
  356. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/support/file_template_helpers.rb +137 -0
  357. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/support/generator_helpers.rb +123 -0
  358. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/support/platform_extension_helpers.rb +27 -0
  359. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/lib/rake/baseextensiontask.rb +90 -0
  360. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/lib/rake/compiler_config.rb +38 -0
  361. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/lib/rake/extensioncompiler.rb +51 -0
  362. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/lib/rake/extensiontask.rb +621 -0
  363. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/lib/rake/javaextensiontask.rb +321 -0
  364. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/tasks/bin/cross-ruby.rake +189 -0
  365. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/tasks/bootstrap.rake +11 -0
  366. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/tasks/common.rake +10 -0
  367. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/tasks/cucumber.rake +23 -0
  368. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/tasks/gem.rake +15 -0
  369. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/tasks/rspec.rake +9 -0
  370. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/CHANGELOG.md +446 -0
  371. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/CONTRIBUTING.md +109 -0
  372. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/Dockerfile.jruby +79 -0
  373. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/Dockerfile.mri.erb +282 -0
  374. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/Gemfile +8 -0
  375. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/LICENSE.txt +22 -0
  376. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/README.md +447 -0
  377. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/Rakefile +246 -0
  378. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/bin/rake-compiler-dock +18 -0
  379. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/buildkitd.toml +2 -0
  380. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/gem_helper.rb +54 -0
  381. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/mk_i686.rb +18 -0
  382. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/mk_musl_cross.sh +37 -0
  383. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/mk_osxcross.sh +45 -0
  384. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/mk_pkg_config.sh +24 -0
  385. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/parallel_docker_build.rb +169 -0
  386. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0004-Enable-build-of-static-libruby.patch +38 -0
  387. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0005-build-miniruby-first.patch +16 -0
  388. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0006-ruby-4-rubyspec-capiext.patch +16 -0
  389. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/rcd-env.sh +6 -0
  390. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/runas +7 -0
  391. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/sigfw.c +45 -0
  392. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_codesign +17 -0
  393. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_vbox +30 -0
  394. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/sudoers +1 -0
  395. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/colors.rb +43 -0
  396. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/docker_check.rb +356 -0
  397. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/predefined_user_group.rb +5 -0
  398. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/starter.rb +206 -0
  399. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/version.rb +4 -0
  400. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock.rb +151 -0
  401. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/Dockerfile +66 -0
  402. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/README.md +14 -0
  403. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/binutils-mingw-w64-ignore-check-errors.patch +13 -0
  404. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/gcc-mingw-w64-only-c-c++.patch +13 -0
  405. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/mingw-w64-enable-ucrt.patch +22 -0
  406. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/rake-compiler-dock.gemspec +34 -0
  407. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.alpine +17 -0
  408. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.debian +24 -0
  409. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/fixtures/mig_test_rpc.defs +8 -0
  410. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Gemfile +11 -0
  411. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Rakefile +97 -0
  412. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RcdTestExtService.java +19 -0
  413. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RubyRcdTest.java +16 -0
  414. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/extconf.rb +111 -0
  415. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/rcd_test_ext.c +65 -0
  416. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/rcd_test_ext.h +11 -0
  417. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/lib/rcd_test.rb +6 -0
  418. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/rcd_test.gemspec +28 -0
  419. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/test/test_basic.rb +49 -0
  420. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/test_environment_variables.rb +108 -0
  421. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/test_mig.rb +18 -0
  422. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/test_parallel_docker_build.rb +95 -0
  423. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/test_rubygems_plugins.rb +12 -0
  424. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/test_starter.rb +158 -0
  425. data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/test_versions.rb +82 -0
  426. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/LICENSE-APACHE +190 -0
  427. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/LICENSE-MIT +21 -0
  428. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/README.md +42 -0
  429. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/certs/ianks.pem +21 -0
  430. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/exe/rb-sys-dock +495 -0
  431. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/cargo/config.rb +72 -0
  432. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/cargo/metadata.rb +158 -0
  433. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/cargo.rb +9 -0
  434. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/cargo_builder/link_flag_converter.rb +37 -0
  435. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/cargo_builder.rb +370 -0
  436. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/error.rb +43 -0
  437. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/extensiontask.rb +188 -0
  438. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/mkmf/config.rb +75 -0
  439. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/mkmf.rb +413 -0
  440. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/toolchain_info/data.rb +10 -0
  441. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/toolchain_info.rb +82 -0
  442. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/util/logger.rb +73 -0
  443. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/version.rb +5 -0
  444. data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys.rb +8 -0
  445. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/BSDL +22 -0
  446. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/CHANGELOG.md +2463 -0
  447. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/COPYING +56 -0
  448. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/Dockerfile.jruby +53 -0
  449. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/README.md +240 -0
  450. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/Rakefile +1213 -0
  451. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/Steepfile +55 -0
  452. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/config.yml +920 -0
  453. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/array.rbs +4205 -0
  454. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/basic_object.rbs +376 -0
  455. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/binding.rbs +148 -0
  456. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/builtin.rbs +278 -0
  457. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/class.rbs +223 -0
  458. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/comparable.rbs +192 -0
  459. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/complex.rbs +812 -0
  460. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/constants.rbs +96 -0
  461. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/data.rbs +415 -0
  462. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/dir.rbs +993 -0
  463. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/encoding.rbs +1368 -0
  464. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/enumerable.rbs +2506 -0
  465. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/enumerator/arithmetic_sequence.rbs +70 -0
  466. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/enumerator/product.rbs +92 -0
  467. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/enumerator.rbs +705 -0
  468. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/env.rbs +6 -0
  469. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/errno.rbs +682 -0
  470. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/errors.rbs +789 -0
  471. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/exception.rbs +485 -0
  472. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/false_class.rbs +82 -0
  473. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/fiber.rbs +570 -0
  474. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/fiber_error.rbs +11 -0
  475. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/file.rbs +2045 -0
  476. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/file_constants.rbs +463 -0
  477. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/file_stat.rbs +534 -0
  478. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/file_test.rbs +331 -0
  479. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/float.rbs +1292 -0
  480. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/gc.rbs +788 -0
  481. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/global_variables.rbs +184 -0
  482. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/hash.rbs +2183 -0
  483. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/integer.rbs +1374 -0
  484. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/io/buffer.rbs +995 -0
  485. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/io/wait.rbs +48 -0
  486. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/io.rbs +3473 -0
  487. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/kernel.rbs +3172 -0
  488. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/marshal.rbs +207 -0
  489. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/match_data.rbs +637 -0
  490. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/math.rbs +770 -0
  491. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/method.rbs +422 -0
  492. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/module.rbs +1856 -0
  493. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/nil_class.rbs +210 -0
  494. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/numeric.rbs +832 -0
  495. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/object.rbs +108 -0
  496. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/object_space/weak_key_map.rbs +166 -0
  497. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/object_space.rbs +197 -0
  498. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/pathname.rbs +1312 -0
  499. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/proc.rbs +905 -0
  500. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/process.rbs +2316 -0
  501. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/ractor.rbs +914 -0
  502. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/random.rbs +255 -0
  503. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/range.rbs +1209 -0
  504. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rational.rbs +502 -0
  505. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rb_config.rbs +88 -0
  506. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rbs/ops.rbs +154 -0
  507. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rbs/unnamed/argf.rbs +1236 -0
  508. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rbs/unnamed/env_class.rbs +1214 -0
  509. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rbs/unnamed/main_class.rbs +123 -0
  510. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rbs/unnamed/random.rbs +186 -0
  511. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/refinement.rbs +59 -0
  512. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/regexp.rbs +1974 -0
  513. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/ruby.rbs +53 -0
  514. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/ruby_vm.rbs +809 -0
  515. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/basic_specification.rbs +6 -0
  516. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/config_file.rbs +38 -0
  517. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/dependency_installer.rbs +6 -0
  518. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/errors.rbs +112 -0
  519. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/installer.rbs +15 -0
  520. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/path_support.rbs +6 -0
  521. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/platform.rbs +7 -0
  522. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/request_set.rbs +49 -0
  523. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/requirement.rbs +138 -0
  524. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/rubygems.rbs +1108 -0
  525. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/source_list.rbs +15 -0
  526. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/specification.rbs +31 -0
  527. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/stream_ui.rbs +5 -0
  528. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/uninstaller.rbs +10 -0
  529. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/version.rbs +133 -0
  530. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/set.rbs +751 -0
  531. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/signal.rbs +110 -0
  532. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/string.rbs +5532 -0
  533. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/struct.rbs +668 -0
  534. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/symbol.rbs +482 -0
  535. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/thread.rbs +1821 -0
  536. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/thread_group.rbs +79 -0
  537. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/time.rbs +1793 -0
  538. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/trace_point.rbs +483 -0
  539. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/true_class.rbs +98 -0
  540. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/unbound_method.rbs +337 -0
  541. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/warning.rbs +87 -0
  542. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/CONTRIBUTING.md +107 -0
  543. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/aliases.md +79 -0
  544. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/architecture.md +110 -0
  545. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/collection.md +192 -0
  546. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/config.md +171 -0
  547. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/data_and_struct.md +86 -0
  548. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/encoding.md +56 -0
  549. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/gem.md +56 -0
  550. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/inline.md +634 -0
  551. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/rbs_by_example.md +309 -0
  552. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/release.md +303 -0
  553. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/repo.md +125 -0
  554. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/rust.md +96 -0
  555. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/sigs.md +167 -0
  556. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/stdlib.md +155 -0
  557. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/syntax.md +952 -0
  558. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/tools.md +17 -0
  559. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/type_fingerprint.md +21 -0
  560. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/wasm_serialization.md +80 -0
  561. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/exe/rbs +7 -0
  562. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/Makefile +273 -0
  563. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/ast_translation.c +1870 -0
  564. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/ast_translation.h +41 -0
  565. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/class_constants.c +189 -0
  566. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/class_constants.h +105 -0
  567. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/compat.h +10 -0
  568. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/extconf.rb +40 -0
  569. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/legacy_location.c +299 -0
  570. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/legacy_location.h +82 -0
  571. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/main.c +649 -0
  572. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/rbs_extension.h +16 -0
  573. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/rbs_string_bridging.c +9 -0
  574. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/rbs_string_bridging.h +24 -0
  575. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/goodcheck.yml +91 -0
  576. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/ast.h +1055 -0
  577. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/defines.h +104 -0
  578. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/lexer.h +208 -0
  579. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/location.h +40 -0
  580. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/parser.h +187 -0
  581. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/serialize.h +39 -0
  582. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/string.h +47 -0
  583. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/util/rbs_allocator.h +59 -0
  584. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/util/rbs_assert.h +20 -0
  585. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/util/rbs_buffer.h +83 -0
  586. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/util/rbs_constant_pool.h +155 -0
  587. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/util/rbs_encoding.h +282 -0
  588. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/util/rbs_unescape.h +24 -0
  589. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs.h +14 -0
  590. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ancestor_graph.rb +92 -0
  591. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/annotate/annotations.rb +199 -0
  592. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/annotate/formatter.rb +82 -0
  593. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  594. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/annotate/rdoc_source.rb +131 -0
  595. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/annotate.rb +8 -0
  596. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/annotation.rb +29 -0
  597. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/comment.rb +29 -0
  598. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/declarations.rb +472 -0
  599. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/directives.rb +49 -0
  600. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/members.rb +451 -0
  601. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/ruby/annotations.rb +451 -0
  602. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/ruby/comment_block.rb +247 -0
  603. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/ruby/declarations.rb +291 -0
  604. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  605. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  606. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/ruby/members.rb +762 -0
  607. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/type_param.rb +235 -0
  608. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/visitor.rb +137 -0
  609. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/buffer.rb +189 -0
  610. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/builtin_names.rb +58 -0
  611. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/cli/colored_io.rb +48 -0
  612. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/cli/diff.rb +84 -0
  613. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/cli/validate.rb +294 -0
  614. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/cli.rb +1253 -0
  615. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/cleaner.rb +38 -0
  616. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/config/lockfile.rb +92 -0
  617. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  618. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/config.rb +81 -0
  619. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/installer.rb +32 -0
  620. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/sources/base.rb +14 -0
  621. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/sources/git.rb +265 -0
  622. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/sources/local.rb +81 -0
  623. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/sources/rubygems.rb +48 -0
  624. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/sources/stdlib.rb +50 -0
  625. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/sources.rb +38 -0
  626. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection.rb +16 -0
  627. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/constant.rb +28 -0
  628. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/definition.rb +415 -0
  629. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/definition_builder/ancestor_builder.rb +681 -0
  630. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/definition_builder/method_builder.rb +295 -0
  631. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/definition_builder.rb +1057 -0
  632. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/diff.rb +131 -0
  633. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/environment/class_entry.rb +81 -0
  634. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/environment/module_entry.rb +91 -0
  635. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/environment/use_map.rb +77 -0
  636. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/environment.rb +1028 -0
  637. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/environment_loader.rb +167 -0
  638. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/environment_walker.rb +155 -0
  639. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/errors.rb +634 -0
  640. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/factory.rb +18 -0
  641. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/file_finder.rb +28 -0
  642. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/inline_parser/comment_association.rb +117 -0
  643. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/inline_parser.rb +568 -0
  644. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/location_aux.rb +170 -0
  645. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/locator.rb +247 -0
  646. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/method_type.rb +145 -0
  647. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/namespace.rb +154 -0
  648. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/parser/lex_result.rb +15 -0
  649. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/parser/token.rb +23 -0
  650. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/parser_aux.rb +144 -0
  651. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/helpers.rb +164 -0
  652. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/node_usage.rb +99 -0
  653. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/rb.rb +816 -0
  654. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/rbi.rb +793 -0
  655. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/runtime/helpers.rb +59 -0
  656. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/runtime/reflection.rb +19 -0
  657. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/runtime/value_object_generator.rb +278 -0
  658. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/runtime.rb +680 -0
  659. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/repository.rb +127 -0
  660. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/resolver/constant_resolver.rb +219 -0
  661. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/resolver/type_name_resolver.rb +167 -0
  662. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/rewriter.rb +70 -0
  663. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/sorter.rb +198 -0
  664. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/source.rb +99 -0
  665. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/substitution.rb +83 -0
  666. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/subtractor.rb +204 -0
  667. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/errors.rb +80 -0
  668. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/guaranteed.rb +30 -0
  669. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/hook.rb +212 -0
  670. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/observer.rb +19 -0
  671. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/setup.rb +84 -0
  672. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/setup_helper.rb +50 -0
  673. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/tester.rb +167 -0
  674. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/type_check.rb +457 -0
  675. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test.rb +112 -0
  676. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/type_alias_dependency.rb +100 -0
  677. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/type_alias_regularity.rb +126 -0
  678. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/type_name.rb +122 -0
  679. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/types.rb +1646 -0
  680. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/unit_test/convertibles.rb +177 -0
  681. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/unit_test/spy.rb +138 -0
  682. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/unit_test/type_assertions.rb +383 -0
  683. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/unit_test/with_aliases.rb +145 -0
  684. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/unit_test.rb +6 -0
  685. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/validator.rb +186 -0
  686. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/variance_calculator.rb +189 -0
  687. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/vendorer.rb +71 -0
  688. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/version.rb +5 -0
  689. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/wasm/deserializer.rb +213 -0
  690. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/wasm/location.rb +61 -0
  691. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/wasm/parser.rb +174 -0
  692. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/wasm/runtime.rb +211 -0
  693. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/wasm/serialization_schema.rb +111 -0
  694. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/writer.rb +424 -0
  695. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs.rb +117 -0
  696. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs_extension.so +0 -0
  697. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs_jars.rb +39 -0
  698. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rdoc/discover.rb +20 -0
  699. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rdoc_plugin/parser.rb +168 -0
  700. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/rbs.gemspec +77 -0
  701. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/annotation.json +14 -0
  702. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/comment.json +26 -0
  703. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/decls.json +326 -0
  704. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/function.json +98 -0
  705. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/location.json +56 -0
  706. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/members.json +266 -0
  707. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/methodType.json +50 -0
  708. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/typeParam.json +52 -0
  709. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/types.json +317 -0
  710. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ancestor_builder.rbs +163 -0
  711. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ancestor_graph.rbs +60 -0
  712. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/annotate/annotations.rbs +102 -0
  713. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/annotate/formatter.rbs +24 -0
  714. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/annotate/rdoc_annotater.rbs +85 -0
  715. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/annotate/rdoc_source.rbs +32 -0
  716. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/annotation.rbs +27 -0
  717. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ast/ruby/annotations.rbs +470 -0
  718. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ast/ruby/comment_block.rbs +127 -0
  719. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ast/ruby/declarations.rbs +158 -0
  720. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  721. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  722. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ast/ruby/members.rbs +198 -0
  723. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/buffer.rbs +108 -0
  724. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/builtin_names.rbs +44 -0
  725. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/cli/colored_io.rbs +15 -0
  726. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/cli/diff.rbs +15 -0
  727. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/cli/validate.rbs +47 -0
  728. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/cli.rbs +89 -0
  729. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/collection/cleaner.rbs +13 -0
  730. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/collection/config/lockfile.rbs +74 -0
  731. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/collection/config/lockfile_generator.rbs +68 -0
  732. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/collection/config.rbs +46 -0
  733. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/collection/installer.rbs +17 -0
  734. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/collection/sources.rbs +214 -0
  735. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/collection.rbs +4 -0
  736. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/comment.rbs +26 -0
  737. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/constant.rbs +21 -0
  738. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/declarations.rbs +274 -0
  739. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/definition.rbs +232 -0
  740. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/definition_builder.rbs +181 -0
  741. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/diff.rbs +28 -0
  742. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/directives.rbs +77 -0
  743. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/environment/class_entry.rbs +56 -0
  744. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/environment/module_entry.rbs +65 -0
  745. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/environment.rbs +286 -0
  746. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/environment_loader.rbs +111 -0
  747. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/environment_walker.rbs +65 -0
  748. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/errors.rbs +408 -0
  749. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/factory.rbs +5 -0
  750. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/file_finder.rbs +28 -0
  751. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/inline_parser/comment_association.rbs +71 -0
  752. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/inline_parser.rbs +126 -0
  753. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/location.rbs +135 -0
  754. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/locator.rbs +56 -0
  755. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/manifest.yaml +5 -0
  756. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/members.rbs +258 -0
  757. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/method_builder.rbs +89 -0
  758. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/method_types.rbs +58 -0
  759. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/namespace.rbs +161 -0
  760. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/parser.rbs +164 -0
  761. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/prototype/helpers.rbs +29 -0
  762. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/prototype/node_usage.rbs +20 -0
  763. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/prototype/rb.rbs +96 -0
  764. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/prototype/rbi.rbs +104 -0
  765. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/prototype/runtime.rbs +182 -0
  766. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/rbs.rbs +21 -0
  767. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/rdoc/rbs.rbs +67 -0
  768. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/repository.rbs +85 -0
  769. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/resolver/constant_resolver.rbs +92 -0
  770. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/resolver/context.rbs +34 -0
  771. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/resolver/type_name_resolver.rbs +61 -0
  772. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/rewriter.rbs +45 -0
  773. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/shims/bundler.rbs +38 -0
  774. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/shims/enumerable.rbs +5 -0
  775. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/shims/rubygems.rbs +19 -0
  776. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/sorter.rbs +41 -0
  777. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/source.rbs +48 -0
  778. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/substitution.rbs +48 -0
  779. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/subtractor.rbs +37 -0
  780. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/test/errors.rbs +52 -0
  781. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/test/guranteed.rbs +9 -0
  782. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/test/type_check.rbs +19 -0
  783. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/test.rbs +82 -0
  784. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/type_alias_dependency.rbs +53 -0
  785. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/type_alias_regularity.rbs +98 -0
  786. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/type_param.rbs +115 -0
  787. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/typename.rbs +89 -0
  788. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/types.rbs +588 -0
  789. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/unit_test/convertibles.rbs +154 -0
  790. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/unit_test/spy.rbs +22 -0
  791. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/unit_test/type_assertions.rbs +211 -0
  792. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/unit_test/with_aliases.rbs +136 -0
  793. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/use_map.rbs +35 -0
  794. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/util.rbs +9 -0
  795. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/validator.rbs +63 -0
  796. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/variance_calculator.rbs +87 -0
  797. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/vendorer.rbs +51 -0
  798. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/version.rbs +3 -0
  799. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/visitor.rbs +47 -0
  800. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/wasm/deserializer.rbs +66 -0
  801. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/wasm/serialization_schema.rbs +13 -0
  802. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/writer.rbs +127 -0
  803. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/ast.c +1644 -0
  804. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/lexer.c +3223 -0
  805. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/lexer.re +187 -0
  806. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/lexstate.c +222 -0
  807. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/location.c +31 -0
  808. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/parser.c +4318 -0
  809. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/serialize.c +965 -0
  810. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/string.c +41 -0
  811. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/util/rbs_allocator.c +171 -0
  812. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/util/rbs_assert.c +19 -0
  813. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/util/rbs_buffer.c +54 -0
  814. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/util/rbs_constant_pool.c +268 -0
  815. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/util/rbs_encoding.c +21454 -0
  816. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/util/rbs_unescape.c +167 -0
  817. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/abbrev/0/abbrev.rbs +66 -0
  818. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/abbrev/0/array.rbs +26 -0
  819. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/base64/0/base64.rbs +355 -0
  820. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/benchmark/0/benchmark.rbs +452 -0
  821. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  822. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  823. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  824. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/cgi/0/core.rbs +911 -0
  825. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/cgi/0/manifest.yaml +4 -0
  826. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/cgi-escape/0/escape.rbs +171 -0
  827. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/coverage/0/coverage.rbs +266 -0
  828. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/csv/0/csv.rbs +3776 -0
  829. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/csv/0/manifest.yaml +3 -0
  830. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/date/0/date.rbs +1598 -0
  831. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/date/0/date_time.rbs +617 -0
  832. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/date/0/time.rbs +26 -0
  833. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/dbm/0/dbm.rbs +421 -0
  834. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/delegate/0/delegator.rbs +188 -0
  835. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/delegate/0/kernel.rbs +47 -0
  836. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/delegate/0/simple_delegator.rbs +96 -0
  837. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  838. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/digest/0/digest.rbs +693 -0
  839. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/erb/0/erb.rbs +933 -0
  840. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/etc/0/etc.rbs +884 -0
  841. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/fileutils/0/fileutils.rbs +1753 -0
  842. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/find/0/find.rbs +49 -0
  843. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/forwardable/0/forwardable.rbs +271 -0
  844. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/io-console/0/io-console.rbs +414 -0
  845. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/ipaddr/0/ipaddr.rbs +431 -0
  846. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/json/0/json.rbs +1963 -0
  847. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/kconv/0/kconv.rbs +166 -0
  848. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/logger/0/formatter.rbs +45 -0
  849. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/logger/0/log_device.rbs +100 -0
  850. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/logger/0/logger.rbs +796 -0
  851. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/logger/0/manifest.yaml +2 -0
  852. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/logger/0/period.rbs +17 -0
  853. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/logger/0/severity.rbs +34 -0
  854. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/kernel.rbs +42 -0
  855. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  856. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  857. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  858. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  859. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  860. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  861. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  862. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/compress.rbs +13 -0
  863. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  864. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  865. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  866. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/guard.rbs +64 -0
  867. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/mock.rbs +64 -0
  868. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  869. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  870. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  871. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  872. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  873. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  874. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  875. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  876. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  877. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/result.rbs +28 -0
  878. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  879. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/skip.rbs +6 -0
  880. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  881. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  882. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/spec.rbs +11 -0
  883. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  884. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  885. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  886. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/test.rbs +69 -0
  887. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  888. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  889. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  890. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/unit.rbs +4 -0
  891. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest.rbs +115 -0
  892. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/monitor/0/monitor.rbs +363 -0
  893. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  894. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/net-http/0/manifest.yaml +3 -0
  895. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/net-http/0/net-http.rbs +5580 -0
  896. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/net-protocol/0/manifest.yaml +2 -0
  897. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  898. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/net-smtp/0/manifest.yaml +2 -0
  899. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  900. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/nkf/0/nkf.rbs +402 -0
  901. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/objspace/0/objspace.rbs +470 -0
  902. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/observable/0/observable.rbs +217 -0
  903. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/open-uri/0/manifest.yaml +4 -0
  904. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/open-uri/0/open-uri.rbs +433 -0
  905. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/open3/0/open3.rbs +606 -0
  906. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/openssl/0/manifest.yaml +3 -0
  907. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/openssl/0/openssl.rbs +12237 -0
  908. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/optparse/0/optparse.rbs +1734 -0
  909. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/pathname/0/pathname.rbs +36 -0
  910. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/pp/0/manifest.yaml +2 -0
  911. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/pp/0/pp.rbs +301 -0
  912. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  913. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/pstore/0/pstore.rbs +608 -0
  914. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/psych/0/core_ext.rbs +12 -0
  915. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/psych/0/dbm.rbs +237 -0
  916. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/psych/0/manifest.yaml +3 -0
  917. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/psych/0/psych.rbs +455 -0
  918. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/psych/0/store.rbs +57 -0
  919. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/pty/0/pty.rbs +240 -0
  920. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  921. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/code_object.rbs +52 -0
  922. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/comment.rbs +61 -0
  923. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/context.rbs +153 -0
  924. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/markup.rbs +117 -0
  925. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/options.rbs +76 -0
  926. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/parser.rbs +56 -0
  927. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/rdoc.rbs +393 -0
  928. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/ri.rbs +17 -0
  929. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/store.rbs +48 -0
  930. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/top_level.rbs +97 -0
  931. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/resolv/0/manifest.yaml +3 -0
  932. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/resolv/0/resolv.rbs +1787 -0
  933. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/ripper/0/ripper.rbs +1654 -0
  934. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/securerandom/0/manifest.yaml +2 -0
  935. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/securerandom/0/securerandom.rbs +49 -0
  936. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/shellwords/0/shellwords.rbs +229 -0
  937. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/singleton/0/singleton.rbs +137 -0
  938. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/addrinfo.rbs +666 -0
  939. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/basic_socket.rbs +590 -0
  940. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/constants.rbs +2295 -0
  941. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/ip_socket.rbs +94 -0
  942. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/socket.rbs +4170 -0
  943. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/socket_error.rbs +5 -0
  944. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/tcp_server.rbs +192 -0
  945. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/tcp_socket.rbs +87 -0
  946. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/udp_socket.rbs +133 -0
  947. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/unix_server.rbs +169 -0
  948. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/unix_socket.rbs +172 -0
  949. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/stringio/0/stringio.rbs +1682 -0
  950. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/strscan/0/string_scanner.rbs +1648 -0
  951. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/tempfile/0/manifest.yaml +3 -0
  952. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/tempfile/0/tempfile.rbs +483 -0
  953. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/time/0/time.rbs +434 -0
  954. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/timeout/0/timeout.rbs +132 -0
  955. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  956. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/tsort/0/cyclic.rbs +8 -0
  957. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/tsort/0/interfaces.rbs +20 -0
  958. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/tsort/0/tsort.rbs +410 -0
  959. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/common.rbs +621 -0
  960. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/file.rbs +118 -0
  961. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/ftp.rbs +13 -0
  962. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/generic.rbs +1111 -0
  963. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/http.rbs +104 -0
  964. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/https.rbs +14 -0
  965. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/ldap.rbs +230 -0
  966. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/ldaps.rbs +14 -0
  967. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/mailto.rbs +92 -0
  968. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  969. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  970. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/ws.rbs +13 -0
  971. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/wss.rbs +9 -0
  972. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/yaml/0/manifest.yaml +2 -0
  973. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/yaml/0/yaml.rbs +1 -0
  974. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/buf_error.rbs +10 -0
  975. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/data_error.rbs +10 -0
  976. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/deflate.rbs +211 -0
  977. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/error.rbs +20 -0
  978. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  979. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  980. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  981. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  982. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/gzip_file.rbs +156 -0
  983. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/gzip_reader.rbs +293 -0
  984. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/gzip_writer.rbs +169 -0
  985. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/inflate.rbs +180 -0
  986. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/mem_error.rbs +10 -0
  987. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/need_dict.rbs +13 -0
  988. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/stream_end.rbs +11 -0
  989. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/stream_error.rbs +11 -0
  990. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/version_error.rbs +11 -0
  991. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/zlib.rbs +449 -0
  992. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/zstream.rbs +200 -0
  993. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/wasm/README.md +109 -0
  994. data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/wasm/rbs_wasm.c +479 -0
  995. data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/LICENSE +19 -0
  996. data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/README.md +135 -0
  997. data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/datetime.rb +54 -0
  998. data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/dumper.rb +182 -0
  999. data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/errors.rb +17 -0
  1000. data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/inline_table.rb +18 -0
  1001. data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/keyvalue.rb +45 -0
  1002. data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/parser.rb +296 -0
  1003. data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/string.rb +41 -0
  1004. data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/table.rb +34 -0
  1005. data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/table_array.rb +43 -0
  1006. data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/version.rb +5 -0
  1007. data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb.rb +90 -0
  1008. data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/Gemfile +4 -0
  1009. data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/LICENSE.txt +22 -0
  1010. data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/README.md +72 -0
  1011. data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/Rakefile +10 -0
  1012. data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/bin/console +14 -0
  1013. data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/bin/setup +8 -0
  1014. data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb +455 -0
  1015. data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/tsort.gemspec +29 -0
  1016. data/vendor/bundle/ruby/3.4.0/specifications/drb-2.2.3.gemspec +22 -0
  1017. data/vendor/bundle/ruby/3.4.0/specifications/logger-1.7.0.gemspec +22 -0
  1018. data/vendor/bundle/ruby/3.4.0/specifications/minitest-6.0.6.gemspec +35 -0
  1019. data/vendor/bundle/ruby/3.4.0/specifications/prism-1.9.0.gemspec +24 -0
  1020. data/vendor/bundle/ruby/3.4.0/specifications/rake-13.4.2.gemspec +26 -0
  1021. data/vendor/bundle/ruby/3.4.0/specifications/rake-compiler-1.3.2.gemspec +33 -0
  1022. data/vendor/bundle/ruby/3.4.0/specifications/rake-compiler-dock-1.12.0.gemspec +28 -0
  1023. data/vendor/bundle/ruby/3.4.0/specifications/rb_sys-0.9.130.gemspec +29 -0
  1024. data/vendor/bundle/ruby/3.4.0/specifications/rbs-4.2.0.gemspec +33 -0
  1025. data/vendor/bundle/ruby/3.4.0/specifications/toml-rb-6.0.0.gemspec +27 -0
  1026. data/vendor/bundle/ruby/3.4.0/specifications/tsort-0.2.0.gemspec +23 -0
  1027. data/vendor/cache/Cargo.toml +21 -0
  1028. data/vendor/cache/LICENSE +21 -0
  1029. data/vendor/cache/README.md +5 -0
  1030. data/vendor/cache/src/hash.rs +85 -0
  1031. data/vendor/cache/src/lib.rs +751 -0
  1032. data/vendor/cache/src/loom_tests.rs +340 -0
  1033. data/vendor/cache/src/s3fifo.rs +648 -0
  1034. data/vendor/cache/src/sync.rs +25 -0
  1035. data/vendor/cache/src/tests.rs +260 -0
  1036. data/vendor/compaction/Cargo.toml +32 -0
  1037. data/vendor/compaction/LICENSE +21 -0
  1038. data/vendor/compaction/README.md +5 -0
  1039. data/vendor/compaction/src/blob.rs +478 -0
  1040. data/vendor/compaction/src/cursor.rs +700 -0
  1041. data/vendor/compaction/src/gc.rs +802 -0
  1042. data/vendor/compaction/src/job.rs +861 -0
  1043. data/vendor/compaction/src/lib.rs +102 -0
  1044. data/vendor/compaction/src/merge.rs +995 -0
  1045. data/vendor/compaction/src/picker.rs +681 -0
  1046. data/vendor/compaction/src/resolver.rs +1346 -0
  1047. data/vendor/engine/Cargo.toml +56 -0
  1048. data/vendor/engine/LICENSE +21 -0
  1049. data/vendor/engine/README.md +5 -0
  1050. data/vendor/engine/src/admission.rs +421 -0
  1051. data/vendor/engine/src/catalog.rs +1233 -0
  1052. data/vendor/engine/src/check.rs +1386 -0
  1053. data/vendor/engine/src/clock.rs +244 -0
  1054. data/vendor/engine/src/clock_loom.rs +482 -0
  1055. data/vendor/engine/src/close_gate.rs +325 -0
  1056. data/vendor/engine/src/compact.rs +1509 -0
  1057. data/vendor/engine/src/engine/hooks.rs +1654 -0
  1058. data/vendor/engine/src/engine/info.rs +229 -0
  1059. data/vendor/engine/src/engine.rs +6114 -0
  1060. data/vendor/engine/src/error.rs +490 -0
  1061. data/vendor/engine/src/feed.rs +960 -0
  1062. data/vendor/engine/src/feed_reader.rs +1600 -0
  1063. data/vendor/engine/src/flush.rs +839 -0
  1064. data/vendor/engine/src/flushed_roots.rs +158 -0
  1065. data/vendor/engine/src/flushed_through_loom.rs +77 -0
  1066. data/vendor/engine/src/health.rs +201 -0
  1067. data/vendor/engine/src/large.rs +372 -0
  1068. data/vendor/engine/src/large_settle.rs +201 -0
  1069. data/vendor/engine/src/lib.rs +112 -0
  1070. data/vendor/engine/src/load_slot.rs +324 -0
  1071. data/vendor/engine/src/maintenance.rs +935 -0
  1072. data/vendor/engine/src/manifest/flight.rs +563 -0
  1073. data/vendor/engine/src/manifest.rs +1516 -0
  1074. data/vendor/engine/src/nonblocking.rs +603 -0
  1075. data/vendor/engine/src/options.rs +334 -0
  1076. data/vendor/engine/src/position.rs +125 -0
  1077. data/vendor/engine/src/purge_guard.rs +220 -0
  1078. data/vendor/engine/src/read/keys.rs +1049 -0
  1079. data/vendor/engine/src/read/knn.rs +423 -0
  1080. data/vendor/engine/src/read/reduce.rs +2057 -0
  1081. data/vendor/engine/src/read/traverse.rs +1013 -0
  1082. data/vendor/engine/src/read.rs +2429 -0
  1083. data/vendor/engine/src/row_cache.rs +1101 -0
  1084. data/vendor/engine/src/shard/tablets.rs +3582 -0
  1085. data/vendor/engine/src/shard.rs +12215 -0
  1086. data/vendor/engine/src/snapshot.rs +1429 -0
  1087. data/vendor/engine/src/source.rs +1379 -0
  1088. data/vendor/engine/src/timer_state.rs +226 -0
  1089. data/vendor/engine/src/waker.rs +124 -0
  1090. data/vendor/engine/src/watermark_waiters.rs +674 -0
  1091. data/vendor/engine/src/write.rs +1321 -0
  1092. data/vendor/format/Cargo.toml +40 -0
  1093. data/vendor/format/LICENSE +21 -0
  1094. data/vendor/format/README.md +5 -0
  1095. data/vendor/format/src/blob.rs +101 -0
  1096. data/vendor/format/src/block.rs +1120 -0
  1097. data/vendor/format/src/bloom.rs +456 -0
  1098. data/vendor/format/src/buckets.rs +552 -0
  1099. data/vendor/format/src/bytes.rs +101 -0
  1100. data/vendor/format/src/checksum.rs +132 -0
  1101. data/vendor/format/src/compress.rs +196 -0
  1102. data/vendor/format/src/cursor.rs +110 -0
  1103. data/vendor/format/src/distance.rs +598 -0
  1104. data/vendor/format/src/error.rs +93 -0
  1105. data/vendor/format/src/exact.rs +602 -0
  1106. data/vendor/format/src/feed.rs +285 -0
  1107. data/vendor/format/src/filter.rs +157 -0
  1108. data/vendor/format/src/half.rs +182 -0
  1109. data/vendor/format/src/hash.rs +127 -0
  1110. data/vendor/format/src/hll.rs +500 -0
  1111. data/vendor/format/src/ids.rs +95 -0
  1112. data/vendor/format/src/key.rs +620 -0
  1113. data/vendor/format/src/kind_params.rs +101 -0
  1114. data/vendor/format/src/lib.rs +54 -0
  1115. data/vendor/format/src/manifest.rs +1287 -0
  1116. data/vendor/format/src/roaring.rs +865 -0
  1117. data/vendor/format/src/scan.rs +297 -0
  1118. data/vendor/format/src/shm.rs +805 -0
  1119. data/vendor/format/src/sst.rs +233 -0
  1120. data/vendor/format/src/superblock.rs +345 -0
  1121. data/vendor/format/src/value.rs +163 -0
  1122. data/vendor/format/src/varint.rs +87 -0
  1123. data/vendor/format/src/vector.rs +936 -0
  1124. data/vendor/format/src/version.rs +92 -0
  1125. data/vendor/format/src/wal.rs +999 -0
  1126. data/vendor/io/Cargo.toml +29 -0
  1127. data/vendor/io/LICENSE +21 -0
  1128. data/vendor/io/README.md +5 -0
  1129. data/vendor/io/src/async_poll.rs +44 -0
  1130. data/vendor/io/src/buf.rs +694 -0
  1131. data/vendor/io/src/completion.rs +444 -0
  1132. data/vendor/io/src/error.rs +110 -0
  1133. data/vendor/io/src/file.rs +206 -0
  1134. data/vendor/io/src/lib.rs +53 -0
  1135. data/vendor/io/src/nowait.rs +256 -0
  1136. data/vendor/io/src/os/mod.rs +149 -0
  1137. data/vendor/io/src/os/unix.rs +897 -0
  1138. data/vendor/io/src/os/windows.rs +552 -0
  1139. data/vendor/io/src/own.rs +257 -0
  1140. data/vendor/io/src/pread.rs +854 -0
  1141. data/vendor/io/src/ring_wake.rs +113 -0
  1142. data/vendor/io/src/shared.rs +410 -0
  1143. data/vendor/io/src/sim.rs +1545 -0
  1144. data/vendor/io/src/sys.rs +214 -0
  1145. data/vendor/io/src/uring.rs +1839 -0
  1146. data/vendor/io/src/vfs.rs +154 -0
  1147. data/vendor/memory/Cargo.toml +34 -0
  1148. data/vendor/memory/LICENSE +21 -0
  1149. data/vendor/memory/README.md +11 -0
  1150. data/vendor/memory/src/consolidate.rs +640 -0
  1151. data/vendor/memory/src/dedup.rs +231 -0
  1152. data/vendor/memory/src/error.rs +131 -0
  1153. data/vendor/memory/src/feed_loop.rs +572 -0
  1154. data/vendor/memory/src/forget.rs +724 -0
  1155. data/vendor/memory/src/hooks.rs +109 -0
  1156. data/vendor/memory/src/ivf.rs +204 -0
  1157. data/vendor/memory/src/layout.rs +340 -0
  1158. data/vendor/memory/src/lib.rs +61 -0
  1159. data/vendor/memory/src/recall.rs +1182 -0
  1160. data/vendor/memory/src/store.rs +1785 -0
  1161. data/vendor/memory/src/watch.rs +339 -0
  1162. data/vendor/memtable/Cargo.toml +24 -0
  1163. data/vendor/memtable/LICENSE +21 -0
  1164. data/vendor/memtable/README.md +5 -0
  1165. data/vendor/memtable/src/lib.rs +1658 -0
  1166. data/vendor/memtable/src/loom_tests.rs +274 -0
  1167. data/vendor/memtable/src/mem.rs +344 -0
  1168. data/vendor/memtable/src/tests.rs +1061 -0
  1169. data/vendor/pager/Cargo.toml +23 -0
  1170. data/vendor/pager/LICENSE +21 -0
  1171. data/vendor/pager/README.md +5 -0
  1172. data/vendor/pager/src/alloc.rs +1008 -0
  1173. data/vendor/pager/src/lib.rs +1710 -0
  1174. data/vendor/pigeonhole/Cargo.toml +42 -0
  1175. data/vendor/pigeonhole/LICENSE +21 -0
  1176. data/vendor/pigeonhole/README.md +99 -0
  1177. data/vendor/pigeonhole/src/cell.rs +829 -0
  1178. data/vendor/pigeonhole/src/check.rs +368 -0
  1179. data/vendor/pigeonhole/src/db.rs +2324 -0
  1180. data/vendor/pigeonhole/src/doc_support.rs +89 -0
  1181. data/vendor/pigeonhole/src/error.rs +257 -0
  1182. data/vendor/pigeonhole/src/feed.rs +696 -0
  1183. data/vendor/pigeonhole/src/info.rs +425 -0
  1184. data/vendor/pigeonhole/src/lib.rs +202 -0
  1185. data/vendor/pigeonhole/src/merge.rs +135 -0
  1186. data/vendor/pigeonhole/src/metrics.rs +476 -0
  1187. data/vendor/pigeonhole/src/nonblocking.rs +666 -0
  1188. data/vendor/pigeonhole/src/options.rs +2075 -0
  1189. data/vendor/pigeonhole/src/read/budget.rs +584 -0
  1190. data/vendor/pigeonhole/src/read.rs +2463 -0
  1191. data/vendor/pigeonhole/src/recovery.rs +876 -0
  1192. data/vendor/pigeonhole/src/retry.rs +358 -0
  1193. data/vendor/pigeonhole/src/set.rs +103 -0
  1194. data/vendor/pigeonhole/src/table.rs +861 -0
  1195. data/vendor/pigeonhole/src/vector.rs +351 -0
  1196. data/vendor/pigeonhole/src/write.rs +2815 -0
  1197. data/vendor/runtime/Cargo.toml +21 -0
  1198. data/vendor/runtime/LICENSE +21 -0
  1199. data/vendor/runtime/README.md +5 -0
  1200. data/vendor/runtime/src/completion.rs +629 -0
  1201. data/vendor/runtime/src/drivers.rs +1175 -0
  1202. data/vendor/runtime/src/lib.rs +1546 -0
  1203. data/vendor/runtime/src/pool.rs +992 -0
  1204. data/vendor/runtime/src/sched.rs +809 -0
  1205. data/vendor/runtime/src/signal.rs +532 -0
  1206. data/vendor/runtime/src/submit_gate.rs +144 -0
  1207. data/vendor/shm/Cargo.toml +24 -0
  1208. data/vendor/shm/LICENSE +21 -0
  1209. data/vendor/shm/README.md +5 -0
  1210. data/vendor/shm/src/lib.rs +427 -0
  1211. data/vendor/shm/src/lock.rs +153 -0
  1212. data/vendor/shm/src/region.rs +1609 -0
  1213. data/vendor/sst/Cargo.toml +26 -0
  1214. data/vendor/sst/LICENSE +21 -0
  1215. data/vendor/sst/README.md +5 -0
  1216. data/vendor/sst/src/blob.rs +380 -0
  1217. data/vendor/sst/src/iter.rs +803 -0
  1218. data/vendor/sst/src/lib.rs +695 -0
  1219. data/vendor/sst/src/reader.rs +814 -0
  1220. data/vendor/sst/src/writer.rs +596 -0
  1221. data/vendor/text/Cargo.toml +26 -0
  1222. data/vendor/text/LICENSE +21 -0
  1223. data/vendor/text/README.md +9 -0
  1224. data/vendor/text/src/error.rs +108 -0
  1225. data/vendor/text/src/fuzzy.rs +265 -0
  1226. data/vendor/text/src/highlight.rs +236 -0
  1227. data/vendor/text/src/index.rs +1152 -0
  1228. data/vendor/text/src/layout.rs +424 -0
  1229. data/vendor/text/src/lib.rs +75 -0
  1230. data/vendor/text/src/maxscore.rs +658 -0
  1231. data/vendor/text/src/query.rs +450 -0
  1232. data/vendor/text/src/search.rs +569 -0
  1233. data/vendor/text/src/sloppy.rs +460 -0
  1234. data/vendor/text/src/tokenizer.rs +163 -0
  1235. data/vendor/vector/Cargo.toml +28 -0
  1236. data/vendor/vector/LICENSE +21 -0
  1237. data/vendor/vector/README.md +9 -0
  1238. data/vendor/vector/src/error.rs +63 -0
  1239. data/vendor/vector/src/half.rs +167 -0
  1240. data/vendor/vector/src/hooks.rs +135 -0
  1241. data/vendor/vector/src/index.rs +2690 -0
  1242. data/vendor/vector/src/layout.rs +102 -0
  1243. data/vendor/vector/src/lib.rs +52 -0
  1244. data/vendor/vector/src/point.rs +500 -0
  1245. data/vendor/vector/src/rebalancer.rs +200 -0
  1246. data/vendor/vector/src/registry.rs +81 -0
  1247. data/vendor/wal/Cargo.toml +25 -0
  1248. data/vendor/wal/LICENSE +21 -0
  1249. data/vendor/wal/README.md +5 -0
  1250. data/vendor/wal/src/feed.rs +610 -0
  1251. data/vendor/wal/src/foreground.rs +122 -0
  1252. data/vendor/wal/src/lib.rs +458 -0
  1253. data/vendor/wal/src/mem.rs +166 -0
  1254. data/vendor/wal/src/recovery.rs +426 -0
  1255. data/vendor/wal/src/stream.rs +2382 -0
  1256. metadata +1310 -0
@@ -0,0 +1,1654 @@
1
+ //! Test hooks: the `test-hooks` feature, which only the engine's own tests and benches
2
+ //! enable (its dev-dependency on itself). Everything a test reaches into the engine with
3
+ //! is here: the `#[doc(hidden)]` `Engine` methods, the types they return, and the state
4
+ //! they keep in `Shared::hooks` and `ShardMetrics::hooks`.
5
+ //!
6
+ //! The rules:
7
+ //! - Every hook is used by a committed test; delete one when its last test goes.
8
+ //! - A hook does nothing until a test sets it: callbacks run once, flags start clear.
9
+ //! `take_appended` and `take_compactions` record only after a test turns recording on
10
+ //! with `record_history` (D164's follow-up, #148): with workspace feature unification
11
+ //! every `test-hooks` build would otherwise grow those vectors for a whole run nobody
12
+ //! reads. The [`ShardCounters`] are plain counters and always count. None changes what
13
+ //! the engine does.
14
+ //! - Prefer a public or application-owned seam (`EngineShard` over `SimVfs`,
15
+ //! `Engine::shard_stats`) to a new hook.
16
+ //!
17
+ //! The `#[cfg(feature = "test-hooks")]` sites elsewhere in the crate only run, check or
18
+ //! record into this state; `manifest.rs` keeps the three helpers that need its private
19
+ //! commit state (`race_window`, `parked`, `parks`).
20
+
21
+ use std::collections::BTreeMap;
22
+ use std::path::Path;
23
+ use std::sync::atomic::{AtomicBool, AtomicU16, AtomicU64, AtomicUsize, Ordering};
24
+ use std::sync::{Arc, Mutex, PoisonError};
25
+
26
+ use pigeonhole_compaction::MergeRegistry;
27
+ use pigeonhole_format::{
28
+ Durability, FamilyId, Lsn, ManifestVersion, Seqno, StreamId, TableId, TabletId, Timestamp,
29
+ };
30
+ use pigeonhole_pager::Pager;
31
+ use pigeonhole_runtime::{ShardId, TaskWaker, Waiter, completion};
32
+
33
+ pub use super::PendingMaintenance;
34
+ pub use crate::compact::CompactionRecord;
35
+
36
+ use super::Engine;
37
+ use crate::manifest;
38
+ use crate::shard::ShardMsg;
39
+ use crate::snapshot::{Snapshot, TabletMap};
40
+ use crate::{Error, Result};
41
+
42
+ /// Where a one-shot test callback runs (`Engine::on_next`).
43
+ #[derive(Debug, Clone, Copy, PartialEq, Eq)]
44
+ pub enum HookSite {
45
+ /// At the start of the next view publish (a shard publishing its memtables or a
46
+ /// manifest commit), before that publish takes the publish lock: where another thread's
47
+ /// publish can land in between.
48
+ ViewPublish,
49
+ /// On the calling thread of the next writer `snapshot()`, after it pinned its seqno and
50
+ /// before it loads the view: where a test publishes a flush in between (#315 review).
51
+ SnapshotViewLoad,
52
+ /// On the calling thread of the next unpinned read as of now (`get_latest`,
53
+ /// `read_row_latest_into`), after its first visible-seqno read and before it loads the
54
+ /// view. The callback may set this site again, to run in the read's next try too.
55
+ LatestViewLoad,
56
+ /// At the start of the next `shrink` round, before it reclaims and checks what pins
57
+ /// retired space: where a test releases a pin between rounds (#1107).
58
+ ShrinkRound,
59
+ /// In the next `shrink` round, after it has read the catalog and before it relocates
60
+ /// anything: where a compaction or `drop_table` can commit under it.
61
+ ShrinkRelocates,
62
+ /// On the thread that `Engine::wait_failed` woke with a failure, before it returns:
63
+ /// where the recovery supervisor has not marked the failure yet, and a `close()` can
64
+ /// reach the failed engine first (D265).
65
+ FailureWake,
66
+ /// On the calling thread of the next `backup`, right after it released its snapshot's
67
+ /// memtables and before it merges the SSTs: where a test writes past the arena while
68
+ /// the backup still runs (#262).
69
+ BackupReleasedMemtables,
70
+ /// In the next `shrink` round that commits, after it has written its copies and before
71
+ /// it commits them: where a `drop_table` makes a copy one to abandon.
72
+ ShrinkCommits,
73
+ /// Reader processes: in the next snapshot, between reading the view record from shared
74
+ /// memory and loading the catalog of its manifest version.
75
+ ReaderViewRecord,
76
+ /// Reader processes: when a snapshot found the durable root at the view record's
77
+ /// manifest version and is about to read that manifest.
78
+ ReaderManifestLoad,
79
+ /// Reader processes: in the next change-feed poll, after its stale-attachment check and
80
+ /// before it reads the streams: where a test restarts the writer in between (D310 PR 4,
81
+ /// simp724's B2).
82
+ ReaderFeedReads,
83
+ /// On the coordinator's shard, right after it answered `OutcomeUnknown` for a
84
+ /// cross-shard commit whose share apply failed: where a caller that heard the answer
85
+ /// commits again while the shard thread is still inside the handler (#1358).
86
+ FailedShareAnswered,
87
+ }
88
+
89
+ /// A one-shot test callback.
90
+ type Callback = Box<dyn FnOnce() + Send>;
91
+
92
+ /// The one-shot callbacks tests set, at most one per site (`Hooks::sites`).
93
+ #[derive(Default)]
94
+ pub(crate) struct Sites(Mutex<Vec<(HookSite, Callback)>>);
95
+
96
+ impl Sites {
97
+ /// Sets the callback for `site`, replacing one that has not run.
98
+ pub(crate) fn set(&self, site: HookSite, f: Callback) {
99
+ let mut v = self.0.lock().unwrap_or_else(PoisonError::into_inner);
100
+ v.retain(|(s, _)| *s != site);
101
+ v.push((site, f));
102
+ }
103
+
104
+ /// Runs `site`'s callback if one is set (outside the lock).
105
+ pub(crate) fn run(&self, site: HookSite) {
106
+ let f = {
107
+ let mut v = self.0.lock().unwrap_or_else(PoisonError::into_inner);
108
+ let i = v.iter().position(|(s, _)| *s == site);
109
+ i.map(|i| v.swap_remove(i).1)
110
+ };
111
+ if let Some(f) = f {
112
+ f();
113
+ }
114
+ }
115
+ }
116
+
117
+ /// A fault or forced path a test switches on (`Engine::inject`). The `Next` ones are
118
+ /// one-shot: the site that takes one clears it.
119
+ #[derive(Debug, Clone, Copy, PartialEq, Eq)]
120
+ pub enum Fault {
121
+ /// While on, the manifest writer refuses every batch made only of WAL checkpoints with
122
+ /// `NoSpace`, through the path a snapshot rewrite that finds no space takes (nothing
123
+ /// written, the writer stays usable).
124
+ RefuseCheckpoints = 0,
125
+ /// While on, manifest commits drop every `SstBlobRefs` edit and the catalog keeps no
126
+ /// blob references, so the file looks as one written before tag 13 (#240).
127
+ OmitBlobRefs = 1,
128
+ /// Fails the next apply after its WAL append, of a single-shard batch or of a
129
+ /// cross-shard share: it is not applied, and the shard poisons itself, as an arena
130
+ /// miscount would (#230). The commit returns `OutcomeUnknown` either way: a single-shard
131
+ /// one's record replays at the next open, and a cross-shard one decided to commit is
132
+ /// settled there too (D227, ICR 0038, ICR 0040).
133
+ NextApply = 2,
134
+ /// Fails the next freeze a tablet change (a split, merge or move) makes of its tablets'
135
+ /// memtables: the shard poisons itself, as an arena miscount would, and the instance
136
+ /// reports the failure (ICR 0040).
137
+ NextTabletFreeze = 3,
138
+ /// The next commit group's second member waits for room as if the arena were full: the
139
+ /// stall path freezes memtables after the group's first member was admitted (#315
140
+ /// review).
141
+ NextRoomWait = 4,
142
+ /// The next freeze finds no chunk for a fresh memtable, as a starved arena would give
143
+ /// it: a closing shard then flushes the active memtable in place (#111, #838).
144
+ NextFreezeStarved = 5,
145
+ /// As `NextRoomWait`, for the group's third member: two members are admitted first, so a
146
+ /// group can wait for room with two singles on one row admitted, ranked 0 and 1 (#900).
147
+ ThirdRoomWait = 6,
148
+ /// The next commit group's second append fails as an I/O error would, before anything of
149
+ /// that member reaches the stream's buffer; the first member is appended (and written and
150
+ /// synced if it is a `Sync` one). The shard poisons itself (#921, #925).
151
+ SecondAppend = 7,
152
+ /// The next commit group's view publish (`publish_memtables`, after its write and apply)
153
+ /// fails: every member of the group fails with `Corruption` and the shard poisons itself.
154
+ /// A Buffered PREPARE in it has voted already (D279), so its commit ends `OutcomeUnknown`.
155
+ NextGroupPublish = 8,
156
+ /// While on, a coordinator holds every PREPARE it would send another shard (in
157
+ /// `Hooks::held_prepares`) instead of sending it, until `Engine::release_held_prepares`
158
+ /// sends them. Hand-driven tests use it to build an arrival order explicitly, rather
159
+ /// than from the order messages were queued in: a participant's turn between the
160
+ /// coordinator reserving a commit's seqno and the PREPARE reaching it.
161
+ HoldPrepares = 9,
162
+ /// While on, a coordinator sets its DECISION members aside instead of admitting them
163
+ /// (D286's tests: an early `Decide` is applied while its DECISION is unwritten). Switch
164
+ /// it off with `Engine::release_held_decisions`, which kicks the shards: the held
165
+ /// DECISIONs rejoin the end of their shard's queue at its next group. That reorders them
166
+ /// after anything queued meanwhile, so don't use it to reason about group order.
167
+ HoldDecisionRecords = 10,
168
+ /// As `NextApply`, but only a single-shard batch's apply takes it: a cross-shard share
169
+ /// applies as usual. For tests that poison a shard with a share still to apply somewhere,
170
+ /// which would otherwise take the fault in its place (#998).
171
+ NextSingleApply = 11,
172
+ /// While on, a coordinator holds every commit `Decide` it would send another shard (in
173
+ /// `Hooks::held_decides`) instead of sending it, until `Engine::release_held_decides`
174
+ /// sends them: a participant's turn between a share's decision and its apply there
175
+ /// (D314's ordering tests).
176
+ HoldDecides = 12,
177
+ }
178
+
179
+ /// The faults on, a bit per `Fault` (`Hooks::faults`).
180
+ #[derive(Default)]
181
+ pub(crate) struct Faults(AtomicU16);
182
+
183
+ impl Faults {
184
+ fn bit(f: Fault) -> u16 {
185
+ 1 << (f as u16)
186
+ }
187
+
188
+ /// Switches `f` on or off.
189
+ fn set(&self, f: Fault, on: bool) {
190
+ if on {
191
+ self.0.fetch_or(Self::bit(f), Ordering::AcqRel);
192
+ } else {
193
+ self.0.fetch_and(!Self::bit(f), Ordering::AcqRel);
194
+ }
195
+ }
196
+
197
+ /// Whether `f` is on.
198
+ pub(crate) fn on(&self, f: Fault) -> bool {
199
+ self.0.load(Ordering::Acquire) & Self::bit(f) != 0
200
+ }
201
+
202
+ /// Whether `f` was on, switching it off (a one-shot fault's site).
203
+ pub(crate) fn take(&self, f: Fault) -> bool {
204
+ self.0.fetch_and(!Self::bit(f), Ordering::AcqRel) & Self::bit(f) != 0
205
+ }
206
+ }
207
+
208
+ /// The engine-wide hook state (`Shared::hooks`).
209
+ #[derive(Default)]
210
+ pub(crate) struct Hooks {
211
+ /// The one-shot callbacks tests set at named sites (`Engine::on_next`).
212
+ pub sites: Sites,
213
+ /// The error of a refused arena discard (`Shared::try_discard_arenas`, D265).
214
+ pub arena_discard_error: Mutex<Option<String>>,
215
+ /// The faults and forced paths tests switch on (`Engine::inject`).
216
+ pub faults: Faults,
217
+ /// PREPAREs held by `Fault::HoldPrepares`, with their participant, in send order
218
+ /// (`Engine::release_held_prepares`).
219
+ pub held_prepares: Mutex<Vec<(pigeonhole_runtime::ShardId, crate::shard::ShardMsg)>>,
220
+ /// Commit `Decide`s held by `Fault::HoldDecides`, with their participant, in send order
221
+ /// (`Engine::release_held_decides`).
222
+ pub held_decides: Mutex<Vec<(pigeonhole_runtime::ShardId, crate::shard::ShardMsg)>>,
223
+ /// Whether `compactions` and `appended` record (`Engine::record_history`); off until a
224
+ /// test turns it on.
225
+ pub record: AtomicBool,
226
+ /// Every committed compaction (`Engine::take_compactions`; the records are never built
227
+ /// without the feature, 5-6 6.2).
228
+ pub compactions: Mutex<Vec<CompactionRecord>>,
229
+ /// Every WAL record appended, in append order (`Engine::take_appended`).
230
+ pub appended: Mutex<Vec<AppendedRecord>>,
231
+ /// The seqnos of cross-shard attempts a participant refused (`Moved`, `Room` or
232
+ /// `PendingOverlap`),
233
+ /// whose commit was retried under a new seqno or gave up (`Engine::take_refused_attempts`).
234
+ pub refused: Mutex<Vec<Seqno>>,
235
+ /// PREPAREs refused for arena room (D245, `Engine::room_refusals`).
236
+ pub room_refusals: AtomicU64,
237
+ /// Arms the manifest queue's release window (`manifest::race_window`,
238
+ /// `Engine::probe_manifest_release_window`), and the waiter of the request it pushed.
239
+ pub manifest_race: AtomicBool,
240
+ pub manifest_race_waiter: Mutex<Option<Waiter<Result<ManifestVersion>>>>,
241
+ /// Threads that parked in `manifest::commit_req_from_thread`, counted after their last
242
+ /// look and just before `park` (`Engine::manifest_thread_parks`).
243
+ pub manifest_thread_parks: AtomicUsize,
244
+ /// Values `large::separate` wrote to a blob file at commit time (#230, #306;
245
+ /// `Engine::commit_separations`).
246
+ pub commit_separations: AtomicU64,
247
+ /// Parks background manifest commits before `end` (`manifest::parked`,
248
+ /// `Engine::park_manifest_commits`), and the parked pump's waker.
249
+ pub manifest_park: AtomicBool,
250
+ pub manifest_parked: Mutex<Option<TaskWaker>>,
251
+ /// Holds each compaction job before its first slice (`Engine::hold_compactions`), and
252
+ /// the held jobs' ids and wakers, oldest first (`Engine::release_held_compaction` takes
253
+ /// one to let it run; clearing the hold takes them all).
254
+ pub compaction_hold: AtomicBool,
255
+ pub compaction_held: Mutex<Vec<(u64, TaskWaker)>>,
256
+ pub compaction_hold_ids: AtomicU64,
257
+ /// Compaction jobs that finished and submitted their commit (`Engine::
258
+ /// compaction_commits_submitted`, D284's tests).
259
+ pub compaction_commits: AtomicU64,
260
+ /// Compaction jobs run a few units per slice (`Engine::compaction_tiny_slices`).
261
+ pub compaction_tiny_slices: AtomicBool,
262
+ /// A deliberate fault in the flush GC (`Engine::mutate_flush_gc`, #287): 1 treats the
263
+ /// guard as always holding, 2 drops the snapshot floor (no live read point is kept), 3
264
+ /// lets writes pass guarded flushes and compactions without voiding them.
265
+ pub flush_gc_mutation: std::sync::atomic::AtomicU8,
266
+ }
267
+
268
+ /// A deliberate fault in the flush GC, for tests that check the oracle catches it
269
+ /// (`Engine::mutate_flush_gc`, #287).
270
+ #[derive(Debug, Clone, Copy, PartialEq, Eq)]
271
+ #[doc(hidden)]
272
+ pub enum FlushGcMutation {
273
+ /// The real GC.
274
+ None,
275
+ /// Purge versions beyond `max_versions` even when another source holds a delete.
276
+ DropGuard,
277
+ /// Keep no live snapshot's versions (only the latest read point).
278
+ DropSnapshotFloor,
279
+ /// A delete arriving while a guarded flush is in flight, or a write below a running
280
+ /// bottommost compaction's bound (#316), does not void it or wait for its install.
281
+ IgnoreVoids,
282
+ /// A counter family's flush is told of another source of the slot whose seqnos span its
283
+ /// memtable's (D287): it must then keep every operand rather than combine them.
284
+ CounterSourceInside,
285
+ }
286
+
287
+ /// A balancer load term a test chooses for a shard (`Engine::set_shard_load`).
288
+ #[derive(Debug, Clone, Copy, PartialEq, Eq)]
289
+ pub enum LoadTerm {
290
+ /// The shard thread's busy fraction (0 to 1; D217).
291
+ Busy = 0,
292
+ /// Its writers' stall term (D255): 0 or 1 as measured. A fraction in between reads as
293
+ /// stalled only past `PACK_HOT` (0.9), like a turn busy fraction.
294
+ Stalled = 1,
295
+ /// The pool's work for it (a fraction of the time; it may exceed 1 when several pool
296
+ /// threads serve the shard at once; D256).
297
+ Pool = 2,
298
+ /// Client commits in flight at it on average (0 up; a closed-loop client's worth is at
299
+ /// most 1; D257).
300
+ Inflight = 3,
301
+ }
302
+
303
+ impl LoadTerm {
304
+ const COUNT: usize = 4;
305
+
306
+ /// The largest value a test may choose.
307
+ fn max(self) -> f64 {
308
+ match self {
309
+ LoadTerm::Busy | LoadTerm::Stalled => 1.0,
310
+ LoadTerm::Pool => 16.0,
311
+ LoadTerm::Inflight => 1e6,
312
+ }
313
+ }
314
+ }
315
+
316
+ /// A shard's test-hook counters (`ShardMetrics::hooks`), stored after each batch.
317
+ #[derive(Debug, Default)]
318
+ pub(crate) struct ShardCounters {
319
+ /// Size of the shard's aborted-seqno set (`Engine::aborted_seqnos`).
320
+ pub aborted: AtomicU64,
321
+ /// The arena's free bytes, largest free run and size (`Engine::arena_free`: a test
322
+ /// checks it built the fragmented arena it means to, issue #141).
323
+ /// One snapshot, so a reader never pairs values from different batches.
324
+ pub arena: Mutex<(u64, u64, u64)>,
325
+ /// Reservations that found enough free bytes but no run long enough for their largest
326
+ /// entry (`Engine::arena_run_waits`: a test checks it reached that case, issue #141).
327
+ pub run_waits: AtomicU64,
328
+ /// Compactions whose purge a write voided before they installed
329
+ /// (`Engine::compaction_purge_voids`, #316).
330
+ pub purge_voids: AtomicU64,
331
+ /// The load terms the shard's balancer measures, by `LoadTerm` (millionths plus one; 0
332
+ /// measures the real one), `Engine::set_shard_load` (D217, D255, D256, D257's packing
333
+ /// tests).
334
+ pub load_overrides: [AtomicU64; LoadTerm::COUNT],
335
+ /// The flushed-through seqno the shard last published from `on_unpin` (an unpin that
336
+ /// found nothing unflushed at or below its seqno, #724), `Engine::unpin_published`.
337
+ pub unpin_published: AtomicU64,
338
+ /// Flushes the manifest refused because a delete voided one of their purge guards,
339
+ /// flushed again without it (#287), `Engine::flush_voids` (#838's test).
340
+ pub voided_flushes: AtomicU64,
341
+ /// Decisions that reached the shard before their share's PREPARE settled and waited for
342
+ /// it (D279), `Engine::parked_decisions`.
343
+ pub parked_decisions: AtomicU64,
344
+ /// `Decide { commit: false }` messages the shard sent as a coordinator,
345
+ /// `Engine::abort_decides_sent` (D286's tests: no abort follows an early commit
346
+ /// `Decide`).
347
+ pub abort_decides: AtomicU64,
348
+ /// Entries read validation visited in the shard's memtables (`Engine::validate_entries`,
349
+ /// D273's tests: a hot row validates in a few entries, not one per version).
350
+ pub validate_entries: AtomicU64,
351
+ /// The active shard count (`k`, D217) the shard's balancer used at its last pass, plus
352
+ /// one (0 before its first pass), `Engine::pack_ks`.
353
+ pub pack_k: AtomicU64,
354
+ /// PREPAREs the shard refuses as overlapping an undecided share before routing them as
355
+ /// usual (`Engine::refuse_prepares`).
356
+ pub refuse_prepares: AtomicU64,
357
+ /// `AwaitFlushed` and `FlushedThrough` messages the shard handled
358
+ /// (`Engine::flushed_msgs`, D266).
359
+ pub flushed_msgs: AtomicU64,
360
+ /// Records in the shard's log (those its checkpoint has not passed) after its last
361
+ /// batch (`Engine::logged_records`, D254).
362
+ pub logged: AtomicU64,
363
+ /// Spans the shard added to `commit_inflight_nanos` (`ShardMetrics::count_inflight`):
364
+ /// one per commit it replied to and one per share it decided for another coordinator
365
+ /// (D257, D262), `Engine::inflight_counts`.
366
+ pub inflight_counts: AtomicU64,
367
+ /// The most log records the shard's checkpoint popped in one batch (#763's budget),
368
+ /// `Engine::max_checkpoint_pops`.
369
+ pub checkpoint_pops_max: AtomicU64,
370
+ }
371
+
372
+ impl ShardCounters {
373
+ /// The value a test chose for `term`, or `None` to measure the real one.
374
+ pub(crate) fn load_override(&self, term: LoadTerm) -> Option<f64> {
375
+ match self.load_overrides[term as usize].load(Ordering::Relaxed) {
376
+ 0 => None,
377
+ v => Some((v - 1) as f64 / 1e6),
378
+ }
379
+ }
380
+ }
381
+
382
+ /// What a closed instance still holds (`Engine::memory_release`, D265).
383
+ #[doc(hidden)]
384
+ #[derive(Debug, Clone, PartialEq, Eq)]
385
+ pub struct MemoryRelease {
386
+ /// Memtable sets the current view lists.
387
+ pub view_memtables: usize,
388
+ /// SSTs the current view's set holds open.
389
+ pub view_ssts: usize,
390
+ /// Bytes in the block cache.
391
+ pub block_cache_bytes: usize,
392
+ /// Bytes in the row cache (`None` when it is off).
393
+ pub row_cache_bytes: Option<usize>,
394
+ /// The arenas' state.
395
+ pub arenas: ArenaDiscard,
396
+ /// The error of a refused discard.
397
+ pub arena_error: Option<String>,
398
+ }
399
+
400
+ /// What became of a closed instance's arena pages (`Engine::memory_release`, D265).
401
+ #[doc(hidden)]
402
+ #[derive(Debug, Clone, Copy, PartialEq, Eq)]
403
+ pub enum ArenaDiscard {
404
+ /// Not freed yet: the instance is open, a view lives, or the region is still current.
405
+ Pending,
406
+ /// Freed.
407
+ Discarded,
408
+ /// The OS refused (`Unsupported` on macOS and Windows, `EOPNOTSUPP` on a `shm_dir` file
409
+ /// system without hole punching, …): they stay until the last mapping goes. The error is
410
+ /// in `MemoryRelease::arena_error`.
411
+ Refused,
412
+ }
413
+
414
+ /// A WAL record the engine appended to a stream (test hook): the per-stream append order,
415
+ /// which decides what a crash keeps (a stream survives as a prefix).
416
+ #[doc(hidden)]
417
+ #[derive(Debug, Clone, Copy, PartialEq, Eq)]
418
+ pub struct AppendedRecord {
419
+ pub stream: u16,
420
+ pub seqno: Seqno,
421
+ pub kind: AppendedKind,
422
+ pub durability: Durability,
423
+ /// The record's commit timestamp (0 for a COMMIT record): a harness reads a commit's
424
+ /// timestamp here when its record was checkpointed and compaction dropped every entry
425
+ /// it wrote.
426
+ pub commit_ts: Timestamp,
427
+ /// A COMMIT's (DECISION's) applied seqno, the commit's `seqno` being its id (D263); 0
428
+ /// for other records.
429
+ pub apply_seqno: Seqno,
430
+ }
431
+
432
+ /// The kind of an [`AppendedRecord`].
433
+ #[doc(hidden)]
434
+ #[derive(Debug, Clone, Copy, PartialEq, Eq)]
435
+ pub enum AppendedKind {
436
+ Batch,
437
+ Prepare,
438
+ Commit,
439
+ }
440
+
441
+ /// One raw entry of a table (a test hook).
442
+ #[derive(Debug, Clone, PartialEq, Eq)]
443
+ #[doc(hidden)]
444
+ pub struct RawEntry {
445
+ /// Table.
446
+ pub table: TableId,
447
+ /// Family.
448
+ pub family: FamilyId,
449
+ /// Internal key.
450
+ pub key: Vec<u8>,
451
+ /// Stored value.
452
+ pub value: Vec<u8>,
453
+ }
454
+
455
+ /// A tablet's id, table and row range `[start, end)` (a test hook).
456
+ #[doc(hidden)]
457
+ pub type TabletRange = (TabletId, TableId, Vec<u8>, Option<Vec<u8>>);
458
+
459
+ /// What the manifest of a closed database records (a test hook).
460
+ #[derive(Debug, Clone, Default)]
461
+ #[doc(hidden)]
462
+ pub struct ManifestInfo {
463
+ /// Manifest version.
464
+ pub version: ManifestVersion,
465
+ /// Per-stream checkpoints.
466
+ pub checkpoints: BTreeMap<StreamId, Lsn>,
467
+ /// Flushed-through seqno per `(tablet, family)`.
468
+ pub flushed: BTreeMap<(TabletId, FamilyId), Seqno>,
469
+ /// Tablets and their tables.
470
+ pub tablets: Vec<(TabletId, TableId)>,
471
+ /// Tablets with their tables and row ranges `[start, end)` (empty start and `None` end
472
+ /// are unbounded).
473
+ pub tablet_ranges: Vec<TabletRange>,
474
+ /// Whether the last close was clean.
475
+ pub clean: bool,
476
+ }
477
+
478
+ impl Engine {
479
+ /// Runs `f` once, the next time the engine reaches `site` (test hook): see
480
+ /// [`HookSite`] for where each runs. Replaces a callback set there that has not run.
481
+ #[doc(hidden)]
482
+ pub fn on_next(&self, site: HookSite, f: Box<dyn FnOnce() + Send>) {
483
+ self.inner.shared.hooks.sites.set(site, f);
484
+ }
485
+
486
+ /// Switches fault `fault` on or off (test hook): see [`Fault`] for each. A one-shot fault
487
+ /// (`Next…`) switches itself off where it fires.
488
+ #[doc(hidden)]
489
+ pub fn inject(&self, fault: Fault, on: bool) {
490
+ self.inner.shared.hooks.faults.set(fault, on);
491
+ }
492
+
493
+ /// Sends the PREPAREs `Fault::HoldPrepares` held, in the order they were held; returns
494
+ /// how many (test hook). Switch `HoldPrepares` off first, so a hold can't leak into a
495
+ /// later step. A participant already closed refuses the send (`Closed`) and the PREPARE
496
+ /// is dropped: the test then sees its commit unanswered.
497
+ ///
498
+ /// # Panics
499
+ /// If `HoldPrepares` is still on.
500
+ #[doc(hidden)]
501
+ pub fn release_held_prepares(&self) -> usize {
502
+ let hooks = &self.inner.shared.hooks;
503
+ assert!(
504
+ !hooks.faults.on(Fault::HoldPrepares),
505
+ "release_held_prepares with Fault::HoldPrepares still on"
506
+ );
507
+ let held = std::mem::take(&mut *hooks.held_prepares.lock().unwrap());
508
+ let n = held.len();
509
+ let subs = self
510
+ .inner
511
+ .shared
512
+ .submitters
513
+ .get()
514
+ .expect("the shards started");
515
+ for (to, msg) in held {
516
+ let _ = subs[usize::from(to.0)].submit(msg);
517
+ }
518
+ n
519
+ }
520
+
521
+ /// Sends the oldest `max` of the `Decide`s `Fault::HoldDecides` held, in the order they
522
+ /// were held; returns how many (test hook). The rest stay held, so a test can let one
523
+ /// decision land before another; switch `HoldDecides` off before the last release.
524
+ #[doc(hidden)]
525
+ pub fn release_held_decides(&self, max: usize) -> usize {
526
+ let hooks = &self.inner.shared.hooks;
527
+ let held: Vec<_> = {
528
+ let mut h = hooks
529
+ .held_decides
530
+ .lock()
531
+ .unwrap_or_else(std::sync::PoisonError::into_inner);
532
+ let n = max.min(h.len());
533
+ h.drain(..n).collect()
534
+ };
535
+ let n = held.len();
536
+ let subs = self
537
+ .inner
538
+ .shared
539
+ .submitters
540
+ .get()
541
+ .expect("the shards started");
542
+ for (to, msg) in held {
543
+ let _ = subs[usize::from(to.0)].submit(msg);
544
+ }
545
+ n
546
+ }
547
+
548
+ /// The flushed-through seqno shard `shard` last published from an unpin that found
549
+ /// nothing unflushed at or below its seqno, 0 if none (test hook, #724).
550
+ #[doc(hidden)]
551
+ pub fn unpin_published(&self, shard: usize) -> Seqno {
552
+ self.inner.shared.metrics[shard]
553
+ .hooks
554
+ .unpin_published
555
+ .load(Ordering::Relaxed)
556
+ }
557
+
558
+ /// Asks shard `shard` to unpin through `through`, as a peer whose checkpoint a commit's
559
+ /// records pin does (`ShardMsg::Unpin`, test hook).
560
+ #[doc(hidden)]
561
+ pub fn request_unpin(&self, shard: usize, through: Seqno) -> Result<()> {
562
+ self.inner
563
+ .shared
564
+ .submitter(ShardId(shard as u16))
565
+ .submit(ShardMsg::Unpin { through })?;
566
+ Ok(())
567
+ }
568
+
569
+ /// Shard `shard`'s published flushed-through seqno (`Shared::flushed_through`, #724):
570
+ /// every write it will hold at or below it is in a durable SST. 0 before its first
571
+ /// publish (test hook).
572
+ #[doc(hidden)]
573
+ pub fn flushed_through(&self, shard: usize) -> Seqno {
574
+ self.inner.shared.flushed_through[shard]
575
+ .0
576
+ .load(Ordering::Acquire)
577
+ }
578
+
579
+ /// Makes shard `shard`'s balancer measure `term` as `value` from now on (clamped to the
580
+ /// term's range, `LoadTerm`), or the real value with `None` (test hook: the packing
581
+ /// tests, decided on chosen loads under any clock).
582
+ #[doc(hidden)]
583
+ pub fn set_shard_load(&self, shard: usize, term: LoadTerm, value: Option<f64>) {
584
+ let v = value.map_or(0, |b| (b.clamp(0.0, term.max()) * 1e6).round() as u64 + 1);
585
+ self.inner.shared.metrics[shard].hooks.load_overrides[term as usize]
586
+ .store(v, Ordering::Relaxed);
587
+ }
588
+
589
+ /// The seqnos of this process's live snapshots, the ones compaction's GC keeps
590
+ /// (`gc_snapshots`): a transaction's commit holds its snapshot here until it resolves
591
+ /// (#672).
592
+ #[doc(hidden)]
593
+ pub fn live_snapshot_seqnos(&self) -> Vec<Seqno> {
594
+ self.inner.shared.live_seqnos.list()
595
+ }
596
+
597
+ /// The next seqno to reserve (D263: a harness learns which seqnos a crash
598
+ /// freed for reuse).
599
+ #[doc(hidden)]
600
+ pub fn next_seqno(&self) -> Seqno {
601
+ self.inner.shared.shm.next_seqno()
602
+ }
603
+
604
+ /// `flush` as a future (test harnesses that drive the shards themselves).
605
+ #[doc(hidden)]
606
+ pub fn flush_pending(&self) -> Result<PendingMaintenance> {
607
+ self.inner.flush_pending()
608
+ }
609
+
610
+ /// `compact` as a future.
611
+ #[doc(hidden)]
612
+ pub fn compact_pending(&self, table: Option<TableId>) -> Result<PendingMaintenance> {
613
+ self.inner.compact_pending(table)
614
+ }
615
+
616
+ /// Every entry of every table in `snapshot`'s view, raw (no resolution; separated
617
+ /// values read from their blob files), in key order per `(table, family)`.
618
+ #[doc(hidden)]
619
+ pub fn raw_entries(&self, snapshot: &Snapshot) -> Result<Vec<RawEntry>> {
620
+ let read = || -> Result<Vec<RawEntry>> {
621
+ use pigeonhole_compaction::MergingCursor;
622
+ use pigeonhole_format::Cursor;
623
+ let view = &snapshot.view;
624
+ let mut out = Vec::new();
625
+ let all = pigeonhole_format::scan::ScanFilter::all();
626
+ for t in view.catalog.tablets() {
627
+ // Children of a split share SSTs holding their siblings' rows too.
628
+ let (start, end) = crate::read::clamp_to_tablet(&t, None, None)?;
629
+ for family in view.catalog.family_ids_of(t.table) {
630
+ let sources = view.scan_sources(t.shard, t.id, family, &all, None, None)?;
631
+ let mut merged = MergingCursor::new(sources);
632
+ match &start {
633
+ Some(s) => merged.seek(s)?,
634
+ None => merged.seek_to_first()?,
635
+ }
636
+ while merged.valid() && end.as_deref().is_none_or(|e| merged.key() < e) {
637
+ // A separated value is listed as the value, not its pointer.
638
+ let value = match view.ssts.read_blob(merged.value())? {
639
+ Some(v) => v.to_vec(),
640
+ None => merged.value().to_vec(),
641
+ };
642
+ out.push(RawEntry {
643
+ table: t.table,
644
+ family,
645
+ key: merged.key().to_vec(),
646
+ value,
647
+ });
648
+ merged.next()?;
649
+ }
650
+ }
651
+ }
652
+ Ok(out)
653
+ };
654
+ snapshot.checked(read())
655
+ }
656
+
657
+ /// Bytes the pager holds (allocated or retired) that neither the catalog nor the
658
+ /// manifest root references: output in flight, extents awaiting reclamation, or leaked.
659
+ /// Zero once idle and reclaimed (test hook).
660
+ #[doc(hidden)]
661
+ pub fn unreferenced_bytes(&self) -> u64 {
662
+ let shared = &self.inner.shared;
663
+ let root = shared
664
+ .manifest
665
+ .lock()
666
+ .unwrap_or_else(PoisonError::into_inner)
667
+ .root();
668
+ let mut live: Vec<_> = shared.view.load().catalog.data_extents();
669
+ live.extend(root.snapshot);
670
+ live.extend(root.log);
671
+ live.sort();
672
+ live.dedup();
673
+ let referenced: u64 = live.iter().map(|e| e.len()).sum();
674
+ let stats = shared.pager.stats();
675
+ (stats.allocated_bytes + stats.retired_bytes).saturating_sub(referenced)
676
+ }
677
+
678
+ /// [`unreferenced_bytes`](Self::unreferenced_bytes) split: `(allocated, retired)`, the
679
+ /// unreferenced bytes still allocated (output in flight or leaked: a compaction or
680
+ /// flush that never committed and was never abandoned) and those retired, which a
681
+ /// later reclaim frees once no view reaches them (test hook, D284).
682
+ #[doc(hidden)]
683
+ pub fn unreferenced_split(&self) -> (u64, u64) {
684
+ let shared = &self.inner.shared;
685
+ let root = shared
686
+ .manifest
687
+ .lock()
688
+ .unwrap_or_else(PoisonError::into_inner)
689
+ .root();
690
+ let mut live: Vec<_> = shared.view.load().catalog.data_extents();
691
+ live.extend(root.snapshot);
692
+ live.extend(root.log);
693
+ live.sort();
694
+ live.dedup();
695
+ let referenced: u64 = live.iter().map(|e| e.len()).sum();
696
+ let stats = shared.pager.stats();
697
+ (
698
+ stats.allocated_bytes.saturating_sub(referenced),
699
+ stats.retired_bytes,
700
+ )
701
+ }
702
+
703
+ /// Holds the pager's allocator until the guard drops (test hook, D284): a reclaim a
704
+ /// dropped view only tries (`Shared::try_reclaim`) skips meanwhile, as when another
705
+ /// thread grows the file or commits.
706
+ #[doc(hidden)]
707
+ pub fn hold_pager_alloc(&self) -> impl Sized + '_ {
708
+ self.inner.shared.pager.hold_alloc_for_test()
709
+ }
710
+
711
+ /// Every SST the current catalog names, as `(level, length, size class)` (test hook:
712
+ /// the footprint test reads the live bytes and the SST count per run, #185).
713
+ #[doc(hidden)]
714
+ pub fn sst_lens(&self) -> Vec<(u8, u64, u8)> {
715
+ let catalog = Arc::clone(&self.inner.shared.view.load().catalog);
716
+ catalog
717
+ .ssts
718
+ .values()
719
+ .flat_map(|l| l.iter())
720
+ .map(|(level, meta)| (*level, meta.len, meta.extent.size_class))
721
+ .collect()
722
+ }
723
+
724
+ /// Every SST the current catalog names, as `(table, first page, size class)` of its
725
+ /// extent (test hook: where `shrink` put it, #314).
726
+ #[doc(hidden)]
727
+ pub fn sst_extents(&self) -> Vec<(TableId, u64, u8)> {
728
+ let catalog = Arc::clone(&self.inner.shared.view.load().catalog);
729
+ let mut out = Vec::new();
730
+ for ((tablet, _), list) in catalog.ssts.iter() {
731
+ let Some(entry) = catalog.tablet(*tablet) else {
732
+ continue;
733
+ };
734
+ out.extend(
735
+ list.iter()
736
+ .map(|(_, meta)| (entry.table, meta.extent.page, meta.extent.size_class)),
737
+ );
738
+ }
739
+ out
740
+ }
741
+
742
+ /// Every SST the current catalog names, as `(table, level, sst id)` (test hook).
743
+ #[doc(hidden)]
744
+ pub fn sst_levels(&self) -> Vec<(TableId, u8, u64)> {
745
+ let catalog = Arc::clone(&self.inner.shared.view.load().catalog);
746
+ let mut out = Vec::new();
747
+ for ((tablet, _), list) in catalog.ssts.iter() {
748
+ let Some(entry) = catalog.tablet(*tablet) else {
749
+ continue;
750
+ };
751
+ out.extend(
752
+ list.iter()
753
+ .map(|(level, meta)| (entry.table, *level, meta.id.0)),
754
+ );
755
+ }
756
+ out
757
+ }
758
+
759
+ /// Sets the inline value limit (D16) to `payload_bytes`: a put whose value payload is
760
+ /// longer is separated into a blob file at commit time (#230). Lets tests reach that
761
+ /// path with small values (the real limit is tens of MiB). Test hook.
762
+ #[doc(hidden)]
763
+ pub fn set_inline_value_limit(&self, payload_bytes: usize) {
764
+ self.inner.max_value.store(payload_bytes, Ordering::Relaxed);
765
+ }
766
+
767
+ /// Every blob file the current catalog names, as `(family, blob file id, total bytes,
768
+ /// live bytes)` (test hook).
769
+ #[doc(hidden)]
770
+ pub fn blob_files(&self) -> Vec<(FamilyId, u32, u64, u64)> {
771
+ let catalog = Arc::clone(&self.inner.shared.view.load().catalog);
772
+ catalog
773
+ .blob_files
774
+ .iter()
775
+ .map(|(id, b)| (b.family, id.0, b.total_bytes, b.live_bytes))
776
+ .collect()
777
+ }
778
+
779
+ /// Checks blob accounting in the current view (test hook): every blob pointer an SST
780
+ /// holds within its tablet's rows names a blob file of the catalog, of the same family,
781
+ /// and each file's live bytes are exactly the bytes those pointers reference (16 plus
782
+ /// the value's length each; an SST shared by several tablets counts once per tablet,
783
+ /// for its rows in that tablet; memtable pointers count too), and every SST's recorded
784
+ /// blob references (#240) are
785
+ /// exactly the pointers it holds. Describes the first mismatch.
786
+ #[doc(hidden)]
787
+ pub fn check_blob_accounting(&self) -> std::result::Result<(), String> {
788
+ use pigeonhole_compaction::{blob_pointer, record_bytes};
789
+ use pigeonhole_format::Cursor;
790
+ use pigeonhole_format::key::{Kind, split_suffix};
791
+ use pigeonhole_sst::{ReadOptions, ScanFilter};
792
+
793
+ // A file is settling if `large_pending` holds it before or after the view is loaded:
794
+ // a release (`large.rs`) drops it from `large_pending` only after the view without
795
+ // it is published (so the set read before covers a view that still has it), and a
796
+ // new file joins `large_pending` before the view with it is published (so the set
797
+ // read after covers that).
798
+ let settling = || self.inner.shared.large.pending();
799
+ let mut pending = settling();
800
+ let view = self.inner.shared.view.load_full();
801
+ pending.extend(settling());
802
+ let catalog = &view.catalog;
803
+ let mut refs: BTreeMap<u32, u64> = BTreeMap::new();
804
+ let err = |e: &dyn std::fmt::Display| e.to_string();
805
+ for tablet in catalog.tablets() {
806
+ let range = crate::compact::tablet_range(&tablet).map_err(|e| err(&e))?;
807
+ for family in catalog.family_ids_of(tablet.table) {
808
+ let Some(fam) = view.ssts.family(tablet.id, family) else {
809
+ continue;
810
+ };
811
+ for sst in fam.iter() {
812
+ let reader = sst
813
+ .reader(&view.ssts, pigeonhole_cache::Priority::Low)
814
+ .map_err(|e| err(&e))?;
815
+ let mut it = reader.iter(ScanFilter::all(), ReadOptions::default());
816
+ match &range.start {
817
+ Some(s) => it.seek(s),
818
+ None => it.seek_to_first(),
819
+ }
820
+ .map_err(|e| err(&e))?;
821
+ while it.valid() {
822
+ if range.end.as_deref().is_some_and(|e| it.key() >= e) {
823
+ break;
824
+ }
825
+ let (_, _, _, kind) = split_suffix(it.key()).map_err(|e| err(&e))?;
826
+ if kind == Kind::Put
827
+ && let Some(p) = blob_pointer(it.value())
828
+ {
829
+ match catalog.blob_files.get(&p.blob_file) {
830
+ Some(b) if b.family == family => {}
831
+ Some(b) => {
832
+ return Err(format!(
833
+ "SST {} of family {} points into blob file {} of family {}",
834
+ sst.meta.id.0, family.0, p.blob_file.0, b.family.0
835
+ ));
836
+ }
837
+ None => {
838
+ return Err(format!(
839
+ "SST {} points into blob file {}, which the catalog \
840
+ does not name",
841
+ sst.meta.id.0, p.blob_file.0
842
+ ));
843
+ }
844
+ }
845
+ *refs.entry(p.blob_file.0).or_default() += record_bytes(p.len);
846
+ }
847
+ it.next().map_err(|e| err(&e))?;
848
+ }
849
+ }
850
+ }
851
+ }
852
+ // Memtables hold the pointers of values separated at commit time (#230) until their
853
+ // flush; a frozen memtable never appears together with its SST.
854
+ for (_, set) in view.all_memtables() {
855
+ for reader in &set.readers {
856
+ let mut it = reader.iter();
857
+ it.seek_to_first().map_err(|e| err(&e))?;
858
+ while it.valid() {
859
+ let (_, _, _, kind) = split_suffix(it.key()).map_err(|e| err(&e))?;
860
+ if kind == Kind::Put
861
+ && let Some(p) = blob_pointer(it.value())
862
+ {
863
+ if !catalog.blob_files.contains_key(&p.blob_file) {
864
+ return Err(format!(
865
+ "a memtable points into blob file {}, which the catalog \
866
+ does not name",
867
+ p.blob_file.0
868
+ ));
869
+ }
870
+ *refs.entry(p.blob_file.0).or_default() += record_bytes(p.len);
871
+ }
872
+ it.next().map_err(|e| err(&e))?;
873
+ }
874
+ }
875
+ }
876
+ // Each SST's recorded references (#240) are exactly the pointers it holds.
877
+ let mut seen = std::collections::HashSet::new();
878
+ for fam in view.ssts.map.values() {
879
+ for sst in fam.iter() {
880
+ if !seen.insert(sst.meta.id) {
881
+ continue;
882
+ }
883
+ let Some(recorded) = catalog.blob_refs.get(&sst.meta.id) else {
884
+ continue;
885
+ };
886
+ let reader = sst
887
+ .reader(&view.ssts, pigeonhole_cache::Priority::Low)
888
+ .map_err(|e| err(&e))?;
889
+ let mut it = reader.iter(ScanFilter::all(), ReadOptions::default());
890
+ it.seek_to_first().map_err(|e| err(&e))?;
891
+ let mut actual = Vec::new();
892
+ while it.valid() {
893
+ pigeonhole_compaction::note_blob_ref(&mut actual, it.key(), it.value());
894
+ it.next().map_err(|e| err(&e))?;
895
+ }
896
+ if &actual != recorded {
897
+ return Err(format!(
898
+ "SST {} records blob references {recorded:?} but holds {actual:?}",
899
+ sst.meta.id.0
900
+ ));
901
+ }
902
+ }
903
+ }
904
+ // A large value's file whose commit has not settled (or whose release has not
905
+ // committed) may have nothing pointing into it yet (#230).
906
+ for (id, b) in catalog.blob_files.iter() {
907
+ if pending.contains(id) {
908
+ continue;
909
+ }
910
+ let referenced = refs.get(&id.0).copied().unwrap_or(0);
911
+ if referenced != b.live_bytes {
912
+ return Err(format!(
913
+ "blob file {}: {} live bytes recorded, {referenced} referenced \
914
+ ({} written)",
915
+ id.0, b.live_bytes, b.total_bytes
916
+ ));
917
+ }
918
+ }
919
+ Ok(())
920
+ }
921
+
922
+ /// Makes shard `shard` refuse the next `n` PREPAREs as overlapping an undecided share
923
+ /// (`PendingOverlap`), whatever their rows (test hook: the cost of refused rounds). Each
924
+ /// refused round aborts with no record on that shard, and its coordinator retries once
925
+ /// the abort's decision there wakes it.
926
+ #[doc(hidden)]
927
+ pub fn refuse_prepares(&self, shard: usize, n: u64) {
928
+ self.inner.shared.metrics[shard]
929
+ .hooks
930
+ .refuse_prepares
931
+ .store(n, Ordering::Release);
932
+ }
933
+
934
+ /// The mean commits in flight shard `shard`'s balancer published at its last pass
935
+ /// (D257's moving average of the rise of `commit_inflight_nanos` over each interval),
936
+ /// `None` before its first pass. Test hook: one blocking client reads at most about 1.
937
+ #[doc(hidden)]
938
+ pub fn shard_inflight(&self, shard: usize) -> Option<f64> {
939
+ self.inner.shared.loads[shard]
940
+ .read_inflight_fresh(u64::MAX, u64::MAX)
941
+ .map(|v| v as f64 / 1e6)
942
+ }
943
+
944
+ /// The stall fraction shard `shard`'s balancer published at its last pass (D255: the
945
+ /// moving average of the time its commits waited for arena room or were paced on L0
946
+ /// depth, 0 to 1), `None` before its first pass. Test hook.
947
+ #[doc(hidden)]
948
+ pub fn shard_stall_busy(&self, shard: usize) -> Option<f64> {
949
+ self.inner.shared.loads[shard]
950
+ .read_stall_busy_fresh(u64::MAX, u64::MAX)
951
+ .map(|v| v as f64 / 1e6)
952
+ }
953
+
954
+ /// The busy fraction and the turn-busy fraction shard `shard`'s balancer published at
955
+ /// its last pass (D217's moving average of the largest of turn + pool, sync and stall,
956
+ /// D256, D257; and D251's turn-and-stall average), `None` before its first pass. Test
957
+ /// hook: with the pool term above zero the first exceeds the second.
958
+ #[doc(hidden)]
959
+ pub fn shard_busy_terms(&self, shard: usize) -> Option<(f64, f64)> {
960
+ let slot = &self.inner.shared.loads[shard];
961
+ let busy = slot.read_busy_fresh(u64::MAX, u64::MAX)?;
962
+ let turn = slot.read_turn_busy_fresh(u64::MAX, u64::MAX)?;
963
+ Some((busy as f64 / 1e6, turn as f64 / 1e6))
964
+ }
965
+
966
+ /// Claims shard `shard` as a skew change handing it load would (D224), for `passes` of
967
+ /// its balancer passes. False while another claim holds it. Test hook: D270's packing
968
+ /// moves leave a claimed shard alone.
969
+ #[doc(hidden)]
970
+ pub fn claim_shard(&self, shard: usize, passes: u64) -> bool {
971
+ let now = self.inner.shared.vfs.monotonic_nanos();
972
+ self.inner.shared.loads[shard].claim(passes, u64::MAX, now)
973
+ }
974
+
975
+ /// Whether a skew change's claim holds shard `shard` now (D224). Test hook: D270's
976
+ /// change that waits on a compaction claims nothing.
977
+ #[doc(hidden)]
978
+ pub fn shard_claimed(&self, shard: usize) -> bool {
979
+ let now = self.inner.shared.vfs.monotonic_nanos();
980
+ !self.inner.shared.loads[shard].claimable(now)
981
+ }
982
+
983
+ /// The active shard count (`k`, D217's packing) each shard's balancer used at its last
984
+ /// pass, by shard (`None` before its first pass). Test hook: every shard must use the same.
985
+ #[doc(hidden)]
986
+ pub fn pack_ks(&self) -> Vec<Option<usize>> {
987
+ self.inner
988
+ .shared
989
+ .metrics
990
+ .iter()
991
+ .map(|m| match m.hooks.pack_k.load(Ordering::Relaxed) {
992
+ 0 => None,
993
+ v => Some(v as usize - 1),
994
+ })
995
+ .collect()
996
+ }
997
+
998
+ /// Bytes in the block cache (test hook: `shrink`'s tests check that an abandoned copy
999
+ /// leaves nothing cached).
1000
+ #[doc(hidden)]
1001
+ pub fn block_cache_usage(&self) -> usize {
1002
+ self.inner.shared.cache.usage()
1003
+ }
1004
+
1005
+ /// Runs `f` once, in the calling thread's next row read, after its first family and
1006
+ /// before its second: where a test flushes, compacts and reclaims while the read holds
1007
+ /// its view (#392 review; test hook).
1008
+ #[doc(hidden)]
1009
+ pub fn between_row_read_families(&self, f: Box<dyn FnOnce()>) {
1010
+ crate::read::BETWEEN_ROW_FAMILIES.with(|h| *h.borrow_mut() = Some(f));
1011
+ }
1012
+
1013
+ /// Splits the tablet of `table` holding row `at` at `at`; both halves stay on its shard.
1014
+ /// Fails with `InvalidArgument` when `at` is the tablet's first row.
1015
+ #[doc(hidden)]
1016
+ pub fn split_tablet_pending(&self, table: TableId, at: &[u8]) -> Result<PendingMaintenance> {
1017
+ let (tablet, shard) = self.inner.tablet_at(table, at)?;
1018
+ self.inner.tablet_op(
1019
+ shard,
1020
+ crate::shard::TabletOpKind::Split {
1021
+ tablet,
1022
+ keys: vec![at.to_vec()],
1023
+ owners: vec![shard, shard],
1024
+ },
1025
+ )
1026
+ }
1027
+
1028
+ /// Moves the tablet of `table` holding `row` to shard `to`.
1029
+ #[doc(hidden)]
1030
+ pub fn move_tablet_pending(
1031
+ &self,
1032
+ table: TableId,
1033
+ row: &[u8],
1034
+ to: u16,
1035
+ ) -> Result<PendingMaintenance> {
1036
+ let (tablet, shard) = self.inner.tablet_at(table, row)?;
1037
+ self.inner.tablet_op(
1038
+ shard,
1039
+ crate::shard::TabletOpKind::Move {
1040
+ tablet,
1041
+ to: ShardId(to),
1042
+ },
1043
+ )
1044
+ }
1045
+
1046
+ /// Merges the tablet of `table` holding `row` with its right neighbour (both must be on
1047
+ /// one shard).
1048
+ #[doc(hidden)]
1049
+ pub fn merge_tablets_pending(&self, table: TableId, row: &[u8]) -> Result<PendingMaintenance> {
1050
+ let view = self.inner.shared.view.load_full();
1051
+ let list = view.tablets.tablets_of(table);
1052
+ let i = list
1053
+ .iter()
1054
+ .position(|t| {
1055
+ t.start.as_slice() <= row && t.end.as_ref().is_none_or(|e| row < e.as_slice())
1056
+ })
1057
+ .ok_or_else(|| Error::TableNotFound(format!("table {}", table.0)))?;
1058
+ let (Some(l), Some(r)) = (list.get(i), list.get(i + 1)) else {
1059
+ return Err(Error::InvalidArgument("no right neighbour".to_owned()));
1060
+ };
1061
+ self.inner.tablet_op(
1062
+ l.shard,
1063
+ crate::shard::TabletOpKind::Merge {
1064
+ left: l.id,
1065
+ right: r.id,
1066
+ },
1067
+ )
1068
+ }
1069
+
1070
+ /// Runs every shard's balancer now (whatever interval is configured); resolves once the
1071
+ /// splits, moves or merges it started are done.
1072
+ #[doc(hidden)]
1073
+ pub fn balance_pending(&self) -> Result<PendingMaintenance> {
1074
+ self.inner.check_open()?;
1075
+ let mut waiters = Vec::with_capacity(self.inner.shared.shards);
1076
+ for i in 0..self.inner.shared.shards {
1077
+ let (tx, rx) = completion();
1078
+ self.inner
1079
+ .shared
1080
+ .submitter(ShardId(i as u16))
1081
+ .submit(ShardMsg::Balance { reply: Some(tx) })?;
1082
+ waiters.push(rx);
1083
+ }
1084
+ Ok(PendingMaintenance {
1085
+ waiters,
1086
+ rounds: None,
1087
+ failed: None,
1088
+ owner: pigeonhole_io::sys::process_id(),
1089
+ })
1090
+ }
1091
+
1092
+ /// The largest default timestamp handed out (the allocator's `H`, D271): every default
1093
+ /// timestamp so far is at or below it.
1094
+ #[doc(hidden)]
1095
+ pub fn last_default_ts(&self) -> pigeonhole_format::Timestamp {
1096
+ self.inner.shared.clock.last_ts()
1097
+ }
1098
+
1099
+ /// Memtable jumps reads have taken in this process (D194). Test hook.
1100
+ #[doc(hidden)]
1101
+ pub fn tail_skips() -> u64 {
1102
+ crate::shard::TAIL_SKIPS.load(Ordering::Relaxed)
1103
+ }
1104
+
1105
+ /// SST column skips reads have taken in this process (ICR 0041). Test hook.
1106
+ #[doc(hidden)]
1107
+ pub fn sst_skips() -> u64 {
1108
+ crate::shard::SST_SKIPS.load(Ordering::Relaxed)
1109
+ }
1110
+
1111
+ /// Breaks the flush GC on purpose (#287), so a test can check the oracle catches it;
1112
+ /// [`FlushGcMutation::None`] restores it.
1113
+ #[doc(hidden)]
1114
+ pub fn mutate_flush_gc(&self, m: FlushGcMutation) {
1115
+ let v = match m {
1116
+ FlushGcMutation::None => 0,
1117
+ FlushGcMutation::DropGuard => 1,
1118
+ FlushGcMutation::DropSnapshotFloor => 2,
1119
+ FlushGcMutation::IgnoreVoids => 3,
1120
+ FlushGcMutation::CounterSourceInside => 4,
1121
+ };
1122
+ self.inner
1123
+ .shared
1124
+ .hooks
1125
+ .flush_gc_mutation
1126
+ .store(v, Ordering::Release);
1127
+ }
1128
+
1129
+ /// Turns recording for [`take_compactions`](Self::take_compactions) (flushes too, #287)
1130
+ /// and [`take_appended`](Self::take_appended) on or off (off at open). A test that reads
1131
+ /// them turns it on first.
1132
+ #[doc(hidden)]
1133
+ pub fn record_history(&self, on: bool) {
1134
+ self.inner.shared.hooks.record.store(on, Ordering::Release);
1135
+ }
1136
+
1137
+ /// The compactions committed since the last call (or since recording started), when
1138
+ /// recording is on ([`record_history`](Self::record_history)).
1139
+ #[doc(hidden)]
1140
+ pub fn take_compactions(&self) -> Vec<crate::compact::CompactionRecord> {
1141
+ let mut all = self
1142
+ .inner
1143
+ .shared
1144
+ .hooks
1145
+ .compactions
1146
+ .lock()
1147
+ .unwrap_or_else(PoisonError::into_inner);
1148
+ let (flushes, compactions) = std::mem::take(&mut *all).into_iter().partition(|r| r.flush);
1149
+ *all = flushes;
1150
+ compactions
1151
+ }
1152
+
1153
+ /// Every compaction and flush record committed since the last call, in commit order
1154
+ /// (#287: a flush's GC drops history and may purge versions, so the model replays both).
1155
+ #[doc(hidden)]
1156
+ pub fn take_gc_records(&self) -> Vec<crate::compact::CompactionRecord> {
1157
+ std::mem::take(
1158
+ &mut *self
1159
+ .inner
1160
+ .shared
1161
+ .hooks
1162
+ .compactions
1163
+ .lock()
1164
+ .unwrap_or_else(PoisonError::into_inner),
1165
+ )
1166
+ }
1167
+
1168
+ /// What a closed instance still holds of what `Engine::release_memory` releases (D265):
1169
+ /// how many memtable sets and SSTs the current view lists, the bytes in the block cache
1170
+ /// and in the row cache (`None` when it is off), the arenas' state and the error of a
1171
+ /// refused discard.
1172
+ #[doc(hidden)]
1173
+ pub fn memory_release(&self) -> MemoryRelease {
1174
+ let shared = &self.inner.shared;
1175
+ let view = shared.view.load();
1176
+ MemoryRelease {
1177
+ view_memtables: view.mems.iter().map(|m| m.map.len()).sum(),
1178
+ view_ssts: view.ssts.map.values().map(|f| f.iter().count()).sum(),
1179
+ block_cache_bytes: shared.cache.usage(),
1180
+ row_cache_bytes: shared.row_cache.as_ref().map(|r| r.usage()),
1181
+ arenas: match shared.arena_discard.load(Ordering::Acquire) {
1182
+ crate::shard::ARENAS_DISCARDED => ArenaDiscard::Discarded,
1183
+ crate::shard::ARENAS_REFUSED => ArenaDiscard::Refused,
1184
+ _ => ArenaDiscard::Pending,
1185
+ },
1186
+ arena_error: shared
1187
+ .hooks
1188
+ .arena_discard_error
1189
+ .lock()
1190
+ .unwrap_or_else(PoisonError::into_inner)
1191
+ .clone(),
1192
+ }
1193
+ }
1194
+
1195
+ /// How many bytes of the shared-memory arenas are resident (`mincore`; Linux mappings
1196
+ /// only, `Unsupported` elsewhere and on the simulated VFS).
1197
+ #[doc(hidden)]
1198
+ pub fn arena_resident_bytes(&self) -> Result<usize> {
1199
+ Ok(self.inner.shared.shm.arena_resident_bytes()?)
1200
+ }
1201
+
1202
+ /// Seqnos the shards hold as aborted cross-shard commits, as of each shard's last
1203
+ /// batch (test hook).
1204
+ #[doc(hidden)]
1205
+ pub fn aborted_seqnos(&self) -> u64 {
1206
+ self.inner
1207
+ .shared
1208
+ .metrics
1209
+ .iter()
1210
+ .map(|m| m.hooks.aborted.load(Ordering::Relaxed))
1211
+ .sum()
1212
+ }
1213
+
1214
+ /// How many times shard `shard` found enough free arena bytes for a batch but no run
1215
+ /// long enough for its largest entry, and made it wait (issue #141).
1216
+ #[doc(hidden)]
1217
+ pub fn arena_run_waits(&self, shard: usize) -> u64 {
1218
+ self.inner.shared.metrics[shard]
1219
+ .hooks
1220
+ .run_waits
1221
+ .load(Ordering::Relaxed)
1222
+ }
1223
+
1224
+ /// How many flushes on shard `shard` the manifest refused for a purge guard a delete had
1225
+ /// voided, so that they flushed again without it (#287, test hook).
1226
+ #[doc(hidden)]
1227
+ pub fn flush_voids(&self, shard: usize) -> u64 {
1228
+ self.inner.shared.metrics[shard]
1229
+ .hooks
1230
+ .voided_flushes
1231
+ .load(Ordering::Relaxed)
1232
+ }
1233
+
1234
+ /// How many decisions on shard `shard` arrived before their share's PREPARE settled and
1235
+ /// waited for it (D279, test hook).
1236
+ #[doc(hidden)]
1237
+ pub fn parked_decisions(&self, shard: usize) -> u64 {
1238
+ self.inner.shared.metrics[shard]
1239
+ .hooks
1240
+ .parked_decisions
1241
+ .load(Ordering::Relaxed)
1242
+ }
1243
+
1244
+ /// Switches `Fault::HoldDecisionRecords` off and kicks every shard, so the DECISIONs it
1245
+ /// held join their next group (test hook).
1246
+ #[doc(hidden)]
1247
+ pub fn release_held_decisions(&self) {
1248
+ self.inner
1249
+ .shared
1250
+ .hooks
1251
+ .faults
1252
+ .set(Fault::HoldDecisionRecords, false);
1253
+ if let Some(subs) = self.inner.shared.submitters.get() {
1254
+ for s in subs {
1255
+ let _ = s.submit(crate::shard::ShardMsg::Kick);
1256
+ }
1257
+ }
1258
+ }
1259
+
1260
+ /// How many `Decide { commit: false }` shard `shard` sent as a coordinator (D286, test
1261
+ /// hook).
1262
+ #[doc(hidden)]
1263
+ pub fn abort_decides_sent(&self, shard: usize) -> u64 {
1264
+ self.inner.shared.metrics[shard]
1265
+ .hooks
1266
+ .abort_decides
1267
+ .load(Ordering::Relaxed)
1268
+ }
1269
+
1270
+ /// How many memtable entries read validation on shard `shard` has visited (D273, test
1271
+ /// hook).
1272
+ #[doc(hidden)]
1273
+ pub fn validate_entries(&self, shard: usize) -> u64 {
1274
+ self.inner.shared.metrics[shard]
1275
+ .hooks
1276
+ .validate_entries
1277
+ .load(Ordering::Relaxed)
1278
+ }
1279
+
1280
+ /// [`Engine::backup`] at `snapshot`: with [`Snapshot::at_seqno`], below commits its SSTs
1281
+ /// already hold, so the backup rewrites those SSTs instead of copying them (#715).
1282
+ #[doc(hidden)]
1283
+ pub fn backup_at(&self, snapshot: Snapshot, dest: &Path) -> Result<()> {
1284
+ let _guard = self.inner.enter_maintenance()?;
1285
+ crate::maintenance::backup(&self.inner.shared, snapshot, dest)
1286
+ }
1287
+
1288
+ /// How many compactions on shard `shard` a write voided before they installed their
1289
+ /// purge, so that they compacted again (#316).
1290
+ #[doc(hidden)]
1291
+ pub fn compaction_purge_voids(&self, shard: usize) -> u64 {
1292
+ self.inner.shared.metrics[shard]
1293
+ .hooks
1294
+ .purge_voids
1295
+ .load(Ordering::Relaxed)
1296
+ }
1297
+
1298
+ /// How many `AwaitFlushed` and `FlushedThrough` messages shard `shard` handled: one pair
1299
+ /// per peer a blocked checkpoint waits for, not one per share (D266). Test hook.
1300
+ #[doc(hidden)]
1301
+ pub fn flushed_msgs(&self, shard: usize) -> u64 {
1302
+ self.inner.shared.metrics[shard]
1303
+ .hooks
1304
+ .flushed_msgs
1305
+ .load(Ordering::Relaxed)
1306
+ }
1307
+
1308
+ /// How many spans shard `shard` added to its commits' in-flight time: one per commit it
1309
+ /// replied to (D257) and one per share it decided for another shard's coordination
1310
+ /// (D262); its own share counts nothing at the decision. Test hook.
1311
+ #[doc(hidden)]
1312
+ pub fn inflight_counts(&self, shard: usize) -> u64 {
1313
+ self.inner.shared.metrics[shard]
1314
+ .hooks
1315
+ .inflight_counts
1316
+ .load(Ordering::Relaxed)
1317
+ }
1318
+
1319
+ /// The records shard `shard`'s checkpoint has not passed yet, as of its last batch: a
1320
+ /// test checks a participant's PREPAREs go once their commits settle (D254).
1321
+ #[doc(hidden)]
1322
+ pub fn logged_records(&self, shard: usize) -> u64 {
1323
+ self.inner.shared.metrics[shard]
1324
+ .hooks
1325
+ .logged
1326
+ .load(Ordering::Relaxed)
1327
+ }
1328
+
1329
+ /// The most records shard `shard`'s checkpoint popped from its log in one batch so far
1330
+ /// (#763: at most the pop budget while open). Test hook.
1331
+ #[doc(hidden)]
1332
+ pub fn max_checkpoint_pops(&self, shard: usize) -> u64 {
1333
+ self.inner.shared.metrics[shard]
1334
+ .hooks
1335
+ .checkpoint_pops_max
1336
+ .load(Ordering::Relaxed)
1337
+ }
1338
+
1339
+ /// Shard `shard`'s arena after its last batch: free bytes, the usable bytes of its
1340
+ /// largest run of free chunks, and its size (issue #141).
1341
+ #[doc(hidden)]
1342
+ pub fn arena_free(&self, shard: usize) -> (u64, u64, u64) {
1343
+ *self.inner.shared.metrics[shard]
1344
+ .hooks
1345
+ .arena
1346
+ .lock()
1347
+ .unwrap_or_else(PoisonError::into_inner)
1348
+ }
1349
+
1350
+ /// The WAL records appended since the last call (or since recording started), in append
1351
+ /// order, when recording is on ([`record_history`](Self::record_history)).
1352
+ #[doc(hidden)]
1353
+ pub fn take_appended(&self) -> Vec<AppendedRecord> {
1354
+ std::mem::take(
1355
+ &mut *self
1356
+ .inner
1357
+ .shared
1358
+ .hooks
1359
+ .appended
1360
+ .lock()
1361
+ .unwrap_or_else(PoisonError::into_inner),
1362
+ )
1363
+ }
1364
+
1365
+ /// PREPAREs refused for arena room since open (D245). Counted only in builds with this
1366
+ /// feature (test hook).
1367
+ #[doc(hidden)]
1368
+ pub fn room_refusals(&self) -> u64 {
1369
+ self.inner
1370
+ .shared
1371
+ .hooks
1372
+ .room_refusals
1373
+ .load(Ordering::Relaxed)
1374
+ }
1375
+
1376
+ /// The seqnos of cross-shard attempts refused by a participant (`Moved`, `Room` or
1377
+ /// `PendingOverlap`) since the last call, when recording is on
1378
+ /// ([`record_history`](Self::record_history)): their PREPAREs never get a COMMIT, and the
1379
+ /// commit runs again under a new seqno or gives up with `Busy`.
1380
+ #[doc(hidden)]
1381
+ pub fn take_refused_attempts(&self) -> Vec<Seqno> {
1382
+ std::mem::take(
1383
+ &mut *self
1384
+ .inner
1385
+ .shared
1386
+ .hooks
1387
+ .refused
1388
+ .lock()
1389
+ .unwrap_or_else(PoisonError::into_inner),
1390
+ )
1391
+ }
1392
+
1393
+ /// Takes the manifest writer's exclusion on this thread, as a commit in progress holds
1394
+ /// it: shards' manifest requests queue up (their pumps find it held and leave) until
1395
+ /// [`release_manifest`](Self::release_manifest). Returns whether it was free (test hook).
1396
+ #[doc(hidden)]
1397
+ pub fn hold_manifest(&self) -> bool {
1398
+ manifest::claim(&self.inner.shared)
1399
+ }
1400
+
1401
+ /// How many manifest requests wait in the queue, behind a held exclusion
1402
+ /// ([`hold_manifest`](Self::hold_manifest)) or a commit in progress (test hook).
1403
+ #[doc(hidden)]
1404
+ pub fn manifest_queue_len(&self) -> usize {
1405
+ self.inner.shared.manifest_queue.len()
1406
+ }
1407
+
1408
+ /// Commits every queued manifest request on this thread, which holds the exclusion
1409
+ /// ([`hold_manifest`](Self::hold_manifest)) (test hook).
1410
+ #[doc(hidden)]
1411
+ pub fn drain_manifest(&self) {
1412
+ manifest::drain_sync(&self.inner.shared);
1413
+ }
1414
+
1415
+ /// Commits what is queued and releases the exclusion
1416
+ /// [`hold_manifest`](Self::hold_manifest) took (test hook).
1417
+ #[doc(hidden)]
1418
+ pub fn release_manifest(&self) {
1419
+ let shared = &self.inner.shared;
1420
+ loop {
1421
+ manifest::drain_sync(shared);
1422
+ manifest::release(shared);
1423
+ if shared.manifest_queue.is_empty() || !manifest::claim(shared) {
1424
+ break;
1425
+ }
1426
+ }
1427
+ }
1428
+
1429
+ /// Whether a shard died (a panic, a dropped application-owned shard, a failed WAL sync or
1430
+ /// a failed cross-shard apply): new commits are then refused with `Closed` (D227). Lets
1431
+ /// the model checker tell that refusal from a wrong one. Test hook.
1432
+ #[doc(hidden)]
1433
+ pub fn shard_died(&self) -> bool {
1434
+ self.inner.shared.shard_died.load(Ordering::Acquire)
1435
+ }
1436
+
1437
+ /// While `park` is set, a background manifest commit whose root commit completed waits
1438
+ /// before it publishes and answers; clearing it wakes the parked commit (test hook).
1439
+ #[doc(hidden)]
1440
+ pub fn park_manifest_commits(&self, park: bool) {
1441
+ let shared = &self.inner.shared;
1442
+ shared.hooks.manifest_park.store(park, Ordering::Release);
1443
+ if !park {
1444
+ let parked = shared
1445
+ .hooks
1446
+ .manifest_parked
1447
+ .lock()
1448
+ .unwrap_or_else(PoisonError::into_inner)
1449
+ .take();
1450
+ if let Some(w) = parked {
1451
+ w.wake();
1452
+ }
1453
+ }
1454
+ }
1455
+
1456
+ /// The oldest `(seqno, view version)` any reader slot of the current region generation
1457
+ /// pins, and the view version the writer published last (test hook).
1458
+ #[doc(hidden)]
1459
+ pub fn reader_pin_and_view(&self) -> (Option<(Seqno, u64)>, u64) {
1460
+ let shared = &self.inner.shared;
1461
+ (shared.shm.oldest_reader_pin(), shared.view.load().version)
1462
+ }
1463
+
1464
+ /// While `hold` is set, every compaction job waits before its first slice until
1465
+ /// [`release_held_compaction`](Self::release_held_compaction) lets it run; clearing it
1466
+ /// lets them all run (test hook, #316).
1467
+ #[doc(hidden)]
1468
+ pub fn hold_compactions(&self, hold: bool) {
1469
+ let hooks = &self.inner.shared.hooks;
1470
+ hooks.compaction_hold.store(hold, Ordering::Release);
1471
+ if !hold {
1472
+ let held = std::mem::take(
1473
+ &mut *hooks
1474
+ .compaction_held
1475
+ .lock()
1476
+ .unwrap_or_else(PoisonError::into_inner),
1477
+ );
1478
+ for (_, w) in held {
1479
+ w.wake();
1480
+ }
1481
+ }
1482
+ }
1483
+
1484
+ /// Lets the oldest held compaction job run (test hook).
1485
+ #[doc(hidden)]
1486
+ pub fn release_held_compaction(&self) {
1487
+ let mut held = self
1488
+ .inner
1489
+ .shared
1490
+ .hooks
1491
+ .compaction_held
1492
+ .lock()
1493
+ .unwrap_or_else(PoisonError::into_inner);
1494
+ let first = (!held.is_empty()).then(|| held.remove(0));
1495
+ drop(held);
1496
+ if let Some((_, w)) = first {
1497
+ w.wake();
1498
+ }
1499
+ }
1500
+
1501
+ /// Compactions that finished their job and submitted their commit (test hook, D284):
1502
+ /// one stopped before this is still writing its output.
1503
+ #[doc(hidden)]
1504
+ pub fn compaction_commits_submitted(&self) -> u64 {
1505
+ self.inner
1506
+ .shared
1507
+ .hooks
1508
+ .compaction_commits
1509
+ .load(Ordering::Acquire)
1510
+ }
1511
+
1512
+ /// While set, every compaction job's slice does a few units of work (one clock check's
1513
+ /// worth) and yields (test hook, D284): a test can stop it part-way.
1514
+ #[doc(hidden)]
1515
+ pub fn compaction_tiny_slices(&self, on: bool) {
1516
+ self.inner
1517
+ .shared
1518
+ .hooks
1519
+ .compaction_tiny_slices
1520
+ .store(on, Ordering::Release);
1521
+ }
1522
+
1523
+ /// Whether a compaction job is held before its first slice (test hook).
1524
+ #[doc(hidden)]
1525
+ pub fn compaction_held(&self) -> bool {
1526
+ !self
1527
+ .inner
1528
+ .shared
1529
+ .hooks
1530
+ .compaction_held
1531
+ .lock()
1532
+ .unwrap_or_else(PoisonError::into_inner)
1533
+ .is_empty()
1534
+ }
1535
+
1536
+ /// Threads that parked waiting for the manifest writer (`commit_req_from_thread`):
1537
+ /// counted after their last look at the exclusion and the pump's commit, so from then
1538
+ /// on only a wake (a release, a root commit's completion, their own request's answer)
1539
+ /// unparks them (test hook).
1540
+ #[doc(hidden)]
1541
+ pub fn manifest_thread_parks(&self) -> usize {
1542
+ self.inner
1543
+ .shared
1544
+ .hooks
1545
+ .manifest_thread_parks
1546
+ .load(Ordering::Acquire)
1547
+ }
1548
+
1549
+ /// Values separated into blob files at commit time since open (`large::separate`, #230):
1550
+ /// the commit-time separation path a deferred run must take as a plain one does (#306;
1551
+ /// test hook).
1552
+ #[doc(hidden)]
1553
+ pub fn commit_separations(&self) -> u64 {
1554
+ self.inner
1555
+ .shared
1556
+ .hooks
1557
+ .commit_separations
1558
+ .load(Ordering::Relaxed)
1559
+ }
1560
+
1561
+ /// Whether a manifest pump's root commit is in flight, not yet completed (test hook).
1562
+ #[doc(hidden)]
1563
+ pub fn manifest_commit_in_flight(&self) -> bool {
1564
+ self.inner.shared.manifest_flight.in_flight()
1565
+ }
1566
+
1567
+ /// Whether a background manifest commit is parked (test hook).
1568
+ #[doc(hidden)]
1569
+ pub fn manifest_commit_parked(&self) -> bool {
1570
+ self.inner
1571
+ .shared
1572
+ .hooks
1573
+ .manifest_parked
1574
+ .lock()
1575
+ .unwrap_or_else(PoisonError::into_inner)
1576
+ .is_some()
1577
+ }
1578
+
1579
+ /// Whether every shard has closed and the final close waits for the manifest writer
1580
+ /// (test hook).
1581
+ #[doc(hidden)]
1582
+ pub fn final_close_pending(&self) -> bool {
1583
+ self.inner.shared.close.pending()
1584
+ }
1585
+
1586
+ /// Whether the final close has run (test hook: application-owned shards finish the close
1587
+ /// as they are driven).
1588
+ #[doc(hidden)]
1589
+ pub fn close_finished(&self) -> bool {
1590
+ self.inner.shared.closed.load(Ordering::Acquire)
1591
+ }
1592
+
1593
+ /// Commits an empty manifest delta from this thread while a second request lands in
1594
+ /// the window between the drain's last `begin` and the release of the writer's
1595
+ /// exclusion (as a shard's submit would, whose pump then leaves). Returns whether that
1596
+ /// second request was committed too, which the release-then-re-check rule guarantees.
1597
+ #[doc(hidden)]
1598
+ pub fn probe_manifest_release_window(&self) -> Result<bool> {
1599
+ use std::task::{Context, Poll, Waker};
1600
+ let shared = &self.inner.shared;
1601
+ shared.hooks.manifest_race.store(true, Ordering::Release);
1602
+ manifest::commit_from_thread(shared, manifest::ReqKind::Edits(Vec::new()))?;
1603
+ let waiter = shared
1604
+ .hooks
1605
+ .manifest_race_waiter
1606
+ .lock()
1607
+ .unwrap_or_else(PoisonError::into_inner)
1608
+ .take();
1609
+ let Some(mut waiter) = waiter else {
1610
+ return Err(Error::Corruption("the race window was not entered".into()));
1611
+ };
1612
+ let mut cx = Context::from_waker(Waker::noop());
1613
+ Ok(match std::pin::Pin::new(&mut waiter).poll(&mut cx) {
1614
+ Poll::Ready(Some(Ok(_))) => true,
1615
+ Poll::Ready(Some(Err(e))) => return Err(e),
1616
+ Poll::Ready(None) | Poll::Pending => false,
1617
+ })
1618
+ }
1619
+
1620
+ /// Reads the manifest of a database no writer has open.
1621
+ #[doc(hidden)]
1622
+ pub fn inspect_manifest(vfs: &pigeonhole_io::VfsRef, path: &Path) -> Result<ManifestInfo> {
1623
+ let opened = Pager::open(vfs, path, false)?;
1624
+ let clean = opened.clean_shutdown();
1625
+ let (catalog, _) = manifest::load(&opened, 1, Arc::new(MergeRegistry::default()))?;
1626
+ Ok(ManifestInfo {
1627
+ version: opened.root().manifest_version,
1628
+ checkpoints: (*catalog.checkpoints).clone(),
1629
+ flushed: (*catalog.flushed).clone(),
1630
+ tablets: catalog.tablets().iter().map(|t| (t.id, t.table)).collect(),
1631
+ tablet_ranges: catalog
1632
+ .tablets()
1633
+ .into_iter()
1634
+ .map(|t| (t.id, t.table, t.start, t.end))
1635
+ .collect(),
1636
+ clean,
1637
+ })
1638
+ }
1639
+ }
1640
+
1641
+ /// A tablet, its owning shard and its row range `[start, end)` (a test hook).
1642
+ #[doc(hidden)]
1643
+ pub type TabletOwner = (TabletId, u16, Vec<u8>, Option<Vec<u8>>);
1644
+
1645
+ impl TabletMap {
1646
+ /// The tablets of `table` in row order, as `(tablet, shard, start, end)` (a test hook).
1647
+ #[doc(hidden)]
1648
+ pub fn ranges(&self, table: TableId) -> Vec<TabletOwner> {
1649
+ self.tablets_of(table)
1650
+ .iter()
1651
+ .map(|t| (t.id, t.shard.0, t.start.clone(), t.end.clone()))
1652
+ .collect()
1653
+ }
1654
+ }