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.
- checksums.yaml +7 -0
- data/Cargo.lock +899 -0
- data/Cargo.toml +45 -0
- data/LICENSE +21 -0
- data/README.md +22 -0
- data/extconf.rb +12 -0
- data/lib/pigeonhole/api.rb +615 -0
- data/lib/pigeonhole/index.rb +208 -0
- data/lib/pigeonhole/memory.rb +507 -0
- data/lib/pigeonhole/version.rb +6 -0
- data/lib/pigeonhole-db.rb +6 -0
- data/lib/pigeonhole.rb +47 -0
- data/sig/pigeonhole.rbs +1484 -0
- data/src/budget.rs +205 -0
- data/src/classes.rs +279 -0
- data/src/convert.rs +192 -0
- data/src/db.rs +685 -0
- data/src/error.rs +151 -0
- data/src/feed.rs +316 -0
- data/src/fork.rs +64 -0
- data/src/gvl.rs +112 -0
- data/src/index.rs +1157 -0
- data/src/lib.rs +534 -0
- data/src/memory.rs +2178 -0
- data/src/read.rs +312 -0
- data/src/table.rs +1161 -0
- data/src/vector.rs +262 -0
- data/src/walk.rs +406 -0
- data/vendor/bundle/ruby/3.4.0/bin/minitest +29 -0
- data/vendor/bundle/ruby/3.4.0/bin/rake +29 -0
- data/vendor/bundle/ruby/3.4.0/bin/rake-compiler +29 -0
- data/vendor/bundle/ruby/3.4.0/bin/rake-compiler-dock +29 -0
- data/vendor/bundle/ruby/3.4.0/bin/rb-sys-dock +29 -0
- data/vendor/bundle/ruby/3.4.0/bin/rbs +29 -0
- data/vendor/bundle/ruby/3.4.0/cache/drb-2.2.3.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/logger-1.7.0.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/minitest-6.0.6.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/prism-1.9.0.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/rake-13.4.2.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/rake-compiler-1.3.2.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/rake-compiler-dock-1.12.0.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/rb_sys-0.9.130.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/rbs-4.2.0.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/toml-rb-6.0.0.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/tsort-0.2.0.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.9.0/gem.build_complete +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.9.0/gem_make.out +44 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.9.0/mkmf.log +74 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.9.0/prism/prism.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/rbs-4.2.0/gem.build_complete +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/rbs-4.2.0/gem_make.out +41 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/rbs-4.2.0/mkmf.log +102 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/rbs-4.2.0/rbs_extension.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/LICENSE.txt +22 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/drb.gemspec +42 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/acl.rb +239 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/drb.rb +1993 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/eq.rb +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/extserv.rb +44 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/extservm.rb +94 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/gw.rb +161 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/observer.rb +26 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/ssl.rb +354 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/timeridconv.rb +97 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/unix.rb +118 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/version.rb +3 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb/weakidconv.rb +31 -0
- data/vendor/bundle/ruby/3.4.0/gems/drb-2.2.3/lib/drb.rb +3 -0
- data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/BSDL +22 -0
- data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/COPYING +56 -0
- data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/README.md +104 -0
- data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/errors.rb +9 -0
- data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/formatter.rb +36 -0
- data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/log_device.rb +265 -0
- data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/period.rb +47 -0
- data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/severity.rb +38 -0
- data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/version.rb +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger.rb +789 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/History.rdoc +1860 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/Manifest.txt +41 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/README.rdoc +763 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/Rakefile +89 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/bin/minitest +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/design_rationale.rb +54 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/hoe/minitest.rb +30 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/assertions.rb +821 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/autorun.rb +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/benchmark.rb +452 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/bisect.rb +304 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/complete.rb +56 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/compress.rb +94 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/error_on_warning.rb +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/expectations.rb +321 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/find_minimal_combination.rb +127 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/hell.rb +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/manual_plugins.rb +4 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/parallel.rb +72 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/path_expander.rb +432 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/pride.rb +4 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/pride_plugin.rb +135 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/server.rb +49 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/server_plugin.rb +88 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/spec.rb +324 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/sprint.rb +105 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/sprint_plugin.rb +39 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/test.rb +232 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest/test_task.rb +331 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/lib/minitest.rb +1232 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/metametameta.rb +150 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_bisect.rb +249 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_find_minimal_combination.rb +138 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_minitest_assertions.rb +1729 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_minitest_benchmark.rb +151 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_minitest_reporter.rb +437 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_minitest_spec.rb +1095 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_minitest_test.rb +1295 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_minitest_test_task.rb +57 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_path_expander.rb +229 -0
- data/vendor/bundle/ruby/3.4.0/gems/minitest-6.0.6/test/minitest/test_server.rb +146 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/BSDmakefile +58 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/CHANGELOG.md +786 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/CODE_OF_CONDUCT.md +76 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/CONTRIBUTING.md +58 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/LICENSE.md +7 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/Makefile +116 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/README.md +143 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/config.yml +4739 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/build_system.md +119 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/configuration.md +68 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/cruby_compilation.md +27 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/design.md +53 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/encoding.md +121 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/fuzzing.md +88 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/heredocs.md +36 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/javascript.md +118 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/local_variable_depth.md +229 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/mapping.md +117 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/parser_translation.md +24 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/parsing_rules.md +22 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/releasing.md +75 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/relocation.md +34 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/ripper_translation.md +63 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/ruby_api.md +45 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/ruby_parser_translation.md +19 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/serialization.md +233 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/docs/testing.md +55 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/ext/prism/Makefile +273 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/ext/prism/api_node.c +6945 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/ext/prism/api_pack.c +276 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/ext/prism/extconf.rb +127 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/ext/prism/extension.c +1427 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/ext/prism/extension.h +19 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/ast.h +8254 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/defines.h +260 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/diagnostic.h +458 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/encoding.h +283 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/node.h +129 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/options.h +488 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/pack.h +163 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/parser.h +936 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/prettyprint.h +34 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/regexp.h +43 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/static_literals.h +121 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_buffer.h +236 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_char.h +204 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_constant_pool.h +218 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_integer.h +130 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_list.h +103 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_memchr.h +29 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_newline_list.h +113 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_string.h +200 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_strncasecmp.h +32 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/util/pm_strpbrk.h +46 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism/version.h +29 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/include/prism.h +408 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/compiler.rb +801 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/desugar_compiler.rb +392 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/dispatcher.rb +2210 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/dot_visitor.rb +4767 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/dsl.rb +1003 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/ffi.rb +578 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/inspect_visitor.rb +2393 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/lex_compat.rb +911 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/mutation_compiler.rb +772 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/node.rb +19966 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/node_ext.rb +511 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/pack.rb +230 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/parse_result/comments.rb +188 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/parse_result/errors.rb +66 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/parse_result/newlines.rb +155 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/parse_result.rb +907 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/pattern.rb +269 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/polyfill/append_as_bytes.rb +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/polyfill/byteindex.rb +13 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/polyfill/scan_byte.rb +14 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/polyfill/unpack1.rb +14 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/polyfill/warn.rb +36 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/prism.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/reflection.rb +416 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/relocation.rb +505 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/serialize.rb +2400 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/string_query.rb +31 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/parser/builder.rb +62 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/parser/compiler.rb +2234 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/parser/lexer.rb +820 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/parser.rb +376 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/parser_current.rb +26 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/parser_versions.rb +36 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/ripper/filter.rb +53 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/ripper/lexer.rb +135 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/ripper/sexp.rb +126 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/ripper/shim.rb +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/ripper.rb +3520 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation/ruby_parser.rb +1964 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/translation.rb +18 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism/visitor.rb +813 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/lib/prism.rb +98 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/prism.gemspec +172 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/compiler.rbi +12 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/dsl.rbi +524 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/inspect_visitor.rbi +12 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/node.rbi +8750 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/node_ext.rbi +107 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/parse_result.rbi +404 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/reflection.rbi +58 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/string_query.rbi +12 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/translation/parser.rbi +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/translation/parser_versions.rbi +23 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/translation/ripper.rbi +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism/visitor.rbi +473 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/rbi/prism.rbi +63 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/compiler.rbs +9 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/dispatcher.rbs +19 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/dot_visitor.rbs +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/dsl.rbs +351 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/inspect_visitor.rbs +22 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/lex_compat.rbs +10 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/mutation_compiler.rbs +159 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/node.rbs +4042 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/node_ext.rbs +149 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/pack.rbs +43 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/parse_result/comments.rbs +38 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/parse_result.rbs +197 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/pattern.rbs +13 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/reflection.rbs +50 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/relocation.rbs +185 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/serialize.rbs +8 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/string_query.rbs +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism/visitor.rbs +169 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/sig/prism.rbs +272 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/diagnostic.c +854 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/encoding.c +5340 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/node.c +8685 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/options.c +338 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/pack.c +509 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/prettyprint.c +8957 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/prism.c +22679 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/regexp.c +790 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/serialize.c +2274 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/static_literals.c +617 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/token_type.c +703 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_buffer.c +357 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_char.c +318 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_constant_pool.c +342 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_integer.c +670 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_list.c +49 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_memchr.c +35 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_newline_list.c +125 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_string.c +381 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_strncasecmp.c +36 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.9.0/src/util/pm_strpbrk.c +206 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/History.rdoc +2454 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/MIT-LICENSE +21 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/README.rdoc +155 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/command_line_usage.rdoc +171 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/Rakefile1 +38 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/Rakefile2 +35 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/a.c +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/b.c +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/main.c +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/glossary.rdoc +42 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/jamis.rb +592 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/proto_rake.rdoc +127 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/rake.1 +156 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/rakefile.rdoc +635 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/rational.rdoc +151 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/exe/rake +27 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/application.rb +847 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/backtrace.rb +25 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/clean.rb +78 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/cloneable.rb +17 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/cpu_counter.rb +122 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/default_loader.rb +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/dsl_definition.rb +196 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/early_time.rb +22 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/ext/core.rb +26 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/ext/string.rb +176 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_creation_task.rb +25 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_list.rb +435 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_task.rb +58 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_utils.rb +137 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_utils_ext.rb +135 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/invocation_chain.rb +57 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/invocation_exception_mixin.rb +17 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/late_time.rb +18 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/linked_list.rb +112 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/loaders/makefile.rb +54 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/multi_task.rb +14 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/name_space.rb +38 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/options.rb +31 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/packagetask.rb +222 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/phony.rb +16 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/private_reader.rb +21 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/promise.rb +100 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/pseudo_status.rb +30 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/rake_module.rb +67 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/rake_test_loader.rb +27 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/scope.rb +43 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/task.rb +434 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/task_argument_error.rb +8 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/task_arguments.rb +113 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/task_manager.rb +333 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/tasklib.rb +12 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/testtask.rb +192 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/thread_history_display.rb +49 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/thread_pool.rb +157 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/trace_output.rb +23 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/version.rb +10 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/win32.rb +17 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake.rb +69 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/rake.gemspec +102 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/Gemfile +8 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/History.md +708 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/LICENSE.txt +20 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/README.md +505 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/Rakefile +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/appveyor.yml +22 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/bin/rake-compiler +24 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/cucumber.yml +4 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/compile.feature +79 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/cross-compile.feature +23 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/cross-package-multi.feature +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/cross-package.feature +14 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/java-compile.feature +22 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/java-no-native-compile.feature +33 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/java-package.feature +24 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/package.feature +40 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/step_definitions/compilation.rb +70 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/step_definitions/cross_compilation.rb +27 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/step_definitions/execution.rb +52 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/step_definitions/folders.rb +32 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/step_definitions/gem.rb +46 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/step_definitions/java_compilation.rb +7 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/support/env.rb +10 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/support/file_template_helpers.rb +137 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/support/generator_helpers.rb +123 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/features/support/platform_extension_helpers.rb +27 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/lib/rake/baseextensiontask.rb +90 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/lib/rake/compiler_config.rb +38 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/lib/rake/extensioncompiler.rb +51 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/lib/rake/extensiontask.rb +621 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/lib/rake/javaextensiontask.rb +321 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/tasks/bin/cross-ruby.rake +189 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/tasks/bootstrap.rake +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/tasks/common.rake +10 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/tasks/cucumber.rake +23 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/tasks/gem.rake +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-1.3.2/tasks/rspec.rake +9 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/CHANGELOG.md +446 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/CONTRIBUTING.md +109 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/Dockerfile.jruby +79 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/Dockerfile.mri.erb +282 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/Gemfile +8 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/LICENSE.txt +22 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/README.md +447 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/Rakefile +246 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/bin/rake-compiler-dock +18 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/buildkitd.toml +2 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/gem_helper.rb +54 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/mk_i686.rb +18 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/mk_musl_cross.sh +37 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/mk_osxcross.sh +45 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/mk_pkg_config.sh +24 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/parallel_docker_build.rb +169 -0
- 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
- 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
- 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
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/rcd-env.sh +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/runas +7 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/sigfw.c +45 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_codesign +17 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_vbox +30 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/build/sudoers +1 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/colors.rb +43 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/docker_check.rb +356 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/predefined_user_group.rb +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/starter.rb +206 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/version.rb +4 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock.rb +151 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/Dockerfile +66 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/README.md +14 -0
- 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
- 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
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/mingw-w64-enable-ucrt.patch +22 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/rake-compiler-dock.gemspec +34 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.alpine +17 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.debian +24 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/fixtures/mig_test_rpc.defs +8 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Gemfile +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Rakefile +97 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RcdTestExtService.java +19 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RubyRcdTest.java +16 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/extconf.rb +111 -0
- 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
- 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
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/lib/rcd_test.rb +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/rcd_test.gemspec +28 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/test/test_basic.rb +49 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/test_environment_variables.rb +108 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/test_mig.rb +18 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/test_parallel_docker_build.rb +95 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/test_rubygems_plugins.rb +12 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/test_starter.rb +158 -0
- data/vendor/bundle/ruby/3.4.0/gems/rake-compiler-dock-1.12.0/test/test_versions.rb +82 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/LICENSE-APACHE +190 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/LICENSE-MIT +21 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/README.md +42 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/certs/ianks.pem +21 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/exe/rb-sys-dock +495 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/cargo/config.rb +72 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/cargo/metadata.rb +158 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/cargo.rb +9 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/cargo_builder/link_flag_converter.rb +37 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/cargo_builder.rb +370 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/error.rb +43 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/extensiontask.rb +188 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/mkmf/config.rb +75 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/mkmf.rb +413 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/toolchain_info/data.rb +10 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/toolchain_info.rb +82 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/util/logger.rb +73 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys/version.rb +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/rb_sys-0.9.130/lib/rb_sys.rb +8 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/BSDL +22 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/CHANGELOG.md +2463 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/COPYING +56 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/Dockerfile.jruby +53 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/README.md +240 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/Rakefile +1213 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/Steepfile +55 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/config.yml +920 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/array.rbs +4205 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/basic_object.rbs +376 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/binding.rbs +148 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/builtin.rbs +278 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/class.rbs +223 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/comparable.rbs +192 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/complex.rbs +812 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/constants.rbs +96 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/data.rbs +415 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/dir.rbs +993 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/encoding.rbs +1368 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/enumerable.rbs +2506 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/enumerator/product.rbs +92 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/enumerator.rbs +705 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/env.rbs +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/errno.rbs +682 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/errors.rbs +789 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/exception.rbs +485 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/false_class.rbs +82 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/fiber.rbs +570 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/fiber_error.rbs +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/file.rbs +2045 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/file_constants.rbs +463 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/file_stat.rbs +534 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/file_test.rbs +331 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/float.rbs +1292 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/gc.rbs +788 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/global_variables.rbs +184 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/hash.rbs +2183 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/integer.rbs +1374 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/io/buffer.rbs +995 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/io/wait.rbs +48 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/io.rbs +3473 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/kernel.rbs +3172 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/marshal.rbs +207 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/match_data.rbs +637 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/math.rbs +770 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/method.rbs +422 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/module.rbs +1856 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/nil_class.rbs +210 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/numeric.rbs +832 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/object.rbs +108 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/object_space/weak_key_map.rbs +166 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/object_space.rbs +197 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/pathname.rbs +1312 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/proc.rbs +905 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/process.rbs +2316 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/ractor.rbs +914 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/random.rbs +255 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/range.rbs +1209 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rational.rbs +502 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rb_config.rbs +88 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rbs/ops.rbs +154 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rbs/unnamed/argf.rbs +1236 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rbs/unnamed/env_class.rbs +1214 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rbs/unnamed/main_class.rbs +123 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rbs/unnamed/random.rbs +186 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/refinement.rbs +59 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/regexp.rbs +1974 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/ruby.rbs +53 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/ruby_vm.rbs +809 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/basic_specification.rbs +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/config_file.rbs +38 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/dependency_installer.rbs +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/errors.rbs +112 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/installer.rbs +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/path_support.rbs +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/platform.rbs +7 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/request_set.rbs +49 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/requirement.rbs +138 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/rubygems.rbs +1108 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/source_list.rbs +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/specification.rbs +31 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/stream_ui.rbs +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/uninstaller.rbs +10 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/rubygems/version.rbs +133 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/set.rbs +751 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/signal.rbs +110 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/string.rbs +5532 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/struct.rbs +668 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/symbol.rbs +482 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/thread.rbs +1821 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/thread_group.rbs +79 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/time.rbs +1793 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/trace_point.rbs +483 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/true_class.rbs +98 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/unbound_method.rbs +337 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/core/warning.rbs +87 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/CONTRIBUTING.md +107 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/aliases.md +79 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/architecture.md +110 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/collection.md +192 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/config.md +171 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/data_and_struct.md +86 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/encoding.md +56 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/gem.md +56 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/inline.md +634 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/rbs_by_example.md +309 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/release.md +303 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/repo.md +125 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/rust.md +96 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/sigs.md +167 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/stdlib.md +155 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/syntax.md +952 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/tools.md +17 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/type_fingerprint.md +21 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/docs/wasm_serialization.md +80 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/exe/rbs +7 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/Makefile +273 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/ast_translation.c +1870 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/ast_translation.h +41 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/class_constants.c +189 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/class_constants.h +105 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/compat.h +10 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/extconf.rb +40 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/legacy_location.c +299 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/legacy_location.h +82 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/main.c +649 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/rbs_extension.h +16 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/rbs_string_bridging.c +9 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/ext/rbs_extension/rbs_string_bridging.h +24 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/goodcheck.yml +91 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/ast.h +1055 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/defines.h +104 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/lexer.h +208 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/location.h +40 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/parser.h +187 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/serialize.h +39 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/string.h +47 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/util/rbs_allocator.h +59 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/util/rbs_assert.h +20 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/util/rbs_buffer.h +83 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/util/rbs_constant_pool.h +155 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/util/rbs_encoding.h +282 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs/util/rbs_unescape.h +24 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/include/rbs.h +14 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ancestor_graph.rb +92 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/annotate/annotations.rb +199 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/annotate/formatter.rb +82 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/annotate/rdoc_annotator.rb +398 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/annotate/rdoc_source.rb +131 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/annotate.rb +8 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/annotation.rb +29 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/comment.rb +29 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/declarations.rb +472 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/directives.rb +49 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/members.rb +451 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/ruby/annotations.rb +451 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/ruby/comment_block.rb +247 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/ruby/declarations.rb +291 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/ruby/members.rb +762 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/type_param.rb +235 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/ast/visitor.rb +137 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/buffer.rb +189 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/builtin_names.rb +58 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/cli/colored_io.rb +48 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/cli/diff.rb +84 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/cli/validate.rb +294 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/cli.rb +1253 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/cleaner.rb +38 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/config/lockfile.rb +92 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/config/lockfile_generator.rb +269 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/config.rb +81 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/installer.rb +32 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/sources/base.rb +14 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/sources/git.rb +265 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/sources/local.rb +81 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/sources/rubygems.rb +48 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/sources/stdlib.rb +50 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection/sources.rb +38 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/collection.rb +16 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/constant.rb +28 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/definition.rb +415 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/definition_builder/ancestor_builder.rb +681 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/definition_builder/method_builder.rb +295 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/definition_builder.rb +1057 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/diff.rb +131 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/environment/class_entry.rb +81 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/environment/module_entry.rb +91 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/environment/use_map.rb +77 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/environment.rb +1028 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/environment_loader.rb +167 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/environment_walker.rb +155 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/errors.rb +634 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/factory.rb +18 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/file_finder.rb +28 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/inline_parser/comment_association.rb +117 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/inline_parser.rb +568 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/location_aux.rb +170 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/locator.rb +247 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/method_type.rb +145 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/namespace.rb +154 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/parser/lex_result.rb +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/parser/token.rb +23 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/parser_aux.rb +144 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/helpers.rb +164 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/node_usage.rb +99 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/rb.rb +816 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/rbi.rb +793 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/runtime/helpers.rb +59 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/runtime/reflection.rb +19 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/runtime/value_object_generator.rb +278 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/prototype/runtime.rb +680 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/repository.rb +127 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/resolver/constant_resolver.rb +219 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/resolver/type_name_resolver.rb +167 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/rewriter.rb +70 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/sorter.rb +198 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/source.rb +99 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/substitution.rb +83 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/subtractor.rb +204 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/errors.rb +80 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/guaranteed.rb +30 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/hook.rb +212 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/observer.rb +19 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/setup.rb +84 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/setup_helper.rb +50 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/tester.rb +167 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test/type_check.rb +457 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/test.rb +112 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/type_alias_dependency.rb +100 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/type_alias_regularity.rb +126 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/type_name.rb +122 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/types.rb +1646 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/unit_test/convertibles.rb +177 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/unit_test/spy.rb +138 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/unit_test/type_assertions.rb +383 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/unit_test/with_aliases.rb +145 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/unit_test.rb +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/validator.rb +186 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/variance_calculator.rb +189 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/vendorer.rb +71 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/version.rb +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/wasm/deserializer.rb +213 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/wasm/location.rb +61 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/wasm/parser.rb +174 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/wasm/runtime.rb +211 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/wasm/serialization_schema.rb +111 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs/writer.rb +424 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs.rb +117 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs_extension.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rbs_jars.rb +39 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rdoc/discover.rb +20 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/lib/rdoc_plugin/parser.rb +168 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/rbs.gemspec +77 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/annotation.json +14 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/comment.json +26 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/decls.json +326 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/function.json +98 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/location.json +56 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/members.json +266 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/methodType.json +50 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/typeParam.json +52 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/schema/types.json +317 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ancestor_builder.rbs +163 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ancestor_graph.rbs +60 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/annotate/annotations.rbs +102 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/annotate/formatter.rbs +24 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/annotate/rdoc_annotater.rbs +85 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/annotate/rdoc_source.rbs +32 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/annotation.rbs +27 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ast/ruby/annotations.rbs +470 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ast/ruby/comment_block.rbs +127 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ast/ruby/declarations.rbs +158 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ast/ruby/helpers/location_helper.rbs +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/ast/ruby/members.rbs +198 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/buffer.rbs +108 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/builtin_names.rbs +44 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/cli/colored_io.rbs +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/cli/diff.rbs +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/cli/validate.rbs +47 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/cli.rbs +89 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/collection/cleaner.rbs +13 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/collection/config/lockfile.rbs +74 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/collection/config/lockfile_generator.rbs +68 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/collection/config.rbs +46 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/collection/installer.rbs +17 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/collection/sources.rbs +214 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/collection.rbs +4 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/comment.rbs +26 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/constant.rbs +21 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/declarations.rbs +274 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/definition.rbs +232 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/definition_builder.rbs +181 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/diff.rbs +28 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/directives.rbs +77 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/environment/class_entry.rbs +56 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/environment/module_entry.rbs +65 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/environment.rbs +286 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/environment_loader.rbs +111 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/environment_walker.rbs +65 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/errors.rbs +408 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/factory.rbs +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/file_finder.rbs +28 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/inline_parser/comment_association.rbs +71 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/inline_parser.rbs +126 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/location.rbs +135 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/locator.rbs +56 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/manifest.yaml +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/members.rbs +258 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/method_builder.rbs +89 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/method_types.rbs +58 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/namespace.rbs +161 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/parser.rbs +164 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/prototype/helpers.rbs +29 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/prototype/node_usage.rbs +20 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/prototype/rb.rbs +96 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/prototype/rbi.rbs +104 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/prototype/runtime.rbs +182 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/rbs.rbs +21 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/rdoc/rbs.rbs +67 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/repository.rbs +85 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/resolver/constant_resolver.rbs +92 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/resolver/context.rbs +34 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/resolver/type_name_resolver.rbs +61 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/rewriter.rbs +45 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/shims/bundler.rbs +38 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/shims/enumerable.rbs +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/shims/rubygems.rbs +19 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/sorter.rbs +41 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/source.rbs +48 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/substitution.rbs +48 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/subtractor.rbs +37 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/test/errors.rbs +52 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/test/guranteed.rbs +9 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/test/type_check.rbs +19 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/test.rbs +82 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/type_alias_dependency.rbs +53 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/type_alias_regularity.rbs +98 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/type_param.rbs +115 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/typename.rbs +89 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/types.rbs +588 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/unit_test/convertibles.rbs +154 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/unit_test/spy.rbs +22 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/unit_test/type_assertions.rbs +211 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/unit_test/with_aliases.rbs +136 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/use_map.rbs +35 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/util.rbs +9 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/validator.rbs +63 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/variance_calculator.rbs +87 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/vendorer.rbs +51 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/version.rbs +3 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/visitor.rbs +47 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/wasm/deserializer.rbs +66 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/wasm/serialization_schema.rbs +13 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/sig/writer.rbs +127 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/ast.c +1644 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/lexer.c +3223 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/lexer.re +187 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/lexstate.c +222 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/location.c +31 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/parser.c +4318 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/serialize.c +965 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/string.c +41 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/util/rbs_allocator.c +171 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/util/rbs_assert.c +19 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/util/rbs_buffer.c +54 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/util/rbs_constant_pool.c +268 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/util/rbs_encoding.c +21454 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/src/util/rbs_unescape.c +167 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/abbrev/0/abbrev.rbs +66 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/abbrev/0/array.rbs +26 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/base64/0/base64.rbs +355 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/benchmark/0/benchmark.rbs +452 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/cgi/0/core.rbs +911 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/cgi/0/manifest.yaml +4 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/cgi-escape/0/escape.rbs +171 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/coverage/0/coverage.rbs +266 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/csv/0/csv.rbs +3776 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/csv/0/manifest.yaml +3 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/date/0/date.rbs +1598 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/date/0/date_time.rbs +617 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/date/0/time.rbs +26 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/dbm/0/dbm.rbs +421 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/delegate/0/delegator.rbs +188 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/delegate/0/kernel.rbs +47 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/delegate/0/simple_delegator.rbs +96 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/digest/0/digest.rbs +693 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/erb/0/erb.rbs +933 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/etc/0/etc.rbs +884 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/fileutils/0/fileutils.rbs +1753 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/find/0/find.rbs +49 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/forwardable/0/forwardable.rbs +271 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/io-console/0/io-console.rbs +414 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/ipaddr/0/ipaddr.rbs +431 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/json/0/json.rbs +1963 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/kconv/0/kconv.rbs +166 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/logger/0/formatter.rbs +45 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/logger/0/log_device.rbs +100 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/logger/0/logger.rbs +796 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/logger/0/manifest.yaml +2 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/logger/0/period.rbs +17 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/logger/0/severity.rbs +34 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/kernel.rbs +42 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/assertion.rbs +17 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/assertions.rbs +590 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/compress.rbs +13 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/expectation.rbs +2 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/expectations.rbs +21 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/guard.rbs +64 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/mock.rbs +64 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/parallel.rbs +2 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/reportable.rbs +53 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/reporter.rbs +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/result.rbs +28 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/runnable.rbs +163 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/skip.rbs +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/spec.rbs +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/test.rbs +69 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest/unit.rbs +4 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/minitest/0/minitest.rbs +115 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/monitor/0/monitor.rbs +363 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/mutex_m/0/mutex_m.rbs +104 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/net-http/0/manifest.yaml +3 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/net-http/0/net-http.rbs +5580 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/net-protocol/0/manifest.yaml +2 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/net-protocol/0/net-protocol.rbs +56 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/net-smtp/0/manifest.yaml +2 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/net-smtp/0/net-smtp.rbs +55 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/nkf/0/nkf.rbs +402 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/objspace/0/objspace.rbs +470 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/observable/0/observable.rbs +217 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/open-uri/0/manifest.yaml +4 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/open-uri/0/open-uri.rbs +433 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/open3/0/open3.rbs +606 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/openssl/0/manifest.yaml +3 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/openssl/0/openssl.rbs +12237 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/optparse/0/optparse.rbs +1734 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/pathname/0/pathname.rbs +36 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/pp/0/manifest.yaml +2 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/pp/0/pp.rbs +301 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/prettyprint/0/prettyprint.rbs +383 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/pstore/0/pstore.rbs +608 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/psych/0/core_ext.rbs +12 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/psych/0/dbm.rbs +237 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/psych/0/manifest.yaml +3 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/psych/0/psych.rbs +455 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/psych/0/store.rbs +57 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/pty/0/pty.rbs +240 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/random-formatter/0/random-formatter.rbs +277 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/code_object.rbs +52 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/comment.rbs +61 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/context.rbs +153 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/markup.rbs +117 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/options.rbs +76 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/parser.rbs +56 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/rdoc.rbs +393 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/ri.rbs +17 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/store.rbs +48 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/rdoc/0/top_level.rbs +97 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/resolv/0/manifest.yaml +3 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/resolv/0/resolv.rbs +1787 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/ripper/0/ripper.rbs +1654 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/securerandom/0/manifest.yaml +2 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/securerandom/0/securerandom.rbs +49 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/shellwords/0/shellwords.rbs +229 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/singleton/0/singleton.rbs +137 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/addrinfo.rbs +666 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/basic_socket.rbs +590 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/constants.rbs +2295 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/ip_socket.rbs +94 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/socket.rbs +4170 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/socket_error.rbs +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/tcp_server.rbs +192 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/tcp_socket.rbs +87 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/udp_socket.rbs +133 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/unix_server.rbs +169 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/socket/0/unix_socket.rbs +172 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/stringio/0/stringio.rbs +1682 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/strscan/0/string_scanner.rbs +1648 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/tempfile/0/manifest.yaml +3 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/tempfile/0/tempfile.rbs +483 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/time/0/time.rbs +434 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/timeout/0/timeout.rbs +132 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/tmpdir/0/tmpdir.rbs +69 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/tsort/0/cyclic.rbs +8 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/tsort/0/interfaces.rbs +20 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/tsort/0/tsort.rbs +410 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/common.rbs +621 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/file.rbs +118 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/ftp.rbs +13 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/generic.rbs +1111 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/http.rbs +104 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/https.rbs +14 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/ldap.rbs +230 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/ldaps.rbs +14 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/mailto.rbs +92 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/rfc2396_parser.rbs +189 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/rfc3986_parser.rbs +2 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/ws.rbs +13 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/uri/0/wss.rbs +9 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/yaml/0/manifest.yaml +2 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/yaml/0/yaml.rbs +1 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/buf_error.rbs +10 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/data_error.rbs +10 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/deflate.rbs +211 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/error.rbs +20 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/gzip_file/error.rbs +23 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/gzip_file.rbs +156 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/gzip_reader.rbs +293 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/gzip_writer.rbs +169 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/inflate.rbs +180 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/mem_error.rbs +10 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/need_dict.rbs +13 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/stream_end.rbs +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/stream_error.rbs +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/version_error.rbs +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/zlib.rbs +449 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/stdlib/zlib/0/zstream.rbs +200 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/wasm/README.md +109 -0
- data/vendor/bundle/ruby/3.4.0/gems/rbs-4.2.0/wasm/rbs_wasm.c +479 -0
- data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/LICENSE +19 -0
- data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/README.md +135 -0
- data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/datetime.rb +54 -0
- data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/dumper.rb +182 -0
- data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/errors.rb +17 -0
- data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/inline_table.rb +18 -0
- data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/keyvalue.rb +45 -0
- data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/parser.rb +296 -0
- data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/string.rb +41 -0
- data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/table.rb +34 -0
- data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/table_array.rb +43 -0
- data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb/version.rb +5 -0
- data/vendor/bundle/ruby/3.4.0/gems/toml-rb-6.0.0/lib/toml-rb.rb +90 -0
- data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/Gemfile +4 -0
- data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/LICENSE.txt +22 -0
- data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/README.md +72 -0
- data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/Rakefile +10 -0
- data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/bin/console +14 -0
- data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/bin/setup +8 -0
- data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb +455 -0
- data/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/tsort.gemspec +29 -0
- data/vendor/bundle/ruby/3.4.0/specifications/drb-2.2.3.gemspec +22 -0
- data/vendor/bundle/ruby/3.4.0/specifications/logger-1.7.0.gemspec +22 -0
- data/vendor/bundle/ruby/3.4.0/specifications/minitest-6.0.6.gemspec +35 -0
- data/vendor/bundle/ruby/3.4.0/specifications/prism-1.9.0.gemspec +24 -0
- data/vendor/bundle/ruby/3.4.0/specifications/rake-13.4.2.gemspec +26 -0
- data/vendor/bundle/ruby/3.4.0/specifications/rake-compiler-1.3.2.gemspec +33 -0
- data/vendor/bundle/ruby/3.4.0/specifications/rake-compiler-dock-1.12.0.gemspec +28 -0
- data/vendor/bundle/ruby/3.4.0/specifications/rb_sys-0.9.130.gemspec +29 -0
- data/vendor/bundle/ruby/3.4.0/specifications/rbs-4.2.0.gemspec +33 -0
- data/vendor/bundle/ruby/3.4.0/specifications/toml-rb-6.0.0.gemspec +27 -0
- data/vendor/bundle/ruby/3.4.0/specifications/tsort-0.2.0.gemspec +23 -0
- data/vendor/cache/Cargo.toml +21 -0
- data/vendor/cache/LICENSE +21 -0
- data/vendor/cache/README.md +5 -0
- data/vendor/cache/src/hash.rs +85 -0
- data/vendor/cache/src/lib.rs +751 -0
- data/vendor/cache/src/loom_tests.rs +340 -0
- data/vendor/cache/src/s3fifo.rs +648 -0
- data/vendor/cache/src/sync.rs +25 -0
- data/vendor/cache/src/tests.rs +260 -0
- data/vendor/compaction/Cargo.toml +32 -0
- data/vendor/compaction/LICENSE +21 -0
- data/vendor/compaction/README.md +5 -0
- data/vendor/compaction/src/blob.rs +478 -0
- data/vendor/compaction/src/cursor.rs +700 -0
- data/vendor/compaction/src/gc.rs +802 -0
- data/vendor/compaction/src/job.rs +861 -0
- data/vendor/compaction/src/lib.rs +102 -0
- data/vendor/compaction/src/merge.rs +995 -0
- data/vendor/compaction/src/picker.rs +681 -0
- data/vendor/compaction/src/resolver.rs +1346 -0
- data/vendor/engine/Cargo.toml +56 -0
- data/vendor/engine/LICENSE +21 -0
- data/vendor/engine/README.md +5 -0
- data/vendor/engine/src/admission.rs +421 -0
- data/vendor/engine/src/catalog.rs +1233 -0
- data/vendor/engine/src/check.rs +1386 -0
- data/vendor/engine/src/clock.rs +244 -0
- data/vendor/engine/src/clock_loom.rs +482 -0
- data/vendor/engine/src/close_gate.rs +325 -0
- data/vendor/engine/src/compact.rs +1509 -0
- data/vendor/engine/src/engine/hooks.rs +1654 -0
- data/vendor/engine/src/engine/info.rs +229 -0
- data/vendor/engine/src/engine.rs +6114 -0
- data/vendor/engine/src/error.rs +490 -0
- data/vendor/engine/src/feed.rs +960 -0
- data/vendor/engine/src/feed_reader.rs +1600 -0
- data/vendor/engine/src/flush.rs +839 -0
- data/vendor/engine/src/flushed_roots.rs +158 -0
- data/vendor/engine/src/flushed_through_loom.rs +77 -0
- data/vendor/engine/src/health.rs +201 -0
- data/vendor/engine/src/large.rs +372 -0
- data/vendor/engine/src/large_settle.rs +201 -0
- data/vendor/engine/src/lib.rs +112 -0
- data/vendor/engine/src/load_slot.rs +324 -0
- data/vendor/engine/src/maintenance.rs +935 -0
- data/vendor/engine/src/manifest/flight.rs +563 -0
- data/vendor/engine/src/manifest.rs +1516 -0
- data/vendor/engine/src/nonblocking.rs +603 -0
- data/vendor/engine/src/options.rs +334 -0
- data/vendor/engine/src/position.rs +125 -0
- data/vendor/engine/src/purge_guard.rs +220 -0
- data/vendor/engine/src/read/keys.rs +1049 -0
- data/vendor/engine/src/read/knn.rs +423 -0
- data/vendor/engine/src/read/reduce.rs +2057 -0
- data/vendor/engine/src/read/traverse.rs +1013 -0
- data/vendor/engine/src/read.rs +2429 -0
- data/vendor/engine/src/row_cache.rs +1101 -0
- data/vendor/engine/src/shard/tablets.rs +3582 -0
- data/vendor/engine/src/shard.rs +12215 -0
- data/vendor/engine/src/snapshot.rs +1429 -0
- data/vendor/engine/src/source.rs +1379 -0
- data/vendor/engine/src/timer_state.rs +226 -0
- data/vendor/engine/src/waker.rs +124 -0
- data/vendor/engine/src/watermark_waiters.rs +674 -0
- data/vendor/engine/src/write.rs +1321 -0
- data/vendor/format/Cargo.toml +40 -0
- data/vendor/format/LICENSE +21 -0
- data/vendor/format/README.md +5 -0
- data/vendor/format/src/blob.rs +101 -0
- data/vendor/format/src/block.rs +1120 -0
- data/vendor/format/src/bloom.rs +456 -0
- data/vendor/format/src/buckets.rs +552 -0
- data/vendor/format/src/bytes.rs +101 -0
- data/vendor/format/src/checksum.rs +132 -0
- data/vendor/format/src/compress.rs +196 -0
- data/vendor/format/src/cursor.rs +110 -0
- data/vendor/format/src/distance.rs +598 -0
- data/vendor/format/src/error.rs +93 -0
- data/vendor/format/src/exact.rs +602 -0
- data/vendor/format/src/feed.rs +285 -0
- data/vendor/format/src/filter.rs +157 -0
- data/vendor/format/src/half.rs +182 -0
- data/vendor/format/src/hash.rs +127 -0
- data/vendor/format/src/hll.rs +500 -0
- data/vendor/format/src/ids.rs +95 -0
- data/vendor/format/src/key.rs +620 -0
- data/vendor/format/src/kind_params.rs +101 -0
- data/vendor/format/src/lib.rs +54 -0
- data/vendor/format/src/manifest.rs +1287 -0
- data/vendor/format/src/roaring.rs +865 -0
- data/vendor/format/src/scan.rs +297 -0
- data/vendor/format/src/shm.rs +805 -0
- data/vendor/format/src/sst.rs +233 -0
- data/vendor/format/src/superblock.rs +345 -0
- data/vendor/format/src/value.rs +163 -0
- data/vendor/format/src/varint.rs +87 -0
- data/vendor/format/src/vector.rs +936 -0
- data/vendor/format/src/version.rs +92 -0
- data/vendor/format/src/wal.rs +999 -0
- data/vendor/io/Cargo.toml +29 -0
- data/vendor/io/LICENSE +21 -0
- data/vendor/io/README.md +5 -0
- data/vendor/io/src/async_poll.rs +44 -0
- data/vendor/io/src/buf.rs +694 -0
- data/vendor/io/src/completion.rs +444 -0
- data/vendor/io/src/error.rs +110 -0
- data/vendor/io/src/file.rs +206 -0
- data/vendor/io/src/lib.rs +53 -0
- data/vendor/io/src/nowait.rs +256 -0
- data/vendor/io/src/os/mod.rs +149 -0
- data/vendor/io/src/os/unix.rs +897 -0
- data/vendor/io/src/os/windows.rs +552 -0
- data/vendor/io/src/own.rs +257 -0
- data/vendor/io/src/pread.rs +854 -0
- data/vendor/io/src/ring_wake.rs +113 -0
- data/vendor/io/src/shared.rs +410 -0
- data/vendor/io/src/sim.rs +1545 -0
- data/vendor/io/src/sys.rs +214 -0
- data/vendor/io/src/uring.rs +1839 -0
- data/vendor/io/src/vfs.rs +154 -0
- data/vendor/memory/Cargo.toml +34 -0
- data/vendor/memory/LICENSE +21 -0
- data/vendor/memory/README.md +11 -0
- data/vendor/memory/src/consolidate.rs +640 -0
- data/vendor/memory/src/dedup.rs +231 -0
- data/vendor/memory/src/error.rs +131 -0
- data/vendor/memory/src/feed_loop.rs +572 -0
- data/vendor/memory/src/forget.rs +724 -0
- data/vendor/memory/src/hooks.rs +109 -0
- data/vendor/memory/src/ivf.rs +204 -0
- data/vendor/memory/src/layout.rs +340 -0
- data/vendor/memory/src/lib.rs +61 -0
- data/vendor/memory/src/recall.rs +1182 -0
- data/vendor/memory/src/store.rs +1785 -0
- data/vendor/memory/src/watch.rs +339 -0
- data/vendor/memtable/Cargo.toml +24 -0
- data/vendor/memtable/LICENSE +21 -0
- data/vendor/memtable/README.md +5 -0
- data/vendor/memtable/src/lib.rs +1658 -0
- data/vendor/memtable/src/loom_tests.rs +274 -0
- data/vendor/memtable/src/mem.rs +344 -0
- data/vendor/memtable/src/tests.rs +1061 -0
- data/vendor/pager/Cargo.toml +23 -0
- data/vendor/pager/LICENSE +21 -0
- data/vendor/pager/README.md +5 -0
- data/vendor/pager/src/alloc.rs +1008 -0
- data/vendor/pager/src/lib.rs +1710 -0
- data/vendor/pigeonhole/Cargo.toml +42 -0
- data/vendor/pigeonhole/LICENSE +21 -0
- data/vendor/pigeonhole/README.md +99 -0
- data/vendor/pigeonhole/src/cell.rs +829 -0
- data/vendor/pigeonhole/src/check.rs +368 -0
- data/vendor/pigeonhole/src/db.rs +2324 -0
- data/vendor/pigeonhole/src/doc_support.rs +89 -0
- data/vendor/pigeonhole/src/error.rs +257 -0
- data/vendor/pigeonhole/src/feed.rs +696 -0
- data/vendor/pigeonhole/src/info.rs +425 -0
- data/vendor/pigeonhole/src/lib.rs +202 -0
- data/vendor/pigeonhole/src/merge.rs +135 -0
- data/vendor/pigeonhole/src/metrics.rs +476 -0
- data/vendor/pigeonhole/src/nonblocking.rs +666 -0
- data/vendor/pigeonhole/src/options.rs +2075 -0
- data/vendor/pigeonhole/src/read/budget.rs +584 -0
- data/vendor/pigeonhole/src/read.rs +2463 -0
- data/vendor/pigeonhole/src/recovery.rs +876 -0
- data/vendor/pigeonhole/src/retry.rs +358 -0
- data/vendor/pigeonhole/src/set.rs +103 -0
- data/vendor/pigeonhole/src/table.rs +861 -0
- data/vendor/pigeonhole/src/vector.rs +351 -0
- data/vendor/pigeonhole/src/write.rs +2815 -0
- data/vendor/runtime/Cargo.toml +21 -0
- data/vendor/runtime/LICENSE +21 -0
- data/vendor/runtime/README.md +5 -0
- data/vendor/runtime/src/completion.rs +629 -0
- data/vendor/runtime/src/drivers.rs +1175 -0
- data/vendor/runtime/src/lib.rs +1546 -0
- data/vendor/runtime/src/pool.rs +992 -0
- data/vendor/runtime/src/sched.rs +809 -0
- data/vendor/runtime/src/signal.rs +532 -0
- data/vendor/runtime/src/submit_gate.rs +144 -0
- data/vendor/shm/Cargo.toml +24 -0
- data/vendor/shm/LICENSE +21 -0
- data/vendor/shm/README.md +5 -0
- data/vendor/shm/src/lib.rs +427 -0
- data/vendor/shm/src/lock.rs +153 -0
- data/vendor/shm/src/region.rs +1609 -0
- data/vendor/sst/Cargo.toml +26 -0
- data/vendor/sst/LICENSE +21 -0
- data/vendor/sst/README.md +5 -0
- data/vendor/sst/src/blob.rs +380 -0
- data/vendor/sst/src/iter.rs +803 -0
- data/vendor/sst/src/lib.rs +695 -0
- data/vendor/sst/src/reader.rs +814 -0
- data/vendor/sst/src/writer.rs +596 -0
- data/vendor/text/Cargo.toml +26 -0
- data/vendor/text/LICENSE +21 -0
- data/vendor/text/README.md +9 -0
- data/vendor/text/src/error.rs +108 -0
- data/vendor/text/src/fuzzy.rs +265 -0
- data/vendor/text/src/highlight.rs +236 -0
- data/vendor/text/src/index.rs +1152 -0
- data/vendor/text/src/layout.rs +424 -0
- data/vendor/text/src/lib.rs +75 -0
- data/vendor/text/src/maxscore.rs +658 -0
- data/vendor/text/src/query.rs +450 -0
- data/vendor/text/src/search.rs +569 -0
- data/vendor/text/src/sloppy.rs +460 -0
- data/vendor/text/src/tokenizer.rs +163 -0
- data/vendor/vector/Cargo.toml +28 -0
- data/vendor/vector/LICENSE +21 -0
- data/vendor/vector/README.md +9 -0
- data/vendor/vector/src/error.rs +63 -0
- data/vendor/vector/src/half.rs +167 -0
- data/vendor/vector/src/hooks.rs +135 -0
- data/vendor/vector/src/index.rs +2690 -0
- data/vendor/vector/src/layout.rs +102 -0
- data/vendor/vector/src/lib.rs +52 -0
- data/vendor/vector/src/point.rs +500 -0
- data/vendor/vector/src/rebalancer.rs +200 -0
- data/vendor/vector/src/registry.rs +81 -0
- data/vendor/wal/Cargo.toml +25 -0
- data/vendor/wal/LICENSE +21 -0
- data/vendor/wal/README.md +5 -0
- data/vendor/wal/src/feed.rs +610 -0
- data/vendor/wal/src/foreground.rs +122 -0
- data/vendor/wal/src/lib.rs +458 -0
- data/vendor/wal/src/mem.rs +166 -0
- data/vendor/wal/src/recovery.rs +426 -0
- data/vendor/wal/src/stream.rs +2382 -0
- metadata +1310 -0
|
@@ -0,0 +1,1321 @@
|
|
|
1
|
+
use std::future::Future;
|
|
2
|
+
use std::pin::Pin;
|
|
3
|
+
use std::sync::Arc;
|
|
4
|
+
use std::sync::atomic::Ordering;
|
|
5
|
+
use std::task::{Context, Poll};
|
|
6
|
+
|
|
7
|
+
use pigeonhole_compaction::ValuePredicate;
|
|
8
|
+
use pigeonhole_format::Kind;
|
|
9
|
+
use pigeonhole_format::value::{ValueRef, ValueTag, encode_value};
|
|
10
|
+
use pigeonhole_format::wal::{BatchBuilder, BatchRef};
|
|
11
|
+
use pigeonhole_format::{Durability, FamilyId, TableId, Timestamp};
|
|
12
|
+
use pigeonhole_runtime::{Notifier, SlotCache, Waiter, completion, completion_from};
|
|
13
|
+
|
|
14
|
+
use crate::engine::Inner;
|
|
15
|
+
use crate::{CellData, CommitInfo, Error, Snapshot};
|
|
16
|
+
|
|
17
|
+
/// A whole-row delete recorded in a batch, expanded to one family marker per family of the
|
|
18
|
+
/// table when the batch is submitted (decision D10; the batch does not know the catalog).
|
|
19
|
+
#[derive(Debug, Clone)]
|
|
20
|
+
pub(crate) struct RowDelete {
|
|
21
|
+
pub table: TableId,
|
|
22
|
+
pub row: Vec<u8>,
|
|
23
|
+
pub ts: Option<Timestamp>,
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/// The timestamp of a counter family's counter (decision D179): a put or merge operand
|
|
27
|
+
/// without an explicit timestamp in a `FamilyKind::Counter` family is written here, so all
|
|
28
|
+
/// of a counter's increments share one `(column, timestamp)` and combine.
|
|
29
|
+
pub const COUNTER_TS: Timestamp = 0;
|
|
30
|
+
|
|
31
|
+
/// A multi-row write with one durability point. Mutations are encoded on insert in the WAL
|
|
32
|
+
/// batch encoding (`pigeonhole_format::wal::BatchBuilder`), so commit never re-encodes.
|
|
33
|
+
/// Commit is atomic per row always; across rows it is atomic too (two-phase commit across
|
|
34
|
+
/// shards when rows span shards).
|
|
35
|
+
///
|
|
36
|
+
/// ```
|
|
37
|
+
/// use pigeonhole_engine::{FamilyId, TableId, ValueRef, WriteBatch};
|
|
38
|
+
///
|
|
39
|
+
/// let mut wb = WriteBatch::new();
|
|
40
|
+
/// wb.put(TableId(1), FamilyId(1), b"row", b"q", None, ValueRef::Bytes(b"v")).unwrap();
|
|
41
|
+
/// wb.merge(TableId(1), FamilyId(2), b"row", b"hits", ValueRef::I64(1)).unwrap();
|
|
42
|
+
/// wb.delete_column(TableId(1), FamilyId(1), b"row", b"old", None).unwrap();
|
|
43
|
+
/// assert_eq!(wb.len(), 3);
|
|
44
|
+
/// wb.clear();
|
|
45
|
+
/// assert!(wb.is_empty());
|
|
46
|
+
/// ```
|
|
47
|
+
#[derive(Debug, Clone)]
|
|
48
|
+
pub struct WriteBatch {
|
|
49
|
+
pub(crate) builder: BatchBuilder,
|
|
50
|
+
pub(crate) row_deletes: Vec<RowDelete>,
|
|
51
|
+
/// Scratch for value encoding (kept between calls).
|
|
52
|
+
value_buf: Vec<u8>,
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/// Bytes a new batch has room for before it grows: a few small mutations (#320).
|
|
56
|
+
const INITIAL_BATCH_BYTES: usize = 256;
|
|
57
|
+
|
|
58
|
+
/// The largest batch whose buffer a thread keeps for its next batch (#320): a thread that
|
|
59
|
+
/// once committed a large batch does not hold that much memory for good.
|
|
60
|
+
const RECYCLED_BATCH_MAX: usize = 64 << 10;
|
|
61
|
+
|
|
62
|
+
thread_local! {
|
|
63
|
+
/// A committed batch's buffer, handed back by its shard with the reply ([`Settled`]), for
|
|
64
|
+
/// this thread's next [`WriteBatch`]: a commit's buffer is then neither allocated per
|
|
65
|
+
/// commit nor freed on the shard's thread (#320).
|
|
66
|
+
static RECYCLED_BATCH: std::cell::Cell<Option<BatchBuilder>> =
|
|
67
|
+
const { std::cell::Cell::new(None) };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/// Keeps `batch`'s buffer for this thread's next batch, unless it grew large.
|
|
71
|
+
fn recycle(batch: Option<BatchBuilder>) {
|
|
72
|
+
if let Some(batch) = batch
|
|
73
|
+
&& batch.batch().as_bytes().len() <= RECYCLED_BATCH_MAX
|
|
74
|
+
{
|
|
75
|
+
RECYCLED_BATCH.with(|slot| slot.set(Some(batch)));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/// A shard's reply to a single-shard commit: its outcome, and the batch's buffer handed back
|
|
80
|
+
/// to the committing side for reuse ([`recycle`]). Cross-shard and internal commits return
|
|
81
|
+
/// none.
|
|
82
|
+
#[derive(Debug)]
|
|
83
|
+
pub(crate) struct Settled {
|
|
84
|
+
pub(crate) info: CommitInfo,
|
|
85
|
+
pub(crate) batch: Option<BatchBuilder>,
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
impl From<CommitInfo> for Settled {
|
|
89
|
+
fn from(info: CommitInfo) -> Self {
|
|
90
|
+
Self { info, batch: None }
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
impl Default for WriteBatch {
|
|
95
|
+
fn default() -> Self {
|
|
96
|
+
let builder = match RECYCLED_BATCH.with(std::cell::Cell::take) {
|
|
97
|
+
Some(mut b) => {
|
|
98
|
+
b.clear();
|
|
99
|
+
b
|
|
100
|
+
}
|
|
101
|
+
None => BatchBuilder::with_capacity(INITIAL_BATCH_BYTES),
|
|
102
|
+
};
|
|
103
|
+
Self {
|
|
104
|
+
builder,
|
|
105
|
+
row_deletes: Vec::new(),
|
|
106
|
+
value_buf: Vec::new(),
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/// Refuses what is never a merge operand: a blob pointer, and a vector (D303: a vector
|
|
112
|
+
/// family takes puts only, and tag 0x04 never lands outside one).
|
|
113
|
+
fn check_operand(operand: ValueRef<'_>) -> crate::Result<()> {
|
|
114
|
+
match operand {
|
|
115
|
+
ValueRef::Blob(_) => Err(Error::InvalidArgument(
|
|
116
|
+
"a blob pointer cannot be a merge operand".to_owned(),
|
|
117
|
+
)),
|
|
118
|
+
ValueRef::Vector(_) => Err(Error::InvalidArgument(
|
|
119
|
+
"a vector cannot be a merge operand: put it into a vector family".to_owned(),
|
|
120
|
+
)),
|
|
121
|
+
_ => Ok(()),
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
impl WriteBatch {
|
|
126
|
+
/// An empty batch.
|
|
127
|
+
pub fn new() -> Self {
|
|
128
|
+
Self::default()
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/// Puts a value. `ts = None` uses the commit timestamp, or [`COUNTER_TS`] in a counter
|
|
132
|
+
/// family (which holds only `i64` values).
|
|
133
|
+
pub fn put(
|
|
134
|
+
&mut self,
|
|
135
|
+
table: TableId,
|
|
136
|
+
family: FamilyId,
|
|
137
|
+
row: &[u8],
|
|
138
|
+
qualifier: &[u8],
|
|
139
|
+
ts: Option<Timestamp>,
|
|
140
|
+
value: ValueRef<'_>,
|
|
141
|
+
) -> crate::Result<()> {
|
|
142
|
+
if matches!(value, ValueRef::Blob(_)) {
|
|
143
|
+
return Err(Error::InvalidArgument(
|
|
144
|
+
"a blob pointer cannot be written directly".to_owned(),
|
|
145
|
+
));
|
|
146
|
+
}
|
|
147
|
+
self.push_value(table, family, Kind::Put, row, qualifier, ts, value)
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/// Appends a put or merge operand. A `Bytes` value is written straight into the batch
|
|
151
|
+
/// (its only copy until the commit routes it, #320); the small typed ones are encoded
|
|
152
|
+
/// first.
|
|
153
|
+
#[allow(clippy::too_many_arguments)]
|
|
154
|
+
fn push_value(
|
|
155
|
+
&mut self,
|
|
156
|
+
table: TableId,
|
|
157
|
+
family: FamilyId,
|
|
158
|
+
kind: Kind,
|
|
159
|
+
row: &[u8],
|
|
160
|
+
qualifier: &[u8],
|
|
161
|
+
ts: Option<Timestamp>,
|
|
162
|
+
value: ValueRef<'_>,
|
|
163
|
+
) -> crate::Result<()> {
|
|
164
|
+
if let ValueRef::Bytes(payload) = value {
|
|
165
|
+
self.builder.push_tagged(
|
|
166
|
+
table,
|
|
167
|
+
family,
|
|
168
|
+
kind,
|
|
169
|
+
row,
|
|
170
|
+
qualifier,
|
|
171
|
+
ts,
|
|
172
|
+
ValueTag::Bytes as u8,
|
|
173
|
+
payload,
|
|
174
|
+
)?;
|
|
175
|
+
return Ok(());
|
|
176
|
+
}
|
|
177
|
+
self.value_buf.clear();
|
|
178
|
+
encode_value(&mut self.value_buf, value);
|
|
179
|
+
self.builder
|
|
180
|
+
.push(table, family, kind, row, qualifier, ts, &self.value_buf)?;
|
|
181
|
+
Ok(())
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/// Writes a merge operand. In a counter family (`FamilyKind::Counter`) it lands at
|
|
185
|
+
/// [`COUNTER_TS`]; elsewhere at the commit timestamp.
|
|
186
|
+
pub fn merge(
|
|
187
|
+
&mut self,
|
|
188
|
+
table: TableId,
|
|
189
|
+
family: FamilyId,
|
|
190
|
+
row: &[u8],
|
|
191
|
+
qualifier: &[u8],
|
|
192
|
+
operand: ValueRef<'_>,
|
|
193
|
+
) -> crate::Result<()> {
|
|
194
|
+
check_operand(operand)?;
|
|
195
|
+
self.push_value(table, family, Kind::Merge, row, qualifier, None, operand)
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/// Writes a merge operand at timestamp `ts`: a bucket of a counter family (decision
|
|
199
|
+
/// D179). Other families refuse it at commit with `InvalidArgument`.
|
|
200
|
+
pub fn merge_at(
|
|
201
|
+
&mut self,
|
|
202
|
+
table: TableId,
|
|
203
|
+
family: FamilyId,
|
|
204
|
+
row: &[u8],
|
|
205
|
+
qualifier: &[u8],
|
|
206
|
+
ts: Timestamp,
|
|
207
|
+
operand: ValueRef<'_>,
|
|
208
|
+
) -> crate::Result<()> {
|
|
209
|
+
check_operand(operand)?;
|
|
210
|
+
self.push_value(
|
|
211
|
+
table,
|
|
212
|
+
family,
|
|
213
|
+
Kind::Merge,
|
|
214
|
+
row,
|
|
215
|
+
qualifier,
|
|
216
|
+
Some(ts),
|
|
217
|
+
operand,
|
|
218
|
+
)
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/// Deletes one version.
|
|
222
|
+
pub fn delete_cell(
|
|
223
|
+
&mut self,
|
|
224
|
+
table: TableId,
|
|
225
|
+
family: FamilyId,
|
|
226
|
+
row: &[u8],
|
|
227
|
+
qualifier: &[u8],
|
|
228
|
+
ts: Timestamp,
|
|
229
|
+
) -> crate::Result<()> {
|
|
230
|
+
self.builder.push(
|
|
231
|
+
table,
|
|
232
|
+
family,
|
|
233
|
+
Kind::CellDelete,
|
|
234
|
+
row,
|
|
235
|
+
qualifier,
|
|
236
|
+
Some(ts),
|
|
237
|
+
&[],
|
|
238
|
+
)?;
|
|
239
|
+
Ok(())
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/// Deletes all versions of a column at or below `ts` (`None`: the commit timestamp).
|
|
243
|
+
pub fn delete_column(
|
|
244
|
+
&mut self,
|
|
245
|
+
table: TableId,
|
|
246
|
+
family: FamilyId,
|
|
247
|
+
row: &[u8],
|
|
248
|
+
qualifier: &[u8],
|
|
249
|
+
ts: Option<Timestamp>,
|
|
250
|
+
) -> crate::Result<()> {
|
|
251
|
+
self.builder
|
|
252
|
+
.push(table, family, Kind::ColumnDelete, row, qualifier, ts, &[])?;
|
|
253
|
+
Ok(())
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/// Deletes a family within a row at or below `ts`.
|
|
257
|
+
pub fn delete_family(
|
|
258
|
+
&mut self,
|
|
259
|
+
table: TableId,
|
|
260
|
+
family: FamilyId,
|
|
261
|
+
row: &[u8],
|
|
262
|
+
ts: Option<Timestamp>,
|
|
263
|
+
) -> crate::Result<()> {
|
|
264
|
+
self.builder
|
|
265
|
+
.push(table, family, Kind::FamilyDelete, row, &[], ts, &[])?;
|
|
266
|
+
Ok(())
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/// Deletes a whole row: one family marker per family of the table (decision D10).
|
|
270
|
+
pub fn delete_row(
|
|
271
|
+
&mut self,
|
|
272
|
+
table: TableId,
|
|
273
|
+
row: &[u8],
|
|
274
|
+
ts: Option<Timestamp>,
|
|
275
|
+
) -> crate::Result<()> {
|
|
276
|
+
if row.len() > pigeonhole_format::key::MAX_KEY_PART {
|
|
277
|
+
return Err(Error::KeyTooLarge);
|
|
278
|
+
}
|
|
279
|
+
self.row_deletes.push(RowDelete {
|
|
280
|
+
table,
|
|
281
|
+
row: row.to_vec(),
|
|
282
|
+
ts,
|
|
283
|
+
});
|
|
284
|
+
Ok(())
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/// Mutations so far.
|
|
288
|
+
pub fn len(&self) -> usize {
|
|
289
|
+
self.builder.len() + self.row_deletes.len()
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/// Whether empty.
|
|
293
|
+
pub fn is_empty(&self) -> bool {
|
|
294
|
+
self.len() == 0
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/// Clears for reuse, keeping allocations.
|
|
298
|
+
pub fn clear(&mut self) {
|
|
299
|
+
self.builder.clear();
|
|
300
|
+
self.row_deletes.clear();
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/// The encoded mutations (row deletes excluded until expanded).
|
|
304
|
+
pub(crate) fn batch(&self) -> BatchRef<'_> {
|
|
305
|
+
self.builder.batch()
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/// A condition for `Engine::check_and_mutate`, evaluated on the owning shard at the latest
|
|
310
|
+
/// seqno.
|
|
311
|
+
#[derive(Debug, Clone, PartialEq)]
|
|
312
|
+
pub enum Predicate {
|
|
313
|
+
/// The column has a visible version.
|
|
314
|
+
Exists {
|
|
315
|
+
/// Family.
|
|
316
|
+
family: FamilyId,
|
|
317
|
+
/// Qualifier.
|
|
318
|
+
qualifier: Vec<u8>,
|
|
319
|
+
},
|
|
320
|
+
/// The column has no visible version.
|
|
321
|
+
Absent {
|
|
322
|
+
/// Family.
|
|
323
|
+
family: FamilyId,
|
|
324
|
+
/// Qualifier.
|
|
325
|
+
qualifier: Vec<u8>,
|
|
326
|
+
},
|
|
327
|
+
/// The column's latest value matches.
|
|
328
|
+
Value {
|
|
329
|
+
/// Family.
|
|
330
|
+
family: FamilyId,
|
|
331
|
+
/// Qualifier.
|
|
332
|
+
qualifier: Vec<u8>,
|
|
333
|
+
/// Condition.
|
|
334
|
+
predicate: ValuePredicate,
|
|
335
|
+
},
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/// A commit submitted to its shard(s): what the engine's own blocking commits wait on
|
|
339
|
+
/// ([`Submission::wait`]). [`PendingCommit`] wraps it for tickets and async commits, so the
|
|
340
|
+
/// blocking path carries nothing of theirs (#523).
|
|
341
|
+
#[derive(Debug)]
|
|
342
|
+
pub(crate) struct Submission {
|
|
343
|
+
pub(crate) waiter: Waiter<crate::Result<Settled>>,
|
|
344
|
+
/// The engine, for registering an async waker on the global watermark: reached through
|
|
345
|
+
/// the commit's shard's handle, so commits to different shards share no reference count
|
|
346
|
+
/// (D236).
|
|
347
|
+
pub(crate) shared: Arc<crate::engine::ShardRef>,
|
|
348
|
+
/// Whether `wait` may poll before it parks (D198): not for a durable commit, which
|
|
349
|
+
/// waits for a sync. The window is the engine's `commit_spin_nanos`.
|
|
350
|
+
pub(crate) spins: bool,
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/// A commit submitted to its shard(s) and not yet resolved, or an async commit still
|
|
354
|
+
/// waiting for room to submit (D210). The basis of ticket-style commits
|
|
355
|
+
/// ([`PendingCommit::wait`]) and async commits (`.await`). Dropping it does not roll back:
|
|
356
|
+
/// a submitted commit lands or fails atomically either way; one still waiting writes
|
|
357
|
+
/// nothing.
|
|
358
|
+
#[derive(Debug)]
|
|
359
|
+
#[must_use = "dropping a pending commit does not cancel it, but its result is lost"]
|
|
360
|
+
pub struct PendingCommit {
|
|
361
|
+
pub(crate) sub: Submission,
|
|
362
|
+
/// Resolved by the shard; waiting for visibility (async polling).
|
|
363
|
+
pub(crate) resolved: Option<CommitInfo>,
|
|
364
|
+
/// An async commit still waiting for room on its shard (D210): submitted once
|
|
365
|
+
/// admitted. `sub` holds a placeholder waiter meanwhile.
|
|
366
|
+
pub(crate) deferred: Option<Box<Deferred<PendingCommit, crate::Result<Settled>>>>,
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
impl From<Submission> for PendingCommit {
|
|
370
|
+
fn from(sub: Submission) -> Self {
|
|
371
|
+
Self {
|
|
372
|
+
sub,
|
|
373
|
+
resolved: None,
|
|
374
|
+
deferred: None,
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/// A conditional commit's reply: whether the batch applied, and its commit when it did.
|
|
380
|
+
type CheckReply = crate::Result<(bool, Option<CommitInfo>)>;
|
|
381
|
+
|
|
382
|
+
/// An async commit still waiting for room on its shard (D210): its admission and the
|
|
383
|
+
/// submission to run once admitted. The waiting [`PendingCommit`] or [`PendingCheck`] holds
|
|
384
|
+
/// it, beside a placeholder waiter whose notifier this keeps unresolved.
|
|
385
|
+
pub(crate) struct Deferred<P, R> {
|
|
386
|
+
admit: crate::Admit,
|
|
387
|
+
submit: Box<dyn FnOnce() -> crate::Result<P> + Send + Sync>,
|
|
388
|
+
placeholder: Notifier<R>,
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
impl<P, R> std::fmt::Debug for Deferred<P, R> {
|
|
392
|
+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
393
|
+
f.debug_struct("Deferred")
|
|
394
|
+
.field("admit", &self.admit)
|
|
395
|
+
.finish_non_exhaustive()
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
impl<P, R: Send> Deferred<P, R> {
|
|
400
|
+
/// A deferral and the placeholder waiter its pending commit holds until it submits.
|
|
401
|
+
fn new(
|
|
402
|
+
admit: crate::Admit,
|
|
403
|
+
submit: Box<dyn FnOnce() -> crate::Result<P> + Send + Sync>,
|
|
404
|
+
) -> (Box<Self>, Waiter<R>) {
|
|
405
|
+
let (placeholder, waiter) = completion();
|
|
406
|
+
(
|
|
407
|
+
Box::new(Self {
|
|
408
|
+
admit,
|
|
409
|
+
submit,
|
|
410
|
+
placeholder,
|
|
411
|
+
}),
|
|
412
|
+
waiter,
|
|
413
|
+
)
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/// Submits once admitted: the submission and its admission, whose charge goes to the
|
|
417
|
+
/// submitted commit.
|
|
418
|
+
fn poll_submit(
|
|
419
|
+
slot: &mut Option<Box<Self>>,
|
|
420
|
+
cx: &mut Context<'_>,
|
|
421
|
+
) -> Poll<(crate::Admit, crate::Result<P>)> {
|
|
422
|
+
let d = slot.as_mut().expect("a deferred commit");
|
|
423
|
+
if d.admit.poll_admit(cx).is_pending() {
|
|
424
|
+
return Poll::Pending;
|
|
425
|
+
}
|
|
426
|
+
let Self {
|
|
427
|
+
admit,
|
|
428
|
+
submit,
|
|
429
|
+
placeholder,
|
|
430
|
+
} = *slot.take().expect("a deferred commit");
|
|
431
|
+
let submitted = submit();
|
|
432
|
+
// Dropped after the submission replaced it: nobody waits on the placeholder.
|
|
433
|
+
drop(placeholder);
|
|
434
|
+
Poll::Ready((admit, submitted))
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
/// [`poll_submit`](Self::poll_submit), parking the thread until admitted (a blocking
|
|
438
|
+
/// wait on an async commit that is still waiting for room).
|
|
439
|
+
fn submit_blocking(slot: &mut Option<Box<Self>>) -> (crate::Admit, crate::Result<P>) {
|
|
440
|
+
struct Unpark(std::thread::Thread);
|
|
441
|
+
impl std::task::Wake for Unpark {
|
|
442
|
+
fn wake(self: Arc<Self>) {
|
|
443
|
+
self.0.unpark();
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
let waker = std::task::Waker::from(Arc::new(Unpark(std::thread::current())));
|
|
447
|
+
let mut cx = Context::from_waker(&waker);
|
|
448
|
+
loop {
|
|
449
|
+
if let Poll::Ready(r) = Self::poll_submit(slot, &mut cx) {
|
|
450
|
+
return r;
|
|
451
|
+
}
|
|
452
|
+
debug_assert!(
|
|
453
|
+
!pigeonhole_io::in_async_poll(),
|
|
454
|
+
"a commit wait parks inside an async poll (a lost wake, #1226)"
|
|
455
|
+
);
|
|
456
|
+
std::thread::park();
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
thread_local! {
|
|
462
|
+
/// This thread's spare completion slots for its commits (#320): a commit reuses one
|
|
463
|
+
/// instead of allocating its reply slot (and, on macOS, the slot's lock). Freed when the
|
|
464
|
+
/// thread exits.
|
|
465
|
+
static COMMIT_SLOTS: SlotCache<crate::Result<Settled>> = const { SlotCache::new() };
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
/// A commit's completion, reusing one of this thread's spare slots when it has one (#320).
|
|
469
|
+
pub(crate) fn commit_completion() -> (
|
|
470
|
+
Notifier<crate::Result<Settled>>,
|
|
471
|
+
Waiter<crate::Result<Settled>>,
|
|
472
|
+
) {
|
|
473
|
+
COMMIT_SLOTS
|
|
474
|
+
.try_with(completion_from)
|
|
475
|
+
.unwrap_or_else(|_| completion())
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
impl Drop for Submission {
|
|
479
|
+
fn drop(&mut self) {
|
|
480
|
+
// The shard has released the slot once it replied (or dropped the reply): it goes
|
|
481
|
+
// back to the thread this commit is dropped on, reset.
|
|
482
|
+
let _ = COMMIT_SLOTS.try_with(|c| self.waiter.recycle_into(c));
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
impl PendingCommit {
|
|
487
|
+
/// Blocks until the commit meets its durability level and is visible. The thread parks
|
|
488
|
+
/// while it waits. Fails with [`Error::Closed`] if the database closed before the commit
|
|
489
|
+
/// was written, and with [`Error::OutcomeUnknown`] if it closed, or a shard died (its
|
|
490
|
+
/// thread panicked, or its `EngineShard` was dropped), after the commit may have reached
|
|
491
|
+
/// the WAL but before it was visible: the next open decides it (D227, ICR 0038).
|
|
492
|
+
///
|
|
493
|
+
/// In application-owned mode a thread that drives a shard must not block: the commit
|
|
494
|
+
/// may need that shard to run (its own group, or any group holding the global
|
|
495
|
+
/// watermark below it, decision D88). On such a thread this returns the result if the
|
|
496
|
+
/// commit is already done and visible, and otherwise fails at once with
|
|
497
|
+
/// [`Error::WouldDeadlock`]: the commit was submitted and will apply, but its outcome
|
|
498
|
+
/// must be awaited from the event loop (poll this future there) or another thread.
|
|
499
|
+
pub fn wait(mut self) -> crate::Result<CommitInfo> {
|
|
500
|
+
// Submitted before a fork: in the child no shard thread will resolve it (#901, M2).
|
|
501
|
+
if forked(&self.sub.shared) {
|
|
502
|
+
return Err(crate::engine::forked());
|
|
503
|
+
}
|
|
504
|
+
if self.deferred.is_some() {
|
|
505
|
+
self = self.submit_deferred_blocking()?;
|
|
506
|
+
}
|
|
507
|
+
self.sub.wait()
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
/// A blocking wait on an async commit still waiting for room: parks until admitted,
|
|
511
|
+
/// then submits. Out of line: tickets never wait for room.
|
|
512
|
+
#[cold]
|
|
513
|
+
#[inline(never)]
|
|
514
|
+
fn submit_deferred_blocking(mut self) -> crate::Result<PendingCommit> {
|
|
515
|
+
let (admit, submitted) = Deferred::submit_blocking(&mut self.deferred);
|
|
516
|
+
let pending = submitted?;
|
|
517
|
+
admit.attach(&pending);
|
|
518
|
+
Ok(pending)
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
impl Submission {
|
|
523
|
+
/// [`PendingCommit::wait`] for a commit the engine submitted itself (a blocking
|
|
524
|
+
/// commit): never waiting for room.
|
|
525
|
+
pub(crate) fn wait(mut self) -> crate::Result<CommitInfo> {
|
|
526
|
+
if forked(&self.shared) {
|
|
527
|
+
return Err(crate::engine::forked());
|
|
528
|
+
}
|
|
529
|
+
wait_body(&self.shared, &mut self.waiter, self.spins)
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
/// Whether this is a forked child of the process that opened the engine (#901): a commit
|
|
534
|
+
/// or check waited on there would wait for ever for a shard thread that runs only in the
|
|
535
|
+
/// parent, so it fails `Unsupported` on its first poll or wait instead (perf287's M2).
|
|
536
|
+
#[inline]
|
|
537
|
+
fn forked(shared: &crate::engine::ShardRef) -> bool {
|
|
538
|
+
pigeonhole_io::sys::process_id() != shared.opened_in
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
/// `Pending`, or `Unsupported` in a forked child (#901). Checked where a commit or check
|
|
542
|
+
/// future is about to return `Pending` (the only way it can wait), not on every poll: a
|
|
543
|
+
/// future that resolves at once pays nothing, and one polled `Pending` before a fork fails
|
|
544
|
+
/// on its next poll in the child (perf287's round 2 on #919).
|
|
545
|
+
#[inline]
|
|
546
|
+
fn pending_or_forked<T>(shared: &crate::engine::ShardRef) -> Poll<crate::Result<T>> {
|
|
547
|
+
if forked(shared) {
|
|
548
|
+
Poll::Ready(Err(crate::engine::forked()))
|
|
549
|
+
} else {
|
|
550
|
+
Poll::Pending
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
/// A blocking commit's wait on the engine's own borrowed state (D236): the caller holds
|
|
555
|
+
/// the engine for the whole wait, so the commit takes no reference on it. Returns the
|
|
556
|
+
/// completion slot to this thread's cache, as dropping a [`Submission`] does.
|
|
557
|
+
#[inline]
|
|
558
|
+
pub(crate) fn wait_blocking(
|
|
559
|
+
shared: &crate::shard::Shared,
|
|
560
|
+
waiter: &mut Waiter<crate::Result<Settled>>,
|
|
561
|
+
spins: bool,
|
|
562
|
+
) -> crate::Result<CommitInfo> {
|
|
563
|
+
let r = wait_body(shared, waiter, spins);
|
|
564
|
+
let _ = COMMIT_SLOTS.try_with(|c| waiter.recycle_into(c));
|
|
565
|
+
r
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
/// The wait of a submitted commit: its reply, then visibility (D19), spinning first for a
|
|
569
|
+
/// commit that may (D198).
|
|
570
|
+
#[inline]
|
|
571
|
+
fn wait_body(
|
|
572
|
+
shared: &crate::shard::Shared,
|
|
573
|
+
waiter: &mut Waiter<crate::Result<Settled>>,
|
|
574
|
+
spins: bool,
|
|
575
|
+
) -> crate::Result<CommitInfo> {
|
|
576
|
+
let window = if spins { shared.commit_spin_nanos } else { 0 };
|
|
577
|
+
if window == 0 {
|
|
578
|
+
// No spin: exactly the parking wait.
|
|
579
|
+
let Settled { info, batch } = wait_reply(shared, waiter)?;
|
|
580
|
+
recycle(batch);
|
|
581
|
+
wait_visible(shared, info.seqno)?;
|
|
582
|
+
return Ok(info);
|
|
583
|
+
}
|
|
584
|
+
let mut spin = SpinWait::new(window);
|
|
585
|
+
let Settled { info, batch } = wait_reply_spinning(shared, waiter, &mut spin)?;
|
|
586
|
+
recycle(batch);
|
|
587
|
+
wait_visible_spinning(shared, info.seqno, &mut spin)?;
|
|
588
|
+
Ok(info)
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
/// A blocking wait's poll before it parks (D198): up to its window, unless this thread's
|
|
592
|
+
/// recent waits kept finding nothing (then the next 1, 2, 4, ... up to 32 waits skip it).
|
|
593
|
+
/// A shard usually answers a buffered commit within a few microseconds, and a parked
|
|
594
|
+
/// thread's wakeup costs that again or more.
|
|
595
|
+
struct SpinWait {
|
|
596
|
+
window: u64,
|
|
597
|
+
end: Option<std::time::Instant>,
|
|
598
|
+
hit: Option<bool>,
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
thread_local! {
|
|
602
|
+
/// `(polls to skip, backoff exponent)` for this thread's commit waits.
|
|
603
|
+
static SPIN_BACKOFF: std::cell::Cell<(u32, u32)> = const { std::cell::Cell::new((0, 0)) };
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
impl SpinWait {
|
|
607
|
+
fn new(window: u64) -> Self {
|
|
608
|
+
let window = if window == 0 {
|
|
609
|
+
0
|
|
610
|
+
} else {
|
|
611
|
+
SPIN_BACKOFF.with(|b| {
|
|
612
|
+
let (skip, level) = b.get();
|
|
613
|
+
if skip > 0 {
|
|
614
|
+
b.set((skip - 1, level));
|
|
615
|
+
0
|
|
616
|
+
} else {
|
|
617
|
+
window
|
|
618
|
+
}
|
|
619
|
+
})
|
|
620
|
+
};
|
|
621
|
+
Self {
|
|
622
|
+
window,
|
|
623
|
+
end: None,
|
|
624
|
+
hit: None,
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
/// Polls `ready` until it is true or the window ends. Returns whether it became true.
|
|
629
|
+
fn poll(&mut self, mut ready: impl FnMut() -> bool) -> bool {
|
|
630
|
+
if self.window == 0 {
|
|
631
|
+
return false;
|
|
632
|
+
}
|
|
633
|
+
let end = *self.end.get_or_insert_with(|| {
|
|
634
|
+
std::time::Instant::now() + std::time::Duration::from_nanos(self.window)
|
|
635
|
+
});
|
|
636
|
+
let mut polls = 0u32;
|
|
637
|
+
loop {
|
|
638
|
+
if ready() {
|
|
639
|
+
self.hit.get_or_insert(true);
|
|
640
|
+
return true;
|
|
641
|
+
}
|
|
642
|
+
polls = polls.wrapping_add(1);
|
|
643
|
+
if polls.is_multiple_of(64) {
|
|
644
|
+
if std::time::Instant::now() >= end {
|
|
645
|
+
self.hit = Some(false);
|
|
646
|
+
self.window = 0;
|
|
647
|
+
return false;
|
|
648
|
+
}
|
|
649
|
+
std::thread::yield_now();
|
|
650
|
+
} else {
|
|
651
|
+
std::hint::spin_loop();
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
impl Drop for SpinWait {
|
|
658
|
+
fn drop(&mut self) {
|
|
659
|
+
let Some(hit) = self.hit else { return };
|
|
660
|
+
SPIN_BACKOFF.with(|b| {
|
|
661
|
+
let (_, level) = b.get();
|
|
662
|
+
b.set(if hit {
|
|
663
|
+
(0, 0)
|
|
664
|
+
} else {
|
|
665
|
+
let level = (level + 1).min(6);
|
|
666
|
+
(1 << (level - 1), level)
|
|
667
|
+
});
|
|
668
|
+
});
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
/// Blocks for a shard's reply, or (on a thread that drives a shard) takes it only if it is
|
|
673
|
+
/// already there.
|
|
674
|
+
pub(crate) fn wait_reply<T: Send>(
|
|
675
|
+
shared: &crate::shard::Shared,
|
|
676
|
+
waiter: &mut Waiter<crate::Result<T>>,
|
|
677
|
+
) -> crate::Result<T> {
|
|
678
|
+
if shared.drivers.current_drives() {
|
|
679
|
+
let mut cx = Context::from_waker(std::task::Waker::noop());
|
|
680
|
+
return match Pin::new(waiter).poll(&mut cx) {
|
|
681
|
+
Poll::Ready(Some(r)) => r,
|
|
682
|
+
Poll::Ready(None) => Err(dropped_reply_now(shared)),
|
|
683
|
+
Poll::Pending => Err(Error::WouldDeadlock),
|
|
684
|
+
};
|
|
685
|
+
}
|
|
686
|
+
park_for_reply(shared, waiter)
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
/// Parks until the shard's reply arrives, counting the wait in `Metrics::commit_parks` if it
|
|
690
|
+
/// parks at all (ICR 0027).
|
|
691
|
+
fn park_for_reply<T: Send>(
|
|
692
|
+
shared: &crate::shard::Shared,
|
|
693
|
+
waiter: &mut Waiter<crate::Result<T>>,
|
|
694
|
+
) -> crate::Result<T> {
|
|
695
|
+
let waker = crate::waker::thread_waker();
|
|
696
|
+
let mut cx = Context::from_waker(&waker);
|
|
697
|
+
let mut parked = false;
|
|
698
|
+
loop {
|
|
699
|
+
match Pin::new(&mut *waiter).poll(&mut cx) {
|
|
700
|
+
Poll::Ready(Some(r)) => return r,
|
|
701
|
+
Poll::Ready(None) => return Err(dropped_reply(shared)),
|
|
702
|
+
Poll::Pending => {
|
|
703
|
+
if !parked {
|
|
704
|
+
parked = true;
|
|
705
|
+
shared.commit_parks.fetch_add(1, Ordering::Relaxed);
|
|
706
|
+
}
|
|
707
|
+
debug_assert!(
|
|
708
|
+
!pigeonhole_io::in_async_poll(),
|
|
709
|
+
"a commit wait parks inside an async poll (a lost wake, #1226)"
|
|
710
|
+
);
|
|
711
|
+
std::thread::park();
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
/// The error for a commit whose shard dropped its reply unanswered: it stopped first. A
|
|
718
|
+
/// shard the close stopped drops only commits it never wrote: `Closed`. A failed shard (a
|
|
719
|
+
/// panic, a dropped driver) may have written the commit's record before it stopped:
|
|
720
|
+
/// `OutcomeUnknown`, which the next open settles (ICR 0038, ICR 0040). Any recorded failure
|
|
721
|
+
/// counts, even another shard's: then a commit dropped unwritten also reads `OutcomeUnknown`,
|
|
722
|
+
/// which is safe (reading it back finds it missing). A panicking shard records its failure as
|
|
723
|
+
/// its thread unwinds, after the frames holding replies in flight dropped them, so this waits
|
|
724
|
+
/// up to 100 ms for that record: the record wakes it, as does the close finishing (#646;
|
|
725
|
+
/// blocking waits only, never on the commit path).
|
|
726
|
+
#[cold]
|
|
727
|
+
fn dropped_reply(shared: &crate::shard::Shared) -> Error {
|
|
728
|
+
let deadline = std::time::Instant::now() + DROPPED_REPLY_WAIT;
|
|
729
|
+
if shared
|
|
730
|
+
.failure
|
|
731
|
+
.wait(deadline, || shared.closed.load(Ordering::Acquire))
|
|
732
|
+
{
|
|
733
|
+
Error::OutcomeUnknown
|
|
734
|
+
} else {
|
|
735
|
+
Error::Closed
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
/// How long [`dropped_reply`] waits for a dropping shard's failure to be recorded.
|
|
740
|
+
const DROPPED_REPLY_WAIT: std::time::Duration = std::time::Duration::from_millis(100);
|
|
741
|
+
|
|
742
|
+
/// As [`dropped_reply`] without waiting (a poll, or a thread that drives a shard): a failure
|
|
743
|
+
/// already recorded makes it `OutcomeUnknown`.
|
|
744
|
+
#[cold]
|
|
745
|
+
fn dropped_reply_now(shared: &crate::shard::Shared) -> Error {
|
|
746
|
+
if shared.failure.get().is_some() {
|
|
747
|
+
Error::OutcomeUnknown
|
|
748
|
+
} else {
|
|
749
|
+
Error::Closed
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
/// [`wait_reply`], polling first for up to `spin`'s window.
|
|
754
|
+
fn wait_reply_spinning<T: Send>(
|
|
755
|
+
shared: &crate::shard::Shared,
|
|
756
|
+
waiter: &mut Waiter<crate::Result<T>>,
|
|
757
|
+
spin: &mut SpinWait,
|
|
758
|
+
) -> crate::Result<T> {
|
|
759
|
+
if shared.drivers.current_drives() {
|
|
760
|
+
let mut cx = Context::from_waker(std::task::Waker::noop());
|
|
761
|
+
return match Pin::new(waiter).poll(&mut cx) {
|
|
762
|
+
Poll::Ready(Some(r)) => r,
|
|
763
|
+
Poll::Ready(None) => Err(dropped_reply_now(shared)),
|
|
764
|
+
Poll::Pending => Err(Error::WouldDeadlock),
|
|
765
|
+
};
|
|
766
|
+
}
|
|
767
|
+
let mut polled = None;
|
|
768
|
+
spin.poll(|| {
|
|
769
|
+
let mut cx = Context::from_waker(std::task::Waker::noop());
|
|
770
|
+
match Pin::new(&mut *waiter).poll(&mut cx) {
|
|
771
|
+
Poll::Pending => false,
|
|
772
|
+
ready => {
|
|
773
|
+
polled = Some(ready);
|
|
774
|
+
true
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
});
|
|
778
|
+
match polled {
|
|
779
|
+
Some(Poll::Ready(Some(r))) => return r,
|
|
780
|
+
Some(Poll::Ready(None)) => return Err(dropped_reply(shared)),
|
|
781
|
+
_ => {}
|
|
782
|
+
}
|
|
783
|
+
park_for_reply(shared, waiter)
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
/// Blocks until `seqno` is visible (D19, D227), parked on the shards' watermark publishes. Fails
|
|
787
|
+
/// instead on a thread that drives a shard, which may be the one holding the watermark, and
|
|
788
|
+
/// with `OutcomeUnknown` once visibility can no longer advance (the close finished, or a
|
|
789
|
+
/// shard died): the commit was acknowledged by its shard, but never became visible here.
|
|
790
|
+
pub(crate) fn wait_visible(
|
|
791
|
+
shared: &crate::shard::Shared,
|
|
792
|
+
seqno: pigeonhole_format::Seqno,
|
|
793
|
+
) -> crate::Result<()> {
|
|
794
|
+
if shared.shm.visible_seqno() >= seqno {
|
|
795
|
+
return Ok(());
|
|
796
|
+
}
|
|
797
|
+
if shared.drivers.current_drives() {
|
|
798
|
+
return Err(Error::WouldDeadlock);
|
|
799
|
+
}
|
|
800
|
+
let waker = crate::waker::thread_waker();
|
|
801
|
+
while !shared.wait_visible(seqno, &waker) {
|
|
802
|
+
if shared.visibility_ended() {
|
|
803
|
+
return Err(Error::OutcomeUnknown);
|
|
804
|
+
}
|
|
805
|
+
debug_assert!(
|
|
806
|
+
!pigeonhole_io::in_async_poll(),
|
|
807
|
+
"a commit wait parks inside an async poll (a lost wake, #1226)"
|
|
808
|
+
);
|
|
809
|
+
std::thread::park();
|
|
810
|
+
}
|
|
811
|
+
Ok(())
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
/// [`wait_visible`], polling first for what is left of `spin`'s window.
|
|
815
|
+
fn wait_visible_spinning(
|
|
816
|
+
shared: &crate::shard::Shared,
|
|
817
|
+
seqno: pigeonhole_format::Seqno,
|
|
818
|
+
spin: &mut SpinWait,
|
|
819
|
+
) -> crate::Result<()> {
|
|
820
|
+
if shared.shm.visible_seqno() >= seqno {
|
|
821
|
+
return Ok(());
|
|
822
|
+
}
|
|
823
|
+
if shared.drivers.current_drives() {
|
|
824
|
+
return Err(Error::WouldDeadlock);
|
|
825
|
+
}
|
|
826
|
+
if spin.poll(|| shared.shm.visible_seqno() >= seqno) {
|
|
827
|
+
return Ok(());
|
|
828
|
+
}
|
|
829
|
+
let waker = crate::waker::thread_waker();
|
|
830
|
+
while !shared.wait_visible(seqno, &waker) {
|
|
831
|
+
if shared.visibility_ended() {
|
|
832
|
+
return Err(Error::OutcomeUnknown);
|
|
833
|
+
}
|
|
834
|
+
debug_assert!(
|
|
835
|
+
!pigeonhole_io::in_async_poll(),
|
|
836
|
+
"a commit wait parks inside an async poll (a lost wake, #1226)"
|
|
837
|
+
);
|
|
838
|
+
std::thread::park();
|
|
839
|
+
}
|
|
840
|
+
Ok(())
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
impl PendingCommit {
|
|
844
|
+
/// An async commit that waits for room on its shard (D210) and runs `submit` once
|
|
845
|
+
/// admitted.
|
|
846
|
+
pub(crate) fn waiting(
|
|
847
|
+
shared: Arc<crate::engine::ShardRef>,
|
|
848
|
+
admit: crate::Admit,
|
|
849
|
+
submit: Box<dyn FnOnce() -> crate::Result<PendingCommit> + Send + Sync>,
|
|
850
|
+
) -> Self {
|
|
851
|
+
let (deferred, waiter) = Deferred::new(admit, submit);
|
|
852
|
+
Self {
|
|
853
|
+
sub: Submission {
|
|
854
|
+
waiter,
|
|
855
|
+
shared,
|
|
856
|
+
spins: false,
|
|
857
|
+
},
|
|
858
|
+
resolved: None,
|
|
859
|
+
deferred: Some(deferred),
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
/// Polls a commit still waiting for room: once admitted, it submits and goes on as the
|
|
864
|
+
/// submitted commit. Out of line: the uncommon state.
|
|
865
|
+
#[cold]
|
|
866
|
+
#[inline(never)]
|
|
867
|
+
fn poll_deferred(&mut self, cx: &mut Context<'_>) -> Poll<crate::Result<CommitInfo>> {
|
|
868
|
+
let Poll::Ready((admit, submitted)) = Deferred::poll_submit(&mut self.deferred, cx) else {
|
|
869
|
+
return Poll::Pending;
|
|
870
|
+
};
|
|
871
|
+
match submitted {
|
|
872
|
+
Ok(pending) => {
|
|
873
|
+
admit.attach(&pending);
|
|
874
|
+
*self = pending;
|
|
875
|
+
Pin::new(self).poll(cx)
|
|
876
|
+
}
|
|
877
|
+
Err(e) => Poll::Ready(Err(e)),
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
impl Future for PendingCommit {
|
|
883
|
+
type Output = crate::Result<CommitInfo>;
|
|
884
|
+
|
|
885
|
+
fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
|
|
886
|
+
let _poll = pigeonhole_io::async_poll_scope();
|
|
887
|
+
let this = &mut *self;
|
|
888
|
+
if this.deferred.is_some() {
|
|
889
|
+
if forked(&this.sub.shared) {
|
|
890
|
+
return Poll::Ready(Err(crate::engine::forked()));
|
|
891
|
+
}
|
|
892
|
+
return this.poll_deferred(cx);
|
|
893
|
+
}
|
|
894
|
+
let info = match this.resolved {
|
|
895
|
+
Some(info) => info,
|
|
896
|
+
None => match Pin::new(&mut this.sub.waiter).poll(cx) {
|
|
897
|
+
Poll::Pending => return pending_or_forked(&this.sub.shared),
|
|
898
|
+
Poll::Ready(None) => return Poll::Ready(Err(dropped_reply_now(&this.sub.shared))),
|
|
899
|
+
Poll::Ready(Some(Err(e))) => return Poll::Ready(Err(e)),
|
|
900
|
+
Poll::Ready(Some(Ok(Settled { info, batch }))) => {
|
|
901
|
+
recycle(batch);
|
|
902
|
+
this.resolved = Some(info);
|
|
903
|
+
info
|
|
904
|
+
}
|
|
905
|
+
},
|
|
906
|
+
};
|
|
907
|
+
// Durable at its level and applied on its shard; another shard may still hold the
|
|
908
|
+
// global watermark below it: a group it has reserved but not applied, a cross-shard
|
|
909
|
+
// decision's seqno until every participant applied (D263), or a group behind a held
|
|
910
|
+
// segment header (D200). The shards wake registered waiters when they publish a
|
|
911
|
+
// watermark, so this never spins.
|
|
912
|
+
if this.sub.shared.wait_visible(info.seqno, cx.waker()) {
|
|
913
|
+
Poll::Ready(Ok(info))
|
|
914
|
+
} else if this.sub.shared.visibility_ended() {
|
|
915
|
+
Poll::Ready(Err(Error::OutcomeUnknown))
|
|
916
|
+
} else {
|
|
917
|
+
pending_or_forked(&this.sub.shared)
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
/// A [`check_and_mutate`](crate::Engine::check_and_mutate) submitted to its shard and not
|
|
923
|
+
/// yet resolved ([`Engine::submit_check_and_mutate`](crate::Engine::submit_check_and_mutate)):
|
|
924
|
+
/// resolves to whether the batch applied, and its commit when it did, once that commit is
|
|
925
|
+
/// durable at its level and visible. Dropping it does not roll back.
|
|
926
|
+
#[derive(Debug)]
|
|
927
|
+
#[must_use = "dropping a pending check does not cancel it, but its result is lost"]
|
|
928
|
+
pub struct PendingCheck {
|
|
929
|
+
pub(crate) waiter: Waiter<crate::Result<(bool, Option<CommitInfo>)>>,
|
|
930
|
+
pub(crate) shared: Arc<crate::engine::ShardRef>,
|
|
931
|
+
/// Resolved by the shard; waiting for visibility (async polling).
|
|
932
|
+
pub(crate) resolved: Option<(bool, Option<CommitInfo>)>,
|
|
933
|
+
/// As [`PendingCommit`]'s: still waiting for room (D210).
|
|
934
|
+
pub(crate) deferred: Option<Box<Deferred<PendingCheck, CheckReply>>>,
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
impl PendingCheck {
|
|
938
|
+
/// Blocks until the check resolved and an applied commit is visible, as
|
|
939
|
+
/// [`PendingCommit::wait`] does (including its refusal on a thread that drives a shard).
|
|
940
|
+
pub fn wait(mut self) -> crate::Result<(bool, Option<CommitInfo>)> {
|
|
941
|
+
if forked(&self.shared) {
|
|
942
|
+
return Err(crate::engine::forked());
|
|
943
|
+
}
|
|
944
|
+
if self.deferred.is_some() {
|
|
945
|
+
let (admit, submitted) = Deferred::submit_blocking(&mut self.deferred);
|
|
946
|
+
self = submitted?;
|
|
947
|
+
admit.attach_check(&self);
|
|
948
|
+
}
|
|
949
|
+
let (applied, info) = wait_reply(&self.shared, &mut self.waiter)?;
|
|
950
|
+
if let Some(info) = info {
|
|
951
|
+
wait_visible(&self.shared, info.seqno)?;
|
|
952
|
+
}
|
|
953
|
+
Ok((applied, info))
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
impl PendingCheck {
|
|
958
|
+
/// [`PendingCommit::waiting`] for a conditional commit.
|
|
959
|
+
pub(crate) fn waiting(
|
|
960
|
+
shared: Arc<crate::engine::ShardRef>,
|
|
961
|
+
admit: crate::Admit,
|
|
962
|
+
submit: Box<dyn FnOnce() -> crate::Result<PendingCheck> + Send + Sync>,
|
|
963
|
+
) -> Self {
|
|
964
|
+
let (deferred, waiter) = Deferred::new(admit, submit);
|
|
965
|
+
Self {
|
|
966
|
+
waiter,
|
|
967
|
+
shared,
|
|
968
|
+
resolved: None,
|
|
969
|
+
deferred: Some(deferred),
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
/// [`PendingCommit::poll_deferred`] for a conditional commit.
|
|
974
|
+
#[cold]
|
|
975
|
+
#[inline(never)]
|
|
976
|
+
fn poll_deferred(
|
|
977
|
+
&mut self,
|
|
978
|
+
cx: &mut Context<'_>,
|
|
979
|
+
) -> Poll<crate::Result<(bool, Option<CommitInfo>)>> {
|
|
980
|
+
let Poll::Ready((admit, submitted)) = Deferred::poll_submit(&mut self.deferred, cx) else {
|
|
981
|
+
return Poll::Pending;
|
|
982
|
+
};
|
|
983
|
+
match submitted {
|
|
984
|
+
Ok(pending) => {
|
|
985
|
+
admit.attach_check(&pending);
|
|
986
|
+
*self = pending;
|
|
987
|
+
Pin::new(self).poll(cx)
|
|
988
|
+
}
|
|
989
|
+
Err(e) => Poll::Ready(Err(e)),
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
impl Future for PendingCheck {
|
|
995
|
+
type Output = crate::Result<(bool, Option<CommitInfo>)>;
|
|
996
|
+
|
|
997
|
+
fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
|
|
998
|
+
let _poll = pigeonhole_io::async_poll_scope();
|
|
999
|
+
let this = &mut *self;
|
|
1000
|
+
if this.deferred.is_some() {
|
|
1001
|
+
if forked(&this.shared) {
|
|
1002
|
+
return Poll::Ready(Err(crate::engine::forked()));
|
|
1003
|
+
}
|
|
1004
|
+
return this.poll_deferred(cx);
|
|
1005
|
+
}
|
|
1006
|
+
let outcome = match this.resolved {
|
|
1007
|
+
Some(outcome) => outcome,
|
|
1008
|
+
None => match Pin::new(&mut this.waiter).poll(cx) {
|
|
1009
|
+
Poll::Pending => return pending_or_forked(&this.shared),
|
|
1010
|
+
Poll::Ready(None) => return Poll::Ready(Err(dropped_reply_now(&this.shared))),
|
|
1011
|
+
Poll::Ready(Some(Err(e))) => return Poll::Ready(Err(e)),
|
|
1012
|
+
Poll::Ready(Some(Ok(outcome))) => {
|
|
1013
|
+
this.resolved = Some(outcome);
|
|
1014
|
+
outcome
|
|
1015
|
+
}
|
|
1016
|
+
},
|
|
1017
|
+
};
|
|
1018
|
+
// As a commit: an applied batch is visible once the global watermark covers it (D19).
|
|
1019
|
+
let Some(info) = outcome.1 else {
|
|
1020
|
+
return Poll::Ready(Ok(outcome));
|
|
1021
|
+
};
|
|
1022
|
+
if this.shared.wait_visible(info.seqno, cx.waker()) {
|
|
1023
|
+
Poll::Ready(Ok(outcome))
|
|
1024
|
+
} else if this.shared.visibility_ended() {
|
|
1025
|
+
Poll::Ready(Err(Error::OutcomeUnknown))
|
|
1026
|
+
} else {
|
|
1027
|
+
pending_or_forked(&this.shared)
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
/// One read a transaction recorded; validated at commit (D275). `qualifier` names the one
|
|
1033
|
+
/// cell a `get` read: only a later write that could change that cell (a write of its column,
|
|
1034
|
+
/// or a delete of its family or row) conflicts with it. `None` is a read of the whole
|
|
1035
|
+
/// `(row, family)` (`get_row`): any later write to it conflicts.
|
|
1036
|
+
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
|
1037
|
+
pub(crate) struct ReadKey {
|
|
1038
|
+
pub table: TableId,
|
|
1039
|
+
pub row: Vec<u8>,
|
|
1040
|
+
pub family: FamilyId,
|
|
1041
|
+
pub qualifier: Option<Vec<u8>>,
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
impl ReadKey {
|
|
1045
|
+
/// Whether this read covers `other`: the same, or the whole family `other` reads a cell of.
|
|
1046
|
+
fn covers(&self, other: &ReadKey) -> bool {
|
|
1047
|
+
self.table == other.table
|
|
1048
|
+
&& self.family == other.family
|
|
1049
|
+
&& self.row == other.row
|
|
1050
|
+
&& (self.qualifier.is_none() || self.qualifier == other.qualifier)
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
|
|
1054
|
+
/// Records `key`, unless it repeats the previous read (a cheap check; the rest of the
|
|
1055
|
+
/// duplicates go at commit, `Validate::new`).
|
|
1056
|
+
fn record_read(reads: &mut Vec<ReadKey>, key: ReadKey) {
|
|
1057
|
+
if reads.last() != Some(&key) {
|
|
1058
|
+
reads.push(key);
|
|
1059
|
+
}
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
/// A transaction's validation data, carried by its commit: the snapshot's seqno and the
|
|
1063
|
+
/// recorded reads, plus the snapshot's seqno pin. The pin keeps the seqno in `LiveSeqnos`,
|
|
1064
|
+
/// so compaction's GC (`gc_snapshots`) cannot purge a write above it (a delete and the value
|
|
1065
|
+
/// it hides) before validation looks for it (#672). The commit owns it until the commit
|
|
1066
|
+
/// resolves, fails or is dropped, retries included. Only the seqno pin: the snapshot's view
|
|
1067
|
+
/// would also hold every shard's memtables and extents, and an async commit waiting for
|
|
1068
|
+
/// arena room could then wait on room its own pin holds. Shared: a cross-shard commit's
|
|
1069
|
+
/// participants and its retries all validate the one copy (D275); commits without one move a
|
|
1070
|
+
/// pointer-sized `None`.
|
|
1071
|
+
#[derive(Debug, Clone)]
|
|
1072
|
+
pub(crate) struct Validate {
|
|
1073
|
+
pub seqno: pigeonhole_format::Seqno,
|
|
1074
|
+
pub reads: Vec<ReadKey>,
|
|
1075
|
+
/// Never read: held so the seqno stays in `LiveSeqnos`. `None` only for a snapshot that
|
|
1076
|
+
/// pins no seqno (a reader process's, which has no transactions).
|
|
1077
|
+
pub _pin: Option<Arc<crate::snapshot::SeqnoPin>>,
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
impl Validate {
|
|
1081
|
+
/// Takes the snapshot's seqno pin and drops the rest of it (its view). The reads are
|
|
1082
|
+
/// sorted and deduplicated: a family read sorts before the cell reads of its family
|
|
1083
|
+
/// (`None` first) and drops them, since it covers them.
|
|
1084
|
+
pub(crate) fn new(snapshot: Snapshot, mut reads: Vec<ReadKey>) -> Arc<Self> {
|
|
1085
|
+
reads.sort_unstable();
|
|
1086
|
+
reads.dedup_by(|later, kept| kept.covers(later));
|
|
1087
|
+
Arc::new(Self {
|
|
1088
|
+
seqno: snapshot.seqno,
|
|
1089
|
+
reads,
|
|
1090
|
+
_pin: snapshot._pin.clone(),
|
|
1091
|
+
})
|
|
1092
|
+
}
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
/// An optimistic multi-row transaction (Phase 4). Reads record the cells (`get`) or the
|
|
1096
|
+
/// `(row, family)` ranges (`get_row`) they touch (D275); at commit, each participant shard checks its tablets for conflicting commits
|
|
1097
|
+
/// since the snapshot during PREPARE, and any conflict aborts with `Error::Conflict`.
|
|
1098
|
+
#[derive(Debug)]
|
|
1099
|
+
pub struct Txn {
|
|
1100
|
+
pub(crate) engine: Arc<Inner>,
|
|
1101
|
+
pub(crate) snapshot: Snapshot,
|
|
1102
|
+
pub(crate) reads: Vec<ReadKey>,
|
|
1103
|
+
pub(crate) batch: WriteBatch,
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
impl Txn {
|
|
1107
|
+
/// The transaction's snapshot seqno.
|
|
1108
|
+
pub fn snapshot(&self) -> &crate::Snapshot {
|
|
1109
|
+
&self.snapshot
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
/// Reads a cell and records the read.
|
|
1113
|
+
pub fn get(
|
|
1114
|
+
&mut self,
|
|
1115
|
+
table: TableId,
|
|
1116
|
+
family: FamilyId,
|
|
1117
|
+
row: &[u8],
|
|
1118
|
+
qualifier: &[u8],
|
|
1119
|
+
) -> crate::Result<Option<CellData>> {
|
|
1120
|
+
record_read(
|
|
1121
|
+
&mut self.reads,
|
|
1122
|
+
ReadKey {
|
|
1123
|
+
table,
|
|
1124
|
+
row: row.to_vec(),
|
|
1125
|
+
family,
|
|
1126
|
+
qualifier: Some(qualifier.to_vec()),
|
|
1127
|
+
},
|
|
1128
|
+
);
|
|
1129
|
+
// A read at the snapshot alone, never overlaid with this transaction's own writes:
|
|
1130
|
+
// a counter's result may be kept as a checkpoint (D291), which must hold committed
|
|
1131
|
+
// operands only. A read-your-writes overlay must not checkpoint.
|
|
1132
|
+
self.engine
|
|
1133
|
+
.get(&self.snapshot, table, family, row, qualifier)
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
/// Reads one row of `table` at the transaction's snapshot into `sink`, projected by
|
|
1137
|
+
/// `spec`, and records a read of every family it covers: `families`, or every family of
|
|
1138
|
+
/// the table at the snapshot when empty (ICR 0062). Returns whether the row has a visible
|
|
1139
|
+
/// cell. A family the row has no cell in still counts as read: a commit adding one
|
|
1140
|
+
/// conflicts.
|
|
1141
|
+
pub fn read_row_into(
|
|
1142
|
+
&mut self,
|
|
1143
|
+
table: TableId,
|
|
1144
|
+
row: &[u8],
|
|
1145
|
+
families: &[FamilyId],
|
|
1146
|
+
spec: &crate::ReadSpec,
|
|
1147
|
+
sink: &mut impl crate::RowSink,
|
|
1148
|
+
) -> crate::Result<bool> {
|
|
1149
|
+
self.snapshot.check_process()?;
|
|
1150
|
+
let families = crate::engine::families_in_order(&self.snapshot.view, table, families)?;
|
|
1151
|
+
for &family in &families {
|
|
1152
|
+
record_read(
|
|
1153
|
+
&mut self.reads,
|
|
1154
|
+
ReadKey {
|
|
1155
|
+
table,
|
|
1156
|
+
row: row.to_vec(),
|
|
1157
|
+
family,
|
|
1158
|
+
qualifier: None,
|
|
1159
|
+
},
|
|
1160
|
+
);
|
|
1161
|
+
}
|
|
1162
|
+
let now = self.engine.shared.vfs.now_micros();
|
|
1163
|
+
self.snapshot.checked(crate::read::read_row_into(
|
|
1164
|
+
&self.snapshot.view,
|
|
1165
|
+
self.snapshot.seqno,
|
|
1166
|
+
table,
|
|
1167
|
+
row,
|
|
1168
|
+
&families,
|
|
1169
|
+
spec,
|
|
1170
|
+
now,
|
|
1171
|
+
false,
|
|
1172
|
+
sink,
|
|
1173
|
+
))
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
/// [`get`](Txn::get) as a future: records the read at the call, then reads at the
|
|
1177
|
+
/// transaction's snapshot as [`Engine::get_async`](crate::Engine::get_async) does. A
|
|
1178
|
+
/// read recorded and then dropped unpolled still counts at validation (conservative).
|
|
1179
|
+
pub fn get_async(
|
|
1180
|
+
&mut self,
|
|
1181
|
+
table: TableId,
|
|
1182
|
+
family: FamilyId,
|
|
1183
|
+
row: &[u8],
|
|
1184
|
+
qualifier: &[u8],
|
|
1185
|
+
) -> crate::GetFuture {
|
|
1186
|
+
record_read(
|
|
1187
|
+
&mut self.reads,
|
|
1188
|
+
ReadKey {
|
|
1189
|
+
table,
|
|
1190
|
+
row: row.to_vec(),
|
|
1191
|
+
family,
|
|
1192
|
+
qualifier: Some(qualifier.to_vec()),
|
|
1193
|
+
},
|
|
1194
|
+
);
|
|
1195
|
+
crate::GetFuture::new(
|
|
1196
|
+
&self.engine,
|
|
1197
|
+
Some(self.snapshot.clone()),
|
|
1198
|
+
table,
|
|
1199
|
+
family,
|
|
1200
|
+
row,
|
|
1201
|
+
qualifier,
|
|
1202
|
+
)
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1205
|
+
/// The buffered writes.
|
|
1206
|
+
pub fn batch(&mut self) -> &mut WriteBatch {
|
|
1207
|
+
&mut self.batch
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1210
|
+
/// The commit of a transaction that writes nothing (#694, ICR 0060): it needs no
|
|
1211
|
+
/// validation and no shard round. Its reads all come from one consistent snapshot, so it
|
|
1212
|
+
/// is serializable at that snapshot whatever committed since, and it never conflicts. It
|
|
1213
|
+
/// writes nothing, so the commit names the snapshot's seqno and `Durability::None`: what
|
|
1214
|
+
/// it read is visible, not necessarily durable, as for any snapshot (D227).
|
|
1215
|
+
fn write_free(&self) -> Option<CommitInfo> {
|
|
1216
|
+
self.batch.is_empty().then(|| CommitInfo {
|
|
1217
|
+
seqno: self.snapshot.seqno(),
|
|
1218
|
+
durability: Durability::None,
|
|
1219
|
+
})
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1222
|
+
/// A [`Submission`] already resolved with `info` (a write-free commit).
|
|
1223
|
+
fn resolved(engine: &Inner, info: CommitInfo) -> crate::Result<Submission> {
|
|
1224
|
+
engine.check_open()?;
|
|
1225
|
+
let (reply, waiter) = completion();
|
|
1226
|
+
reply.notify(Ok(Settled::from(info)));
|
|
1227
|
+
Ok(Submission {
|
|
1228
|
+
waiter,
|
|
1229
|
+
shared: engine.shard_ref(pigeonhole_runtime::ShardId(0)),
|
|
1230
|
+
spins: false,
|
|
1231
|
+
})
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
/// [`submit`](Self::submit) for an async commit (D210), as
|
|
1235
|
+
/// [`Engine::submit_async`](crate::Engine::submit_async): when it has to wait for room,
|
|
1236
|
+
/// the pending commit submits the transaction once admitted.
|
|
1237
|
+
pub fn submit_async(self, durability: Option<Durability>) -> crate::Result<PendingCommit> {
|
|
1238
|
+
if self.write_free().is_some() {
|
|
1239
|
+
return self.submission(durability).map(PendingCommit::from);
|
|
1240
|
+
}
|
|
1241
|
+
let mut charge = match self.engine.fast_admit(None, &self.batch) {
|
|
1242
|
+
crate::engine::FastAdmit::Wait(admit) => {
|
|
1243
|
+
let shared = self
|
|
1244
|
+
.engine
|
|
1245
|
+
.shard_ref(pigeonhole_runtime::ShardId(admit.shard() as u16));
|
|
1246
|
+
// Wait with the seqno pin only (#672): the snapshot's view would hold every
|
|
1247
|
+
// shard's memtables, the room this commit waits for among them.
|
|
1248
|
+
let Txn {
|
|
1249
|
+
engine,
|
|
1250
|
+
snapshot,
|
|
1251
|
+
reads,
|
|
1252
|
+
batch,
|
|
1253
|
+
} = self;
|
|
1254
|
+
let validate = Validate::new(snapshot, reads);
|
|
1255
|
+
return Ok(PendingCommit::waiting(
|
|
1256
|
+
shared,
|
|
1257
|
+
admit,
|
|
1258
|
+
Box::new(move || {
|
|
1259
|
+
engine
|
|
1260
|
+
.submit(batch, durability, Some(validate), None)
|
|
1261
|
+
.map(PendingCommit::from)
|
|
1262
|
+
}),
|
|
1263
|
+
));
|
|
1264
|
+
}
|
|
1265
|
+
crate::engine::FastAdmit::Charged(charge) => charge,
|
|
1266
|
+
};
|
|
1267
|
+
let pending = PendingCommit::from(self.submission(durability)?);
|
|
1268
|
+
charge.attach(&pending.sub.waiter);
|
|
1269
|
+
Ok(pending)
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
/// Submits the transaction for validation and commit without waiting: the
|
|
1273
|
+
/// [`PendingCommit`] resolves as [`Txn::commit`] returns (an async caller polls it). It
|
|
1274
|
+
/// never blocks, so a thread that drives a shard may call it (D88).
|
|
1275
|
+
pub fn submit(self, durability: Option<Durability>) -> crate::Result<PendingCommit> {
|
|
1276
|
+
self.submission(durability).map(PendingCommit::from)
|
|
1277
|
+
}
|
|
1278
|
+
|
|
1279
|
+
/// [`submit`](Self::submit), as the engine's own [`Submission`].
|
|
1280
|
+
pub(crate) fn submission(self, durability: Option<Durability>) -> crate::Result<Submission> {
|
|
1281
|
+
if let Some(info) = self.write_free() {
|
|
1282
|
+
return Self::resolved(&self.engine, info);
|
|
1283
|
+
}
|
|
1284
|
+
let Txn {
|
|
1285
|
+
engine,
|
|
1286
|
+
snapshot,
|
|
1287
|
+
reads,
|
|
1288
|
+
batch,
|
|
1289
|
+
} = self;
|
|
1290
|
+
engine.submit(
|
|
1291
|
+
batch,
|
|
1292
|
+
durability,
|
|
1293
|
+
Some(Validate::new(snapshot, reads)),
|
|
1294
|
+
None,
|
|
1295
|
+
)
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
/// Validates and commits. A transaction that wrote nothing commits at once, at its
|
|
1299
|
+
/// snapshot, and never conflicts (see `write_free`).
|
|
1300
|
+
pub fn commit(self, durability: Option<Durability>) -> crate::Result<CommitInfo> {
|
|
1301
|
+
if let Some(info) = self.write_free() {
|
|
1302
|
+
self.engine.check_open()?;
|
|
1303
|
+
return Ok(info);
|
|
1304
|
+
}
|
|
1305
|
+
let Txn {
|
|
1306
|
+
engine,
|
|
1307
|
+
snapshot,
|
|
1308
|
+
reads,
|
|
1309
|
+
batch,
|
|
1310
|
+
} = self;
|
|
1311
|
+
engine.shared.refuse_blocking_on_driver("Txn::commit")?;
|
|
1312
|
+
engine
|
|
1313
|
+
.submit(
|
|
1314
|
+
batch,
|
|
1315
|
+
durability,
|
|
1316
|
+
Some(Validate::new(snapshot, reads)),
|
|
1317
|
+
None,
|
|
1318
|
+
)?
|
|
1319
|
+
.wait()
|
|
1320
|
+
}
|
|
1321
|
+
}
|