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,1600 @@
1
+ //! The change feed's reader in the writer process (D310 PR 3, #1248; rev 3 §2.4–§2.6).
2
+ //!
3
+ //! A [`FeedReader`] merges every WAL stream's records into whole commits in seqno order, up
4
+ //! to the feed's frontier ([`Engine::feed_frontier`](crate::Engine::feed_frontier)). It
5
+ //! reads the stream files (through [`FeedCursor`]), never the writer's memory: by the M1
6
+ //! invariant (concurrency.md, the written-hold protocol) every record at or below the
7
+ //! frontier is in its file, so a poll that loads the frontier and then reads every stream to
8
+ //! its end has every commit up to it.
9
+ //!
10
+ //! - **Keys.** A single is ordered by its seqno, a cross-shard commit by its Decision's apply
11
+ //! seqno; its PREPAREs are held by id until the Decision is read (FORMAT §10.3, D263).
12
+ //! - **An aborted round's PREPARE** is dropped once its own stream's checkpoint passed it
13
+ //! with no Decision read (simp724's rule): a checkpoint passes a PREPARE only once it is
14
+ //! aborted, or decided and settled, and then its Decision was in its file before the
15
+ //! checkpoint moved. The checkpoints are loaded before the frontier. The stream's floor
16
+ //! is the backstop.
17
+ //! - **The mark rule** (§2.2): a record counts only in a segment whose session fed every
18
+ //! table the feed follows, within sessions that chain with no other root commit between
19
+ //! them (the sidecar, FORMAT §10.4).
20
+ //! - **Tokens** fall between seqnos (§2.5): the last delivered seqno, and per stream where to
21
+ //! read again and how far the delivered records reached.
22
+ //! - **Expiry** ([`Expiry`]) is sticky.
23
+
24
+ use std::collections::{BTreeMap, HashMap};
25
+ use std::sync::Arc;
26
+ use std::sync::atomic::{AtomicU64, Ordering};
27
+ use std::time::{Duration, Instant};
28
+
29
+ use pigeonhole_compaction::blob_pointer;
30
+ use pigeonhole_format::feed::{FeedEntry, FeedHeader, FeedTables, decode_entries};
31
+ use pigeonhole_format::wal::{BatchRef, WalRecord};
32
+ use pigeonhole_format::{FamilyId, Kind, Lsn, Seqno, StreamId, TableId, Timestamp};
33
+ use pigeonhole_io::OpenOptions;
34
+ use pigeonhole_wal::{FeedCursor, Step};
35
+
36
+ use crate::shard::{Shared, Wake};
37
+ use crate::{Error, Result};
38
+ use pigeonhole_shm::ShmRegion;
39
+
40
+ /// The token's format version.
41
+ const TOKEN_VERSION: u8 = 1;
42
+
43
+ /// How long a waiting reader sleeps when the frontier is held by the change feed's own
44
+ /// holds (a lazy flush or background sync to come) or a stream's next segment header is not
45
+ /// on disk yet: the wait is bounded, never a spin.
46
+ const HELD_BACKOFF: Duration = Duration::from_millis(1);
47
+
48
+ /// Where a feed starts.
49
+ #[derive(Debug, Clone)]
50
+ pub enum FeedStart {
51
+ /// With the commits after the frontier at subscription.
52
+ Now,
53
+ /// With the oldest commit retained history still holds for the feed's tables. Under load
54
+ /// that history may be recycled before the reader reaches it, which expires the feed at
55
+ /// once; [`FeedStart::After`] from a snapshot is the way to bootstrap.
56
+ Oldest,
57
+ /// With the commits after `seqno` (a snapshot's seqno).
58
+ After(Seqno),
59
+ /// Where a token left off ([`FeedReader::token`]).
60
+ Token(Vec<u8>),
61
+ }
62
+
63
+ /// What a feed follows.
64
+ #[derive(Debug, Clone)]
65
+ pub struct FeedSpec {
66
+ /// The tables (at least one), each fed by the session.
67
+ pub tables: Vec<TableId>,
68
+ /// Only mutations of rows starting with these bytes (empty: every row).
69
+ pub prefix: Vec<u8>,
70
+ /// The durable frontier (the default, §2.4 S3) rather than the visible one.
71
+ pub durable: bool,
72
+ /// Where to start.
73
+ pub start: FeedStart,
74
+ }
75
+
76
+ /// One mutation of a delivered commit.
77
+ #[derive(Debug, Clone, PartialEq, Eq)]
78
+ pub struct Change {
79
+ /// Its table.
80
+ pub table: TableId,
81
+ /// Its family.
82
+ pub family: FamilyId,
83
+ /// Put, Merge, or one of the delete kinds.
84
+ pub kind: Kind,
85
+ /// Its timestamp: explicit, or the commit's.
86
+ pub ts: Timestamp,
87
+ /// The row.
88
+ pub row: Vec<u8>,
89
+ /// The qualifier (empty for a family delete).
90
+ pub qualifier: Vec<u8>,
91
+ /// The stored value (FORMAT §3), with a separated value resolved; empty for deletes.
92
+ pub value: Vec<u8>,
93
+ }
94
+
95
+ /// One whole commit (§2.5): every mutation of it the feed follows.
96
+ #[derive(Debug, Clone, Default, PartialEq, Eq)]
97
+ pub struct Commit {
98
+ /// The seqno it applied at.
99
+ pub seqno: Seqno,
100
+ /// Its commit timestamp.
101
+ pub ts: Timestamp,
102
+ /// Its mutations in the feed's tables and prefix, in record order (shares in their
103
+ /// participants' order).
104
+ pub changes: Vec<Change>,
105
+ }
106
+
107
+ /// Why a feed ended (§2.6): the feed can't deliver what follows its position.
108
+ #[derive(Debug, Clone, PartialEq, Eq)]
109
+ pub struct Expiry {
110
+ /// What happened, for people.
111
+ pub reason: String,
112
+ /// The oldest seqno history still holds, when known.
113
+ pub oldest_retained: Option<Seqno>,
114
+ }
115
+
116
+ /// What [`FeedReader::try_next`] found.
117
+ #[derive(Debug)]
118
+ pub enum Next<'a> {
119
+ /// The next whole commit.
120
+ Commit(&'a Commit),
121
+ /// Nothing past the frontier yet.
122
+ Pending,
123
+ /// The feed has expired (and stays so).
124
+ Expired(&'a Expiry),
125
+ }
126
+
127
+ /// A mutation as read, before its commit's timestamp is known.
128
+ #[derive(Debug, Clone)]
129
+ struct Raw {
130
+ table: TableId,
131
+ family: FamilyId,
132
+ kind: Kind,
133
+ ts: Option<Timestamp>,
134
+ row: Vec<u8>,
135
+ qualifier: Vec<u8>,
136
+ value: Vec<u8>,
137
+ }
138
+
139
+ /// A record as read, owned.
140
+ enum Item {
141
+ Single {
142
+ seqno: Seqno,
143
+ ts: Timestamp,
144
+ changes: Vec<Raw>,
145
+ },
146
+ Prepare {
147
+ id: Seqno,
148
+ changes: Vec<Raw>,
149
+ },
150
+ Decision {
151
+ id: Seqno,
152
+ apply: Seqno,
153
+ ts: Timestamp,
154
+ participants: Vec<StreamId>,
155
+ },
156
+ Other,
157
+ }
158
+
159
+ /// A record read but not yet delivered, by key.
160
+ #[derive(Debug)]
161
+ enum Pending {
162
+ Single {
163
+ ts: Timestamp,
164
+ changes: Vec<Raw>,
165
+ stream: usize,
166
+ start: Lsn,
167
+ end: Lsn,
168
+ },
169
+ Decided {
170
+ id: Seqno,
171
+ ts: Timestamp,
172
+ participants: Vec<StreamId>,
173
+ stream: usize,
174
+ start: Lsn,
175
+ end: Lsn,
176
+ /// The session that wrote the Decision.
177
+ session: u64,
178
+ },
179
+ }
180
+
181
+ /// A PREPARE waiting for its Decision.
182
+ #[derive(Debug)]
183
+ struct Held {
184
+ stream: usize,
185
+ start: Lsn,
186
+ end: Lsn,
187
+ changes: Vec<Raw>,
188
+ /// Read in a segment outside the feed's history (the mark rule): delivering it expires.
189
+ outside: bool,
190
+ }
191
+
192
+ /// One stream's reading state.
193
+ #[derive(Debug)]
194
+ struct StreamRead {
195
+ cursor: FeedCursor,
196
+ /// Just past the last delivered (or skipped) record of this stream.
197
+ delivered_end: Lsn,
198
+ /// From a token: the delivered records reached here, so the stream must too.
199
+ must_reach: Option<Lsn>,
200
+ }
201
+
202
+ /// The sessions whose segments the feed's history runs through (the mark rule).
203
+ #[derive(Debug)]
204
+ struct History {
205
+ sessions: Vec<u64>,
206
+ }
207
+
208
+ impl History {
209
+ fn holds(&self, session: u64) -> bool {
210
+ session != 0 && self.sessions.contains(&session)
211
+ }
212
+ }
213
+
214
+ /// Distinguishes feed readers' entries in the watermark registries from commits' and
215
+ /// shards' (`watermark_waiters`): the top two bits set.
216
+ static NEXT_KEY: AtomicU64 = AtomicU64::new(0);
217
+
218
+ /// A thread-unparking waker for a blocking wait.
219
+ struct Unpark(std::thread::Thread);
220
+
221
+ impl std::task::Wake for Unpark {
222
+ fn wake(self: Arc<Self>) {
223
+ self.0.unpark();
224
+ }
225
+ }
226
+
227
+ /// A subscription to the committed changes of some tables (D310): see the module docs.
228
+ pub struct FeedReader {
229
+ shared: Arc<Shared>,
230
+ /// The shared-memory region the frontier and the streams' marks are read from: the
231
+ /// writer's own, or a reader process's attachment (D310 PR 4). Stale once the writer
232
+ /// that made it is gone: the feed then fails with `SnapshotExpired` and the caller
233
+ /// subscribes again from its token.
234
+ shm: ShmRegion,
235
+ /// The writer's feed, in the writer process (its checkpoint history serves start
236
+ /// positions and its intervals bound waits); `None` in a reader process.
237
+ writer: Option<Arc<crate::feed::Feed>>,
238
+ /// The view blob values are resolved through: the writer's current one, or a reader
239
+ /// process's view of its attachment.
240
+ view: ViewFn,
241
+ /// A reader process's wait between polls, doubling while nothing arrives.
242
+ backoff: Duration,
243
+ /// Since when a reader process has waited for a view listing the next commit's blob
244
+ /// files.
245
+ blob_wait: Option<Instant>,
246
+ tables: Vec<TableId>,
247
+ prefix: Vec<u8>,
248
+ durable: bool,
249
+ streams: Vec<StreamRead>,
250
+ history: History,
251
+ /// Every commit with a key at or below this was delivered, skipped or precedes the
252
+ /// start.
253
+ delivered: Seqno,
254
+ /// The frontier as of the last poll.
255
+ frontier: Seqno,
256
+ /// The frontier the streams were last read to their ends under (#1448): while the
257
+ /// frontier stays there, no commit happened since, and every record at or below it was
258
+ /// read then, so a poll reads nothing.
259
+ read_through: Option<Seqno>,
260
+ /// Polls that read the streams (an inspection count for tests).
261
+ stream_reads: u64,
262
+ /// The newest session of any record read (the token's anchor).
263
+ session: u64,
264
+ ready: BTreeMap<Seqno, Pending>,
265
+ held: HashMap<Seqno, Vec<Held>>,
266
+ /// Rounds whose shares rule C dropped (no Decision read, the checkpoint passed): id →
267
+ /// (stream, epoch) of a dropped share. A Decision for one later expires the feed rather
268
+ /// than passing over its commit as recovery's all-or-nothing (simp724's H1 on #1316).
269
+ /// An entry goes once the floor passes its segment.
270
+ dropped: HashMap<Seqno, (usize, u32)>,
271
+ out: Commit,
272
+ expired: Option<Expiry>,
273
+ /// An error that ended the reader once a commit was already taken (a blob value that
274
+ /// couldn't be read): every later call fails, since going on would skip that commit.
275
+ failed: Option<String>,
276
+ key: u64,
277
+ /// This open's session.
278
+ current: u64,
279
+ }
280
+
281
+ impl Drop for FeedReader {
282
+ fn drop(&mut self) {
283
+ // An async reader may have left a waker for the feed's holds.
284
+ if let Some(feed) = &self.writer {
285
+ feed.forget_hold_waiter(self.key);
286
+ }
287
+ }
288
+ }
289
+
290
+ impl std::fmt::Debug for FeedReader {
291
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
292
+ f.debug_struct("FeedReader")
293
+ .field("tables", &self.tables)
294
+ .field("durable", &self.durable)
295
+ .field("delivered", &self.delivered)
296
+ .field("frontier", &self.frontier)
297
+ .field("expired", &self.expired)
298
+ .finish_non_exhaustive()
299
+ }
300
+ }
301
+
302
+ /// The current view, for resolving blob values: the writer's, or a reader process's view of
303
+ /// its attachment.
304
+ pub(crate) type ViewFn = Box<dyn Fn() -> Result<Arc<crate::snapshot::View>> + Send + Sync>;
305
+
306
+ /// Where a feed reads from (D310 PR 4): the shared-memory region of the writer it follows,
307
+ /// how to get the current view, and the writer's feed when this is the writer process.
308
+ pub(crate) struct Origin {
309
+ pub(crate) shm: ShmRegion,
310
+ pub(crate) view: ViewFn,
311
+ pub(crate) writer: Option<Arc<crate::feed::Feed>>,
312
+ }
313
+
314
+ /// A reader process's first and longest waits between polls: it watches the writer's
315
+ /// watermarks in shared memory, so the writer does no per-commit work for it.
316
+ const READER_BACKOFF_MIN: Duration = Duration::from_micros(50);
317
+ const READER_BACKOFF_MAX: Duration = Duration::from_millis(5);
318
+ /// How long a reader process waits for a view that lists a commit's blob files before it
319
+ /// takes them as removed (the bound a reader snapshot waits for its view too).
320
+ const READER_BLOB_WAIT: Duration = Duration::from_secs(1);
321
+
322
+ /// What one poll left.
323
+ enum Polled {
324
+ Commit,
325
+ Pending { held: bool },
326
+ Expired,
327
+ }
328
+
329
+ fn expiry(reason: impl Into<String>) -> Expiry {
330
+ Expiry {
331
+ reason: reason.into(),
332
+ oldest_retained: None,
333
+ }
334
+ }
335
+
336
+ impl FeedReader {
337
+ pub(crate) fn open(shared: Arc<Shared>, spec: FeedSpec, origin: Origin) -> Result<FeedReader> {
338
+ // The session and fed tables of the writer followed: the writer's own feed, or in a
339
+ // reader process the writer's session entry, the sidecar's last (it is written before
340
+ // the writer's shared memory exists, so the attachment's writer wrote it).
341
+ let (session, fed) = match &origin.writer {
342
+ Some(feed) => (feed.session, feed.tables.clone()),
343
+ None => writer_session(&shared)?,
344
+ };
345
+ let mut tables = spec.tables;
346
+ tables.sort_unstable();
347
+ tables.dedup();
348
+ if tables.is_empty() {
349
+ return Err(Error::InvalidArgument(
350
+ "a change feed follows at least one table".into(),
351
+ ));
352
+ }
353
+ if let Some(t) = tables.iter().find(|&&t| !fed.contains(t)) {
354
+ return Err(Error::InvalidArgument(format!(
355
+ "table {} is not fed: name it in the feed's tables at open",
356
+ t.0
357
+ )));
358
+ }
359
+ let history = read_history(&shared, session, &tables)?;
360
+ let key = (3 << 62) | NEXT_KEY.fetch_add(1, Ordering::Relaxed);
361
+ let db_id = shared.pager.db_id();
362
+ let mut this = FeedReader {
363
+ tables,
364
+ prefix: spec.prefix,
365
+ durable: spec.durable,
366
+ streams: Vec::with_capacity(shared.shards),
367
+ history,
368
+ delivered: 0,
369
+ frontier: 0,
370
+ read_through: None,
371
+ stream_reads: 0,
372
+ session: 0,
373
+ ready: BTreeMap::new(),
374
+ held: HashMap::new(),
375
+ dropped: HashMap::new(),
376
+ out: Commit::default(),
377
+ expired: None,
378
+ failed: None,
379
+ key,
380
+ current: session,
381
+ shared,
382
+ shm: origin.shm,
383
+ writer: origin.writer,
384
+ view: origin.view,
385
+ backoff: READER_BACKOFF_MIN,
386
+ blob_wait: None,
387
+ };
388
+ // `Oldest` from an earlier session still kept whole (#1465), when there is one.
389
+ let earlier = match spec.start {
390
+ FeedStart::Oldest => this.earlier_start(db_id),
391
+ _ => None,
392
+ };
393
+ // Where each stream starts, and the bound below which nothing is delivered.
394
+ let starts: Vec<(Lsn, Option<Lsn>)> = match (spec.start, earlier) {
395
+ (_, Some((bound, at))) => {
396
+ this.delivered = bound;
397
+ at.into_iter().map(|a| (a, None)).collect()
398
+ }
399
+ (FeedStart::Token(bytes), None) => match this.decode_token(&bytes, db_id)? {
400
+ Ok(starts) => starts,
401
+ Err(e) => {
402
+ this.expired = Some(e);
403
+ return Ok(this);
404
+ }
405
+ },
406
+ (start, None) => {
407
+ let mut reader_starts: Vec<Lsn> = Vec::new();
408
+ // A reader process's view of each stream's floor and lost bound, loaded once
409
+ // (the floor first, so the bound is at least that floor's).
410
+ let marks: Vec<pigeonhole_shm::FeedMarksView> = (0..this.shared.shards)
411
+ .map(|s| this.shm.feed_marks(s as u32))
412
+ .collect();
413
+ let bound = match start {
414
+ FeedStart::Now => {
415
+ // A reader process starts each stream at its checkpoint, loaded
416
+ // first: every record before it was applied and visible when the
417
+ // checkpoint moved, so its key is at or below the bound loaded next.
418
+ if this.writer.is_none() {
419
+ reader_starts = (0..this.shared.shards)
420
+ .map(|s| Lsn(this.shm.feed_marks(s as u32).checkpoint))
421
+ .collect();
422
+ }
423
+ this.shm
424
+ .visible_seqno()
425
+ .max(this.shm.written_seqno(this.durable))
426
+ .max(this.writer.as_ref().map_or(0, |f| f.checkpoint_key()))
427
+ }
428
+ FeedStart::After(seqno) => seqno,
429
+ FeedStart::Oldest => {
430
+ // The largest bound every stream's retained history serves: from the
431
+ // writer's checkpoint history, or in a reader process from the
432
+ // bounds it mirrors (`FEED_BOUND`).
433
+ match &this.writer {
434
+ Some(feed) => (0..this.shared.shards)
435
+ .map(|s| feed.oldest_bound(s, this.floor(s)))
436
+ .max()
437
+ .unwrap_or(0),
438
+ None => marks.iter().map(|m| m.bound).max().unwrap_or(0),
439
+ }
440
+ }
441
+ FeedStart::Token(_) => unreachable!("handled above"),
442
+ };
443
+ this.delivered = bound;
444
+ let mut starts = Vec::with_capacity(this.shared.shards);
445
+ for (s, m) in marks.iter().enumerate() {
446
+ // A reader process has no checkpoint history: from its checkpoint for
447
+ // `Now`, else from the stream's floor, skipping keys at or below the
448
+ // bound (correct, and slower to start).
449
+ let at = match &this.writer {
450
+ Some(feed) => feed.start_at(s, bound, this.floor(s)),
451
+ // A record dropped below the floor may have a key above the bound:
452
+ // that history is gone (simp724's B1), as `start_at` says for the
453
+ // writer.
454
+ None if reader_starts.is_empty() && m.bound > bound => None,
455
+ None => Some(
456
+ reader_starts
457
+ .get(s)
458
+ .copied()
459
+ .unwrap_or(Lsn::new(m.floor, 0)),
460
+ ),
461
+ };
462
+ match at {
463
+ Some(at) => starts.push((at, None)),
464
+ None => {
465
+ this.expired = Some(expiry(format!(
466
+ "history past seqno {bound} is no longer retained"
467
+ )));
468
+ return Ok(this);
469
+ }
470
+ }
471
+ }
472
+ starts
473
+ }
474
+ };
475
+ for (s, (at, must_reach)) in starts.into_iter().enumerate() {
476
+ let mut cursor = FeedCursor::open(
477
+ &this.shared.vfs,
478
+ &this.shared.path,
479
+ StreamId(s as u32),
480
+ db_id,
481
+ at,
482
+ )?;
483
+ // In the writer's process a stop in the head segment reads no segment headers
484
+ // (D310 PR 5b's subscriber cost; a reader process has no marks to follow).
485
+ if let Some(marks) = this.writer.as_ref().and_then(|f| f.marks(s)) {
486
+ cursor.follow_head(Arc::clone(marks));
487
+ }
488
+ this.streams.push(StreamRead {
489
+ cursor,
490
+ delivered_end: at,
491
+ must_reach,
492
+ });
493
+ }
494
+ Ok(this)
495
+ }
496
+
497
+ /// The next whole commit, without waiting.
498
+ pub fn try_next(&mut self) -> Result<Next<'_>> {
499
+ let polled = self.poll()?;
500
+ Ok(self.lend(polled))
501
+ }
502
+
503
+ /// The next whole commit, waiting up to `timeout` for one. Waits on the watermark the
504
+ /// feed follows (never spins): a commit wakes it once its seqno passes; where the feed's
505
+ /// own holds keep the frontier back, it looks again every millisecond.
506
+ pub fn wait(&mut self, timeout: Duration) -> Result<Next<'_>> {
507
+ let deadline = Instant::now() + timeout;
508
+ loop {
509
+ let polled = self.poll()?;
510
+ let Polled::Pending { held } = polled else {
511
+ self.backoff = READER_BACKOFF_MIN;
512
+ return Ok(self.lend(polled));
513
+ };
514
+ let now = Instant::now();
515
+ if now >= deadline {
516
+ return Ok(Next::Pending);
517
+ }
518
+ let mut park = deadline - now;
519
+ if self.writer.is_none() {
520
+ // A reader process watches shared memory: a bounded backoff, never a spin.
521
+ park = park.min(self.backoff);
522
+ self.backoff = (self.backoff * 2).min(READER_BACKOFF_MAX);
523
+ } else if held {
524
+ park = park.min(HELD_BACKOFF);
525
+ } else {
526
+ let waker = std::task::Waker::from(Arc::new(Unpark(std::thread::current())));
527
+ let target = self.frontier.saturating_add(1);
528
+ let waiters = if self.durable {
529
+ &self.shared.durable_waiters
530
+ } else {
531
+ &self.shared.waiters
532
+ };
533
+ waiters.register(self.key, target, Wake::Task(waker));
534
+ // A publish that missed the registration is seen here.
535
+ if self.shm.written_seqno(self.durable) >= target {
536
+ continue;
537
+ }
538
+ // The feed's holds may pass the watermark later than the publish that
539
+ // wakes this: bound the sleep by the hold's interval.
540
+ if let Some(feed) = &self.writer {
541
+ let hold = if self.durable {
542
+ feed.sync_interval_nanos
543
+ } else {
544
+ feed.flush_interval_nanos
545
+ };
546
+ park = park.min(Duration::from_nanos(hold));
547
+ }
548
+ }
549
+ std::thread::park_timeout(park);
550
+ }
551
+ }
552
+
553
+ /// The next whole commit, for an async caller (D310 PR 5a): `Poll::Ready` with what
554
+ /// [`try_next`](Self::try_next) would return once there is a commit or an expiry,
555
+ /// `Poll::Pending` otherwise, with `cx`'s waker registered so the task is woken (never
556
+ /// spinning) when the frontier can move: by the watermark the feed follows, or, where
557
+ /// the feed's own holds keep it back, by the shard as it lets a hold go.
558
+ ///
559
+ /// The writer process only: in a reader process nothing in this process learns of the
560
+ /// writer's progress, so it is `Unsupported` there; use [`wait`](Self::wait) on a thread
561
+ /// of its own (#1407 tracks an async form).
562
+ pub fn poll_next(
563
+ &mut self,
564
+ cx: &mut std::task::Context<'_>,
565
+ ) -> std::task::Poll<Result<Next<'_>>> {
566
+ use std::task::Poll;
567
+ let Some(feed) = self.writer.clone() else {
568
+ return Poll::Ready(Err(Error::Unsupported(
569
+ "an async change feed in a reader process: call the feed's blocking `next` on a \
570
+ thread of its own (#1407)",
571
+ )));
572
+ };
573
+ // Whether this call left a waker on the hold list: a poll that then finds a commit
574
+ // takes it back, so releases don't keep paying for a waiter that isn't waiting
575
+ // (simp724's P1 on #1408).
576
+ let mut on_hold_list = false;
577
+ loop {
578
+ let polled = match self.poll() {
579
+ Ok(p) => p,
580
+ Err(e) => {
581
+ if on_hold_list {
582
+ feed.forget_hold_waiter(self.key);
583
+ }
584
+ return Poll::Ready(Err(e));
585
+ }
586
+ };
587
+ let Polled::Pending { held } = polled else {
588
+ if on_hold_list {
589
+ feed.forget_hold_waiter(self.key);
590
+ }
591
+ return Poll::Ready(Ok(self.lend(polled)));
592
+ };
593
+ let target = self.frontier.saturating_add(1);
594
+ if held {
595
+ // The feed's own holds keep the frontier below the watermark: the shard wakes
596
+ // this when it lets one go.
597
+ feed.wait_for_hold(self.key, cx.waker());
598
+ on_hold_list = true;
599
+ } else {
600
+ let waiters = if self.durable {
601
+ &self.shared.durable_waiters
602
+ } else {
603
+ &self.shared.waiters
604
+ };
605
+ waiters.register(self.key, target, Wake::Task(cx.waker().clone()));
606
+ }
607
+ // A publish or a release that missed the registration is seen here.
608
+ if self.shm.written_seqno(self.durable) < target {
609
+ return Poll::Pending;
610
+ }
611
+ }
612
+ }
613
+
614
+ fn lend(&self, polled: Polled) -> Next<'_> {
615
+ match polled {
616
+ Polled::Commit => Next::Commit(&self.out),
617
+ Polled::Pending { .. } => Next::Pending,
618
+ Polled::Expired => Next::Expired(self.expired.as_ref().expect("set")),
619
+ }
620
+ }
621
+
622
+ /// PREPAREs read and held for their Decision (an inspection helper for tests).
623
+ #[cfg(feature = "test-hooks")]
624
+ #[doc(hidden)]
625
+ pub fn held_prepares(&self) -> usize {
626
+ self.held.values().map(Vec::len).sum()
627
+ }
628
+
629
+ /// The frontier as of the last poll.
630
+ pub fn frontier(&self) -> Seqno {
631
+ self.frontier
632
+ }
633
+
634
+ /// The last delivered seqno: every commit at or below it was delivered (or precedes the
635
+ /// feed's start).
636
+ pub fn delivered(&self) -> Seqno {
637
+ self.delivered
638
+ }
639
+
640
+ /// Where this feed is, to resume it with [`FeedStart::Token`]: just past the last
641
+ /// commit [`FeedReader::try_next`] returned, never inside one (§2.5).
642
+ pub fn token(&self) -> Vec<u8> {
643
+ let mut t = Vec::with_capacity(1 + 16 + 4 + 8 + 8 + 16 * self.streams.len());
644
+ t.push(TOKEN_VERSION);
645
+ t.extend_from_slice(&self.shared.pager.db_id());
646
+ t.extend_from_slice(&(self.streams.len() as u32).to_le_bytes());
647
+ t.extend_from_slice(&self.delivered.to_le_bytes());
648
+ t.extend_from_slice(&self.session.to_le_bytes());
649
+ for (s, st) in self.streams.iter().enumerate() {
650
+ t.extend_from_slice(&self.hint(s).0.to_le_bytes());
651
+ t.extend_from_slice(&st.delivered_end.0.to_le_bytes());
652
+ }
653
+ t
654
+ }
655
+
656
+ /// Where stream `s` must be read again from to deliver everything after `delivered`:
657
+ /// the earliest record of it read but not delivered (held or pending), else the
658
+ /// cursor.
659
+ fn hint(&self, s: usize) -> Lsn {
660
+ let mut at = self.streams[s].cursor.position();
661
+ for p in self.ready.values() {
662
+ let (stream, start) = match p {
663
+ Pending::Single { stream, start, .. } | Pending::Decided { stream, start, .. } => {
664
+ (*stream, *start)
665
+ }
666
+ };
667
+ if stream == s {
668
+ at = at.min(start);
669
+ }
670
+ }
671
+ for h in self.held.values().flatten() {
672
+ if h.stream == s {
673
+ at = at.min(h.start);
674
+ }
675
+ }
676
+ at
677
+ }
678
+
679
+ /// Decodes a token into each stream's start and must-reach position, or the reason it
680
+ /// can't resume.
681
+ #[allow(clippy::type_complexity)]
682
+ fn decode_token(
683
+ &mut self,
684
+ bytes: &[u8],
685
+ db_id: [u8; 16],
686
+ ) -> Result<std::result::Result<Vec<(Lsn, Option<Lsn>)>, Expiry>> {
687
+ let bad = || Error::InvalidArgument("not a change feed token".into());
688
+ let (&version, rest) = bytes.split_first().ok_or_else(bad)?;
689
+ if version != TOKEN_VERSION || rest.len() < 16 + 4 + 8 + 8 {
690
+ return Err(bad());
691
+ }
692
+ let u64_at = |b: &[u8], at: usize| u64::from_le_bytes(b[at..at + 8].try_into().unwrap());
693
+ if rest[..16] != db_id {
694
+ return Err(Error::InvalidArgument(
695
+ "the token is another database's".into(),
696
+ ));
697
+ }
698
+ let streams = u32::from_le_bytes(rest[16..20].try_into().unwrap()) as usize;
699
+ let delivered = u64_at(rest, 20);
700
+ let session = u64_at(rest, 28);
701
+ let per = &rest[36..];
702
+ if per.len() != streams * 16 {
703
+ return Err(bad());
704
+ }
705
+ self.delivered = delivered;
706
+ self.session = session;
707
+ if streams != self.shared.shards {
708
+ return Ok(Err(expiry(format!(
709
+ "the shard count changed ({streams} to {})",
710
+ self.shared.shards
711
+ ))));
712
+ }
713
+ if session != 0 && !self.history.holds(session) {
714
+ return Ok(Err(expiry(
715
+ "another session wrote without feeding these tables since the token",
716
+ )));
717
+ }
718
+ let mut starts = Vec::with_capacity(streams);
719
+ for s in 0..streams {
720
+ let hint = Lsn(u64_at(per, s * 16));
721
+ let reached = Lsn(u64_at(per, s * 16 + 8));
722
+ if hint.epoch() != 0 && hint.epoch() < self.floor(s) {
723
+ return Ok(Err(expiry("retention passed the token")));
724
+ }
725
+ starts.push((hint, (reached > hint).then_some(reached)));
726
+ }
727
+ Ok(Ok(starts))
728
+ }
729
+
730
+ fn poll(&mut self) -> Result<Polled> {
731
+ if let Some(e) = &self.failed {
732
+ return Err(Error::Corruption(format!(
733
+ "the change feed stopped at an earlier error: {e}"
734
+ )));
735
+ }
736
+ if self.expired.is_some() {
737
+ return Ok(Polled::Expired);
738
+ }
739
+ // The writer this region belongs to is gone (a reader process's attachment after a
740
+ // writer restart, D310 M2): seqnos may be reissued, so nothing more is read here.
741
+ // The caller subscribes again from its token, which the new writer checks.
742
+ if self.shm.is_stale() {
743
+ return Err(Error::SnapshotExpired);
744
+ }
745
+ // A commit already read and below the frontier goes first.
746
+ if self.emit()? {
747
+ return Ok(Polled::Commit);
748
+ }
749
+ if self.expired.is_some() {
750
+ return Ok(Polled::Expired);
751
+ }
752
+ // simp724's order: the checkpoints, then the frontier, each Acquire from the
753
+ // shared-memory marks the writer mirrors (layout version 8), then every stream read
754
+ // to its readable end. By M1 every record at or below F is then read: F never passes
755
+ // a record behind a held segment header (FORMAT §10.1 rule 1), since D200 hides its
756
+ // group until a sync writes that header and the feed's holds settle on
757
+ // `Wal::written` (which excludes it). `it::feed_head` pins this; no head mark is
758
+ // needed (D310 PR 4).
759
+ let checkpoints: Vec<Lsn> = (0..self.streams.len())
760
+ .map(|s| Lsn(self.shm.feed_marks(s as u32).checkpoint))
761
+ .collect();
762
+ let frontier = self.shm.written_seqno(self.durable);
763
+ // Reader processes: where a test restarts the writer between the stale check above
764
+ // and the reads below (simp724's B2).
765
+ #[cfg(feature = "test-hooks")]
766
+ self.shared
767
+ .hooks
768
+ .sites
769
+ .run(crate::engine::hooks::HookSite::ReaderFeedReads);
770
+ // Nothing committed since the streams were last read to their ends under this
771
+ // frontier (it rises with every commit): by M1 every record at or below it was read
772
+ // then, and `emit` above found none left to deliver. Reading again would only find
773
+ // the same ends, which costs a stream's segment headers and a chunk of frames each
774
+ // (#1448: an idle reader process spent 1-1.7 ms of CPU per poll there). Not while a
775
+ // PREPARE is held: a checkpoint or floor can move without a commit (a flush), and
776
+ // `drop_aborted` (rule C) must see it, or the commits behind an aborted round wait
777
+ // for an unrelated one (feed1248's P1 on #1449). A writer restart since the stale
778
+ // check above is seen here, as after the reads below.
779
+ if self.read_through == Some(frontier) && self.held.is_empty() {
780
+ if self.shm.is_stale() {
781
+ return Err(Error::SnapshotExpired);
782
+ }
783
+ return Ok(self.pending_state());
784
+ }
785
+ self.stream_reads += 1;
786
+ for s in 0..self.streams.len() {
787
+ if !self.read_stream(s)? {
788
+ return Ok(Polled::Expired);
789
+ }
790
+ }
791
+ // The writer may have restarted while the streams were read (simp724's B2): the new
792
+ // session's records are then in, read as outside the history, and the frontier is
793
+ // the old one's. Nothing read here is delivered: the caller resubscribes from the
794
+ // token. A new writer's segments are written after its shared memory exists, so this
795
+ // check sees every such restart.
796
+ if self.shm.is_stale() {
797
+ return Err(Error::SnapshotExpired);
798
+ }
799
+ // Only now: simp724's rule holds once every stream was read to its end after the
800
+ // checkpoints were loaded.
801
+ let floors: Vec<u32> = (0..self.streams.len()).map(|s| self.floor(s)).collect();
802
+ if let Some(e) = self.drop_aborted(&checkpoints, &floors) {
803
+ self.expired = Some(e);
804
+ return Ok(Polled::Expired);
805
+ }
806
+ self.frontier = self.frontier.max(frontier);
807
+ self.read_through = Some(frontier);
808
+ if self.emit()? {
809
+ return Ok(Polled::Commit);
810
+ }
811
+ if self.expired.is_some() {
812
+ return Ok(Polled::Expired);
813
+ }
814
+ Ok(self.pending_state())
815
+ }
816
+
817
+ /// Nothing to deliver now: whether the feed's own holds keep the frontier below the
818
+ /// watermark it follows (the visible watermark may be past the frontier).
819
+ fn pending_state(&self) -> Polled {
820
+ let watermark = if self.durable {
821
+ self.shm.durable_seqno()
822
+ } else {
823
+ self.shm.visible_seqno()
824
+ };
825
+ Polled::Pending {
826
+ held: watermark > self.frontier,
827
+ }
828
+ }
829
+
830
+ /// Polls that read the streams to their ends since the reader opened (#1448).
831
+ #[cfg(feature = "test-hooks")]
832
+ pub fn stream_reads(&self) -> u64 {
833
+ self.stream_reads
834
+ }
835
+
836
+ /// Reads stream `s` to its readable end. Returns `false` once the feed expired.
837
+ fn read_stream(&mut self, s: usize) -> Result<bool> {
838
+ loop {
839
+ let before = self.streams[s].cursor.position();
840
+ let Some((start, end, session, item)) = self.read_one(s)? else {
841
+ return Ok(self.expired.is_none());
842
+ };
843
+ // A token's delivered records must still be there (a torn tail or a restart
844
+ // that lost them expires it, M2).
845
+ if let Some(m) = self.streams[s].must_reach {
846
+ if start.epoch() != m.epoch() && before.epoch() == m.epoch() && before < m {
847
+ self.expired = Some(expiry(
848
+ "records the feed delivered were lost (a torn tail or a writer restart)",
849
+ ));
850
+ return Ok(false);
851
+ }
852
+ if end >= m {
853
+ self.streams[s].must_reach = None;
854
+ }
855
+ }
856
+ let inside = self.history.holds(session);
857
+ if inside {
858
+ self.session = self.session.max(session);
859
+ }
860
+ match item {
861
+ Item::Single { seqno, ts, changes } => {
862
+ if seqno <= self.delivered {
863
+ let st = &mut self.streams[s];
864
+ st.delivered_end = st.delivered_end.max(end);
865
+ continue;
866
+ }
867
+ if !inside {
868
+ // A writer restart, not a gap: the caller resubscribes (B2).
869
+ if self.shm.is_stale() {
870
+ return Err(Error::SnapshotExpired);
871
+ }
872
+ self.expired = Some(gap(seqno));
873
+ return Ok(false);
874
+ }
875
+ self.ready.insert(
876
+ seqno,
877
+ Pending::Single {
878
+ ts,
879
+ changes,
880
+ stream: s,
881
+ start,
882
+ end,
883
+ },
884
+ );
885
+ }
886
+ Item::Prepare { id, changes } => {
887
+ self.held.entry(id).or_default().push(Held {
888
+ stream: s,
889
+ start,
890
+ end,
891
+ changes,
892
+ outside: !inside,
893
+ });
894
+ }
895
+ Item::Decision {
896
+ id,
897
+ apply,
898
+ ts,
899
+ participants,
900
+ } => {
901
+ if apply <= self.delivered {
902
+ self.held.remove(&id);
903
+ let st = &mut self.streams[s];
904
+ st.delivered_end = st.delivered_end.max(end);
905
+ continue;
906
+ }
907
+ if !inside {
908
+ // A writer restart, not a gap: the caller resubscribes (B2).
909
+ if self.shm.is_stale() {
910
+ return Err(Error::SnapshotExpired);
911
+ }
912
+ self.expired = Some(gap(apply));
913
+ return Ok(false);
914
+ }
915
+ self.ready.insert(
916
+ apply,
917
+ Pending::Decided {
918
+ id,
919
+ ts,
920
+ participants,
921
+ stream: s,
922
+ start,
923
+ end,
924
+ session,
925
+ },
926
+ );
927
+ }
928
+ Item::Other => {
929
+ // A format 2 COMMIT is never in a fed session's segments (only this
930
+ // build writes feed marks); any other type is newer than this build.
931
+ if inside {
932
+ return Err(Error::Corruption(
933
+ "a change feed segment holds a record this build does not write".into(),
934
+ ));
935
+ }
936
+ }
937
+ }
938
+ }
939
+ }
940
+
941
+ /// Stream `s`'s next record as an owned item, its mutations filtered to the feed's
942
+ /// tables and prefix; `None` at the readable end, or once its segment is gone (which
943
+ /// expires the feed).
944
+ fn read_one(&mut self, s: usize) -> Result<Option<(Lsn, Lsn, u64, Item)>> {
945
+ let (tables, prefix) = (&self.tables, &self.prefix);
946
+ let filter = |batch: BatchRef<'_>| -> Result<Vec<Raw>> {
947
+ let mut out = Vec::new();
948
+ for m in batch.iter() {
949
+ let m = m?;
950
+ // The table first, then the row: a mutation outside is skipped by its
951
+ // lengths, never copied (§2.7).
952
+ if tables.binary_search(&m.table).is_err() || !m.row.starts_with(prefix) {
953
+ continue;
954
+ }
955
+ out.push(Raw {
956
+ table: m.table,
957
+ family: m.family,
958
+ kind: m.kind,
959
+ ts: m.ts,
960
+ row: m.row.to_vec(),
961
+ qualifier: m.qualifier.to_vec(),
962
+ value: m.value.to_vec(),
963
+ });
964
+ }
965
+ Ok(out)
966
+ };
967
+ let (start, end, session, record) = match self.streams[s].cursor.step()? {
968
+ Step::Record {
969
+ start,
970
+ end,
971
+ session,
972
+ record,
973
+ } => (start, end, session, record),
974
+ Step::End => return Ok(None),
975
+ Step::Gone => {
976
+ self.expired = Some(expiry(
977
+ "retention passed the feed: a segment it was reading was recycled",
978
+ ));
979
+ return Ok(None);
980
+ }
981
+ Step::Cut => {
982
+ self.expired = Some(expiry(
983
+ "records the feed read were lost: a power loss cut the log before them",
984
+ ));
985
+ return Ok(None);
986
+ }
987
+ };
988
+ let item = match record {
989
+ WalRecord::Batch {
990
+ seqno,
991
+ commit_ts,
992
+ batch,
993
+ } => Item::Single {
994
+ seqno,
995
+ ts: commit_ts,
996
+ changes: filter(batch)?,
997
+ },
998
+ WalRecord::Prepare { seqno, batch, .. } => Item::Prepare {
999
+ id: seqno,
1000
+ changes: filter(batch)?,
1001
+ },
1002
+ WalRecord::Decision {
1003
+ seqno,
1004
+ apply_seqno,
1005
+ commit_ts,
1006
+ participants,
1007
+ } => Item::Decision {
1008
+ id: seqno,
1009
+ apply: apply_seqno,
1010
+ ts: commit_ts,
1011
+ participants: participants.iter().collect(),
1012
+ },
1013
+ _ => Item::Other,
1014
+ };
1015
+ Ok(Some((start, end, session, item)))
1016
+ }
1017
+
1018
+ /// Drops held PREPAREs of rounds that ended without a Decision: their stream's
1019
+ /// checkpoint (loaded before the frontier) passed them and no Decision for them was read
1020
+ /// (rule C). A held share the floor passed but the checkpoint didn't expires the feed:
1021
+ /// the floor never passes the checkpoint's segment, so that is a bound broken, and
1022
+ /// dropping it could pass over a committed round (fail closed, simp724's H1 on #1316).
1023
+ fn drop_aborted(&mut self, checkpoints: &[Lsn], floors: &[u32]) -> Option<Expiry> {
1024
+ let decided: std::collections::HashSet<Seqno> = self
1025
+ .ready
1026
+ .values()
1027
+ .filter_map(|p| match p {
1028
+ Pending::Decided { id, .. } => Some(*id),
1029
+ Pending::Single { .. } => None,
1030
+ })
1031
+ .collect();
1032
+ drop_undecided(
1033
+ &mut self.held,
1034
+ &mut self.dropped,
1035
+ &decided,
1036
+ checkpoints,
1037
+ floors,
1038
+ )
1039
+ }
1040
+
1041
+ /// Delivers the smallest pending commit at or below the frontier into `out`. Returns
1042
+ /// whether it did; a commit with nothing the feed follows is passed over.
1043
+ fn emit(&mut self) -> Result<bool> {
1044
+ loop {
1045
+ let Some((&key, _)) = self.ready.first_key_value() else {
1046
+ return Ok(false);
1047
+ };
1048
+ if key > self.frontier {
1049
+ return Ok(false);
1050
+ }
1051
+ // Before anything is taken: the view can fail (a reader process's attachment
1052
+ // whose writer is gone, or whose view is being republished), and a failure here
1053
+ // leaves the commit to the next call.
1054
+ let view = (self.view)()?;
1055
+ // A reader process's view can lag the writer's manifest: a value separated at
1056
+ // commit time names a blob file the manifest committed before the commit was
1057
+ // logged, which a view record of an older manifest version doesn't list yet
1058
+ // (simp724's question on #1352). Wait for a newer view, up to a bound, rather
1059
+ // than take the commit and expire; past the bound, the take below expires as for
1060
+ // a file retention removed.
1061
+ if self.writer.is_none() {
1062
+ let listed = self
1063
+ .ready
1064
+ .first_key_value()
1065
+ .is_some_and(|(_, p)| self.blobs_listed(&view, p));
1066
+ if !listed {
1067
+ let since = *self.blob_wait.get_or_insert_with(Instant::now);
1068
+ if since.elapsed() < READER_BLOB_WAIT {
1069
+ return Ok(false);
1070
+ }
1071
+ }
1072
+ }
1073
+ self.blob_wait = None;
1074
+ let (_, p) = self.ready.pop_first().expect("checked");
1075
+ let (ts, raws) = match p {
1076
+ Pending::Single {
1077
+ ts,
1078
+ changes,
1079
+ stream,
1080
+ end,
1081
+ ..
1082
+ } => {
1083
+ let st = &mut self.streams[stream];
1084
+ st.delivered_end = st.delivered_end.max(end);
1085
+ (ts, changes)
1086
+ }
1087
+ Pending::Decided {
1088
+ id,
1089
+ ts,
1090
+ participants,
1091
+ stream,
1092
+ end,
1093
+ session,
1094
+ ..
1095
+ } => {
1096
+ let st = &mut self.streams[stream];
1097
+ st.delivered_end = st.delivered_end.max(end);
1098
+ let shares = self.held.remove(&id).unwrap_or_default();
1099
+ // A round rule C dropped a share of: never passed over silently.
1100
+ let dropped = self.dropped.remove(&id).is_some();
1101
+ // Every participant's PREPARE was in its file before the Decision was
1102
+ // written, so it has been read; one missing was lost under the reader.
1103
+ let complete = participants
1104
+ .iter()
1105
+ .all(|p| shares.iter().any(|h| h.stream == p.0 as usize));
1106
+ if !complete && session != self.current && !dropped {
1107
+ // A power loss took a share of a `Buffered` commit an earlier session
1108
+ // wrote, and that session's recovery dropped it whole, as replay
1109
+ // does (all or nothing): it never happened, so it isn't delivered.
1110
+ for h in &shares {
1111
+ let st = &mut self.streams[h.stream];
1112
+ st.delivered_end = st.delivered_end.max(h.end);
1113
+ }
1114
+ self.delivered = key;
1115
+ continue;
1116
+ }
1117
+ if !complete || shares.iter().any(|h| h.outside) {
1118
+ self.expired = Some(gap(key));
1119
+ return Ok(false);
1120
+ }
1121
+ let mut raws = Vec::new();
1122
+ for h in shares {
1123
+ let st = &mut self.streams[h.stream];
1124
+ st.delivered_end = st.delivered_end.max(h.end);
1125
+ raws.extend(h.changes);
1126
+ }
1127
+ (ts, raws)
1128
+ }
1129
+ };
1130
+ self.delivered = key;
1131
+ if raws.is_empty() {
1132
+ continue;
1133
+ }
1134
+ self.out.seqno = key;
1135
+ self.out.ts = ts;
1136
+ self.out.changes.clear();
1137
+ for r in raws {
1138
+ let value = match blob_pointer(&r.value) {
1139
+ None => r.value,
1140
+ // The blob GC horizon follows the oldest retained segment, not readers: a
1141
+ // file the view no longer lists under a slow reader means retention
1142
+ // passed it (S1). Any other failure, a checksum's included, is an error.
1143
+ Some(ptr) if view.ssts.blob_reader(ptr.blob_file).is_none() => {
1144
+ self.expired = Some(expiry(
1145
+ "a blob value the feed was delivering is gone: retention passed the feed",
1146
+ ));
1147
+ return Ok(false);
1148
+ }
1149
+ Some(ptr) => match view.ssts.read_pointer(&ptr) {
1150
+ Ok(cell) => cell.to_vec(),
1151
+ // The commit is taken: going on would skip it, so the reader stops
1152
+ // here for good.
1153
+ Err(e) => {
1154
+ self.failed = Some(e.to_string());
1155
+ return Err(e);
1156
+ }
1157
+ },
1158
+ };
1159
+ self.out.changes.push(Change {
1160
+ table: r.table,
1161
+ family: r.family,
1162
+ kind: r.kind,
1163
+ ts: r.ts.unwrap_or(ts),
1164
+ row: r.row,
1165
+ qualifier: r.qualifier,
1166
+ value,
1167
+ });
1168
+ }
1169
+ return Ok(true);
1170
+ }
1171
+ }
1172
+ }
1173
+
1174
+ fn gap(key: Seqno) -> Expiry {
1175
+ expiry(format!(
1176
+ "history has a gap before seqno {key}: a session that did not feed these tables wrote the database"
1177
+ ))
1178
+ }
1179
+
1180
+ /// [`FeedReader::drop_aborted`]'s rule over the held shares: drops each undecided share its
1181
+ /// stream's checkpoint passed, noting its round in `dropped`, and expires on one only the
1182
+ /// floor passed. Forgets dropped rounds whose segment is below the floor.
1183
+ fn drop_undecided(
1184
+ held: &mut HashMap<Seqno, Vec<Held>>,
1185
+ dropped: &mut HashMap<Seqno, (usize, u32)>,
1186
+ decided: &std::collections::HashSet<Seqno>,
1187
+ checkpoints: &[Lsn],
1188
+ floors: &[u32],
1189
+ ) -> Option<Expiry> {
1190
+ let floor_of = |s: usize| floors.get(s).copied().unwrap_or(0);
1191
+ for (id, shares) in held.iter() {
1192
+ if decided.contains(id) {
1193
+ continue;
1194
+ }
1195
+ for h in shares {
1196
+ let passed = checkpoints.get(h.stream).is_some_and(|&c| c > h.start);
1197
+ if !passed && h.start.epoch() < floor_of(h.stream) {
1198
+ return Some(expiry(
1199
+ "retention passed a held cross-shard share the checkpoint had not",
1200
+ ));
1201
+ }
1202
+ }
1203
+ }
1204
+ held.retain(|id, shares| {
1205
+ if decided.contains(id) {
1206
+ return true;
1207
+ }
1208
+ shares.retain(|h| {
1209
+ let passed = checkpoints.get(h.stream).is_some_and(|&c| c > h.start);
1210
+ if passed {
1211
+ dropped.insert(*id, (h.stream, h.start.epoch()));
1212
+ }
1213
+ !passed
1214
+ });
1215
+ !shares.is_empty()
1216
+ });
1217
+ dropped.retain(|_, &mut (s, epoch)| epoch >= floor_of(s));
1218
+ None
1219
+ }
1220
+
1221
+ impl FeedReader {
1222
+ /// Whether `view` lists every blob file pending commit `p`'s values point into.
1223
+ fn blobs_listed(&self, view: &crate::snapshot::View, p: &Pending) -> bool {
1224
+ let listed = |raws: &[Raw]| {
1225
+ raws.iter().all(|r| {
1226
+ blob_pointer(&r.value)
1227
+ .is_none_or(|ptr| view.ssts.blob_reader(ptr.blob_file).is_some())
1228
+ })
1229
+ };
1230
+ match p {
1231
+ Pending::Single { changes, .. } => listed(changes),
1232
+ Pending::Decided { id, .. } => self
1233
+ .held
1234
+ .get(id)
1235
+ .is_none_or(|shares| shares.iter().all(|h| listed(&h.changes))),
1236
+ }
1237
+ }
1238
+
1239
+ /// `FeedStart::Oldest` from before this open (#1465): the oldest earlier session of the
1240
+ /// feed's history whose first segment every stream still keeps, and the bound to start
1241
+ /// there. The writer's checkpoint history (`Feed::oldest_bound`) starts at this open,
1242
+ /// since it is rebuilt at each one, so without this `Oldest` after a reopen was `Now`.
1243
+ ///
1244
+ /// The bound is `K = m - 1`, `m` the smallest id in any stream's first record of the
1245
+ /// session: a single's seqno, a round's id, or a decision's id or apply seqno, the lower.
1246
+ /// One bound for every stream, so none starts past another's earliest commit.
1247
+ /// - **It bounds what is before the start positions.** Every record before the
1248
+ /// session's first segment was logged before the session opened, so its key is at
1249
+ /// most the allocator's start then. Every id in the session's records was allocated
1250
+ /// in it, above that start: replay applies a round only whole and writes nothing, and
1251
+ /// nothing re-logs a record. So `K` is at least the start (the rule `start_at` keeps
1252
+ /// for the writer's history).
1253
+ /// - **It skips none of the session's commits.** A single's seqno is allocated in the
1254
+ /// group that logs it, after that stream's first record. A cross-shard commit is keyed
1255
+ /// by its apply seqno, reserved once every participant logged its PREPARE: after each
1256
+ /// participant's first record. This assumes a participant reports PREPARED only after
1257
+ /// its PREPARE was appended to its stream (the group settles after its WAL write); a
1258
+ /// change that answers before the append breaks this bound. So every commit's key is
1259
+ /// at least `m`. Taking only
1260
+ /// singles' seqnos would skip that commit when a session opens with a cross-shard one
1261
+ /// (simp724).
1262
+ ///
1263
+ /// A session's first segment is the one an open started (`prev_epoch` 0, or an epoch
1264
+ /// more than one above it: FORMAT §10.1 rule 2), so a session partly recycled at a floor
1265
+ /// is passed over, not started in its middle.
1266
+ ///
1267
+ /// `None` (the current history decides) when no earlier session qualifies or anything
1268
+ /// read fails: a later start only has a larger bound, so it is always safe (simp724).
1269
+ fn earlier_start(&self, db_id: [u8; 16]) -> Option<(Seqno, Vec<Lsn>)> {
1270
+ let shards = self.shared.shards;
1271
+ let open = |s: usize, at: Lsn| {
1272
+ FeedCursor::open(
1273
+ &self.shared.vfs,
1274
+ &self.shared.path,
1275
+ StreamId(s as u32),
1276
+ db_id,
1277
+ at,
1278
+ )
1279
+ .ok()
1280
+ };
1281
+ // Each stream's first retained segment of every earlier session in the history.
1282
+ let mut firsts: Vec<HashMap<u64, u32>> = Vec::with_capacity(shards);
1283
+ for s in 0..shards {
1284
+ let floor = self.floor(s);
1285
+ let mut f = HashMap::new();
1286
+ for (epoch, prev, session) in open(s, Lsn::default())?.segments() {
1287
+ let opened = prev == 0 || epoch != prev.wrapping_add(1);
1288
+ if opened
1289
+ && epoch >= floor
1290
+ && session != self.current
1291
+ && self.history.holds(session)
1292
+ {
1293
+ f.entry(session).or_insert(epoch);
1294
+ }
1295
+ }
1296
+ firsts.push(f);
1297
+ }
1298
+ let mut sessions: Vec<(u32, u64)> = firsts
1299
+ .first()?
1300
+ .iter()
1301
+ .filter(|(id, _)| firsts.iter().all(|f| f.contains_key(id)))
1302
+ .map(|(&id, &epoch)| (epoch, id))
1303
+ .collect();
1304
+ sessions.sort_unstable();
1305
+ 'sessions: for (_, session) in sessions {
1306
+ let mut first = None::<Seqno>;
1307
+ for (s, f) in firsts.iter().enumerate() {
1308
+ let Some(mut c) = open(s, Lsn::new(f[&session], 0)) else {
1309
+ continue 'sessions;
1310
+ };
1311
+ let id = match c.step() {
1312
+ // The stream logged nothing in the session: no id from it.
1313
+ Ok(Step::End) => continue,
1314
+ Ok(Step::Record {
1315
+ session: of,
1316
+ record,
1317
+ ..
1318
+ }) if of == session => match record {
1319
+ WalRecord::Batch { seqno, .. }
1320
+ | WalRecord::Prepare { seqno, .. }
1321
+ | WalRecord::Commit { seqno, .. } => seqno,
1322
+ WalRecord::Decision {
1323
+ seqno, apply_seqno, ..
1324
+ } => seqno.min(apply_seqno),
1325
+ // A kind this build can't key: the session can't be started in.
1326
+ _ => continue 'sessions,
1327
+ },
1328
+ // The segment gone (recycled since the headers were read) or cut,
1329
+ // another session's record there, or a read that failed: this session
1330
+ // can't be started in (simp724's B1), so a later one or the history
1331
+ // decides. Dropping only this stream would start it at a gone or foreign
1332
+ // segment, or take `m` too high and skip its earliest commits.
1333
+ _ => continue 'sessions,
1334
+ };
1335
+ first = Some(first.map_or(id, |f| f.min(id)));
1336
+ }
1337
+ // A session that logged nothing: the next one decides.
1338
+ let Some(first) = first else { continue };
1339
+ let at = firsts.iter().map(|f| Lsn::new(f[&session], 0)).collect();
1340
+ return Some((first.saturating_sub(1), at));
1341
+ }
1342
+ None
1343
+ }
1344
+
1345
+ /// Stream `s`'s floor: no segment of a smaller epoch is kept (the writer's shared-memory
1346
+ /// mark).
1347
+ fn floor(&self, s: usize) -> u32 {
1348
+ self.shm.feed_marks(s as u32).floor
1349
+ }
1350
+ }
1351
+
1352
+ /// In a reader process: the writer's session and fed tables, from its entry in the sidecar
1353
+ /// (the last session entry: a writer writes it before its shared memory exists).
1354
+ /// `InvalidArgument` when the writer doesn't feed (its open recorded `fed: none`).
1355
+ fn writer_session(shared: &Shared) -> Result<(u64, FeedTables)> {
1356
+ let off = || {
1357
+ Error::InvalidArgument(
1358
+ "the writer's change feed is off: subscribe to a writer that feeds".into(),
1359
+ )
1360
+ };
1361
+ let path = crate::feed::sidecar_path(&shared.path);
1362
+ let file = match shared.vfs.open(&path, OpenOptions::read()) {
1363
+ Ok(f) => f,
1364
+ Err(e) if e.kind == pigeonhole_io::ErrorKind::NotFound => return Err(off()),
1365
+ Err(e) => return Err(e.into()),
1366
+ };
1367
+ let mut bytes = vec![0u8; file.len()? as usize];
1368
+ file.read_at(&mut bytes, 0)?;
1369
+ match FeedHeader::decode(&bytes) {
1370
+ Ok(h) if h.db_id == shared.pager.db_id() => {}
1371
+ _ => return Err(off()),
1372
+ }
1373
+ let entries = decode_entries(&bytes[FeedHeader::LEN..]).0;
1374
+ for e in entries.iter().rev() {
1375
+ match e {
1376
+ FeedEntry::Session {
1377
+ session,
1378
+ streams,
1379
+ tables,
1380
+ ..
1381
+ } => {
1382
+ if *streams as usize != shared.shards {
1383
+ // A new writer with another shard count is starting: this attachment is
1384
+ // the old one's (simp724's nit). Subscribe again once it runs.
1385
+ return Err(Error::SnapshotExpired);
1386
+ }
1387
+ return Ok((*session, tables.clone()));
1388
+ }
1389
+ FeedEntry::Unfed { .. } => return Err(off()),
1390
+ _ => {}
1391
+ }
1392
+ }
1393
+ Err(off())
1394
+ }
1395
+
1396
+ /// The sessions whose segments hold the feed's history: the current one, and each one
1397
+ /// before it while it fed every table in `tables`, had the same stream count, and chains.
1398
+ /// A session chains when its `opened_at` is the previous session's last recorded
1399
+ /// `sequence` and every sequence between was recorded: the previous session's Root
1400
+ /// entries run contiguously from its own `opened_at` (simp724 on fix A: a lost middle
1401
+ /// entry could hide another session's root commits, so a gap breaks the chain), with no
1402
+ /// feed-off open between.
1403
+ fn read_history(shared: &Shared, current: u64, tables: &[TableId]) -> Result<History> {
1404
+ let path = crate::feed::sidecar_path(&shared.path);
1405
+ let file = shared.vfs.open(&path, OpenOptions::read())?;
1406
+ let len = file.len()?;
1407
+ let mut bytes = vec![0u8; len as usize];
1408
+ file.read_at(&mut bytes, 0)?;
1409
+ let entries = match FeedHeader::decode(&bytes) {
1410
+ Ok(h) if h.db_id == shared.pager.db_id() => decode_entries(&bytes[FeedHeader::LEN..]).0,
1411
+ _ => Vec::new(),
1412
+ };
1413
+ Ok(History {
1414
+ sessions: chain(&entries, current, tables),
1415
+ })
1416
+ }
1417
+
1418
+ /// [`read_history`]'s rule over the sidecar's entries.
1419
+ fn chain(entries: &[FeedEntry], current: u64, tables: &[TableId]) -> Vec<u64> {
1420
+ // (id, feeds the tables, streams, chained to the previous)
1421
+ let mut sessions: Vec<(u64, bool, u32, bool)> = Vec::new();
1422
+ let mut last_seq: Option<u64> = None;
1423
+ let mut broken = true;
1424
+ for e in entries {
1425
+ match e {
1426
+ FeedEntry::Session {
1427
+ session,
1428
+ opened_at,
1429
+ streams,
1430
+ tables: fed,
1431
+ ..
1432
+ } => {
1433
+ let feeds = tables.iter().all(|&t| match fed {
1434
+ FeedTables::All => true,
1435
+ FeedTables::Only(_) => fed.contains(t),
1436
+ });
1437
+ let chained = !broken && last_seq == Some(*opened_at);
1438
+ sessions.push((*session, feeds, *streams, chained));
1439
+ last_seq = Some(*opened_at);
1440
+ broken = false;
1441
+ }
1442
+ FeedEntry::Root { session, sequence } => {
1443
+ let ours = sessions.last().is_some_and(|s| s.0 == *session);
1444
+ if !ours || last_seq.map(|l| l + 1) != Some(*sequence) {
1445
+ broken = true;
1446
+ }
1447
+ last_seq = Some(*sequence);
1448
+ }
1449
+ FeedEntry::Unfed { .. } => broken = true,
1450
+ // A newer build's entry may mean a break: fail closed (simp724's nit on #1316).
1451
+ FeedEntry::Unknown(_) => broken = true,
1452
+ }
1453
+ }
1454
+ let Some(pos) = sessions.iter().rposition(|s| s.0 == current) else {
1455
+ return vec![current];
1456
+ };
1457
+ let streams = sessions[pos].2;
1458
+ let mut run = Vec::new();
1459
+ for (i, s) in sessions[..=pos].iter().enumerate().rev() {
1460
+ if !s.1 || s.2 != streams {
1461
+ break;
1462
+ }
1463
+ run.push(s.0);
1464
+ if !s.3 || i == 0 {
1465
+ break;
1466
+ }
1467
+ }
1468
+ run
1469
+ }
1470
+
1471
+ #[cfg(test)]
1472
+ mod tests {
1473
+ use super::*;
1474
+
1475
+ fn session(session: u64, opened_at: u64) -> FeedEntry {
1476
+ FeedEntry::Session {
1477
+ session,
1478
+ opened_at,
1479
+ retention_bytes: 1 << 20,
1480
+ retention_age_secs: 0,
1481
+ streams: 2,
1482
+ tables: FeedTables::All,
1483
+ }
1484
+ }
1485
+
1486
+ fn root(session: u64, sequence: u64) -> FeedEntry {
1487
+ FeedEntry::Root { session, sequence }
1488
+ }
1489
+
1490
+ #[test]
1491
+ fn sessions_chain_only_through_contiguous_sequences() {
1492
+ let t = [TableId(1)];
1493
+ let whole = [
1494
+ session(1, 1),
1495
+ root(1, 2),
1496
+ root(1, 3),
1497
+ root(1, 4),
1498
+ session(2, 4),
1499
+ root(2, 5),
1500
+ ];
1501
+ assert_eq!(chain(&whole, 2, &t), [2, 1]);
1502
+ // A lost middle entry: the last still matches the next open, but the root commit at
1503
+ // 3 is unaccounted for, so session 1's history ends there (simp724 on fix A).
1504
+ let gap = [
1505
+ session(1, 1),
1506
+ root(1, 2),
1507
+ root(1, 4),
1508
+ session(2, 4),
1509
+ root(2, 5),
1510
+ ];
1511
+ assert_eq!(chain(&gap, 2, &t), [2]);
1512
+ // A lost last entry: the next open is ahead.
1513
+ let ahead = [session(1, 1), root(1, 2), session(2, 3)];
1514
+ assert_eq!(chain(&ahead, 2, &t), [2]);
1515
+ // A feed-off open between.
1516
+ let unfed = [
1517
+ session(1, 1),
1518
+ root(1, 2),
1519
+ FeedEntry::Unfed { sequence: 2 },
1520
+ session(2, 2),
1521
+ ];
1522
+ assert_eq!(chain(&unfed, 2, &t), [2]);
1523
+ // A session with another stream count, or not feeding the table, ends it too.
1524
+ let narrower = [
1525
+ FeedEntry::Session {
1526
+ session: 1,
1527
+ opened_at: 1,
1528
+ retention_bytes: 1 << 20,
1529
+ retention_age_secs: 0,
1530
+ streams: 2,
1531
+ tables: FeedTables::Only(vec![TableId(9)]),
1532
+ },
1533
+ session(2, 1),
1534
+ ];
1535
+ assert_eq!(chain(&narrower, 2, &t), [2]);
1536
+ // An entry this build doesn't know may be a break: it ends the chain too.
1537
+ let unknown = [
1538
+ session(1, 1),
1539
+ root(1, 2),
1540
+ FeedEntry::Unknown(0xee),
1541
+ session(2, 2),
1542
+ ];
1543
+ assert_eq!(chain(&unknown, 2, &t), [2]);
1544
+ }
1545
+
1546
+ fn held(stream: usize, epoch: u32) -> Held {
1547
+ Held {
1548
+ stream,
1549
+ start: Lsn::new(epoch, 64),
1550
+ end: Lsn::new(epoch, 128),
1551
+ changes: Vec::new(),
1552
+ outside: false,
1553
+ }
1554
+ }
1555
+
1556
+ /// simp724's H1 on #1316: rule C drops an undecided share its checkpoint passed and
1557
+ /// remembers its round; one only the floor passed expires the feed, never a drop.
1558
+ #[test]
1559
+ fn a_share_only_the_floor_passed_expires_and_never_drops() {
1560
+ let decided = std::collections::HashSet::from([7]);
1561
+ // Stream 0's checkpoint is in epoch 5, stream 1's in epoch 3; the floors are 4 and 2.
1562
+ let checkpoints = [Lsn::new(5, 0), Lsn::new(3, 0)];
1563
+ let floors = [4, 2];
1564
+ let mut held_map = HashMap::from([
1565
+ // Undecided, passed on stream 0: dropped, and remembered.
1566
+ (1, vec![held(0, 4)]),
1567
+ // Undecided, not passed (epoch 5 at offset 64 is after the checkpoint): kept.
1568
+ (2, vec![held(0, 5)]),
1569
+ // Decided: kept whatever the marks say.
1570
+ (7, vec![held(0, 1), held(1, 1)]),
1571
+ ]);
1572
+ let mut dropped = HashMap::new();
1573
+ let e = drop_undecided(&mut held_map, &mut dropped, &decided, &checkpoints, &floors);
1574
+ assert!(e.is_none());
1575
+ assert!(!held_map.contains_key(&1));
1576
+ assert!(held_map.contains_key(&2) && held_map.contains_key(&7));
1577
+ assert_eq!(dropped.get(&1), Some(&(0, 4)));
1578
+
1579
+ // A share below its stream's floor that the checkpoint didn't pass: a bound broken,
1580
+ // so the feed expires and nothing is dropped.
1581
+ let mut held_map = HashMap::from([(3, vec![held(1, 1)])]);
1582
+ let mut dropped = HashMap::new();
1583
+ let checkpoints = [Lsn::new(5, 0), Lsn::new(1, 0)];
1584
+ let e = drop_undecided(&mut held_map, &mut dropped, &decided, &checkpoints, &floors);
1585
+ assert!(e.is_some_and(|e| e.reason.contains("retention passed a held")));
1586
+ assert!(held_map.contains_key(&3) && dropped.is_empty());
1587
+
1588
+ // A remembered round is forgotten once the floor passes its segment.
1589
+ let mut dropped = HashMap::from([(1, (0, 3)), (2, (0, 4))]);
1590
+ let e = drop_undecided(
1591
+ &mut HashMap::new(),
1592
+ &mut dropped,
1593
+ &decided,
1594
+ &checkpoints,
1595
+ &floors,
1596
+ );
1597
+ assert!(e.is_none());
1598
+ assert_eq!(dropped.keys().copied().collect::<Vec<_>>(), [2]);
1599
+ }
1600
+ }