rbs 4.1.0.pre.2-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +24 -0
  5. data/.github/workflows/bundle-update.yml +63 -0
  6. data/.github/workflows/c-check.yml +61 -0
  7. data/.github/workflows/comments.yml +37 -0
  8. data/.github/workflows/dependabot.yml +30 -0
  9. data/.github/workflows/jruby.yml +67 -0
  10. data/.github/workflows/milestone.yml +83 -0
  11. data/.github/workflows/ruby.yml +158 -0
  12. data/.github/workflows/rust.yml +184 -0
  13. data/.github/workflows/truffleruby.yml +54 -0
  14. data/.github/workflows/typecheck.yml +39 -0
  15. data/.github/workflows/wasm.yml +53 -0
  16. data/.github/workflows/windows.yml +49 -0
  17. data/.gitignore +38 -0
  18. data/.rubocop.yml +72 -0
  19. data/BSDL +22 -0
  20. data/CHANGELOG.md +2292 -0
  21. data/COPYING +56 -0
  22. data/README.md +240 -0
  23. data/Rakefile +869 -0
  24. data/Steepfile +53 -0
  25. data/config.yml +913 -0
  26. data/core/array.rbs +4142 -0
  27. data/core/basic_object.rbs +376 -0
  28. data/core/binding.rbs +148 -0
  29. data/core/builtin.rbs +278 -0
  30. data/core/class.rbs +223 -0
  31. data/core/comparable.rbs +192 -0
  32. data/core/complex.rbs +812 -0
  33. data/core/constants.rbs +96 -0
  34. data/core/data.rbs +415 -0
  35. data/core/dir.rbs +993 -0
  36. data/core/encoding.rbs +1368 -0
  37. data/core/enumerable.rbs +2506 -0
  38. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  39. data/core/enumerator/product.rbs +92 -0
  40. data/core/enumerator.rbs +705 -0
  41. data/core/env.rbs +6 -0
  42. data/core/errno.rbs +682 -0
  43. data/core/errors.rbs +789 -0
  44. data/core/exception.rbs +485 -0
  45. data/core/false_class.rbs +82 -0
  46. data/core/fiber.rbs +570 -0
  47. data/core/fiber_error.rbs +11 -0
  48. data/core/file.rbs +2045 -0
  49. data/core/file_constants.rbs +463 -0
  50. data/core/file_stat.rbs +534 -0
  51. data/core/file_test.rbs +331 -0
  52. data/core/float.rbs +1316 -0
  53. data/core/gc.rbs +788 -0
  54. data/core/global_variables.rbs +184 -0
  55. data/core/hash.rbs +2183 -0
  56. data/core/integer.rbs +1374 -0
  57. data/core/io/buffer.rbs +995 -0
  58. data/core/io/wait.rbs +48 -0
  59. data/core/io.rbs +3472 -0
  60. data/core/kernel.rbs +3172 -0
  61. data/core/marshal.rbs +207 -0
  62. data/core/match_data.rbs +637 -0
  63. data/core/math.rbs +770 -0
  64. data/core/method.rbs +422 -0
  65. data/core/module.rbs +1856 -0
  66. data/core/nil_class.rbs +210 -0
  67. data/core/numeric.rbs +832 -0
  68. data/core/object.rbs +108 -0
  69. data/core/object_space/weak_key_map.rbs +166 -0
  70. data/core/object_space.rbs +197 -0
  71. data/core/pathname.rbs +1322 -0
  72. data/core/proc.rbs +905 -0
  73. data/core/process.rbs +2316 -0
  74. data/core/ractor.rbs +924 -0
  75. data/core/random.rbs +255 -0
  76. data/core/range.rbs +1209 -0
  77. data/core/rational.rbs +502 -0
  78. data/core/rb_config.rbs +88 -0
  79. data/core/rbs/ops.rbs +154 -0
  80. data/core/rbs/unnamed/argf.rbs +1236 -0
  81. data/core/rbs/unnamed/env_class.rbs +1214 -0
  82. data/core/rbs/unnamed/main_class.rbs +123 -0
  83. data/core/rbs/unnamed/random.rbs +186 -0
  84. data/core/refinement.rbs +59 -0
  85. data/core/regexp.rbs +1974 -0
  86. data/core/ruby.rbs +53 -0
  87. data/core/ruby_vm.rbs +809 -0
  88. data/core/rubygems/basic_specification.rbs +6 -0
  89. data/core/rubygems/config_file.rbs +38 -0
  90. data/core/rubygems/dependency_installer.rbs +6 -0
  91. data/core/rubygems/errors.rbs +109 -0
  92. data/core/rubygems/installer.rbs +15 -0
  93. data/core/rubygems/path_support.rbs +6 -0
  94. data/core/rubygems/platform.rbs +7 -0
  95. data/core/rubygems/request_set.rbs +49 -0
  96. data/core/rubygems/requirement.rbs +148 -0
  97. data/core/rubygems/rubygems.rbs +1105 -0
  98. data/core/rubygems/source_list.rbs +15 -0
  99. data/core/rubygems/specification.rbs +23 -0
  100. data/core/rubygems/stream_ui.rbs +5 -0
  101. data/core/rubygems/uninstaller.rbs +10 -0
  102. data/core/rubygems/version.rbs +293 -0
  103. data/core/set.rbs +751 -0
  104. data/core/signal.rbs +110 -0
  105. data/core/string.rbs +5532 -0
  106. data/core/struct.rbs +668 -0
  107. data/core/symbol.rbs +482 -0
  108. data/core/thread.rbs +1826 -0
  109. data/core/thread_group.rbs +79 -0
  110. data/core/time.rbs +1793 -0
  111. data/core/trace_point.rbs +483 -0
  112. data/core/true_class.rbs +98 -0
  113. data/core/unbound_method.rbs +337 -0
  114. data/core/warning.rbs +87 -0
  115. data/docs/CONTRIBUTING.md +107 -0
  116. data/docs/aliases.md +79 -0
  117. data/docs/architecture.md +110 -0
  118. data/docs/collection.md +192 -0
  119. data/docs/config.md +171 -0
  120. data/docs/data_and_struct.md +86 -0
  121. data/docs/encoding.md +56 -0
  122. data/docs/gem.md +56 -0
  123. data/docs/inline.md +634 -0
  124. data/docs/rbs_by_example.md +309 -0
  125. data/docs/repo.md +125 -0
  126. data/docs/rust.md +96 -0
  127. data/docs/sigs.md +167 -0
  128. data/docs/stdlib.md +147 -0
  129. data/docs/syntax.md +940 -0
  130. data/docs/tools.md +17 -0
  131. data/docs/type_fingerprint.md +21 -0
  132. data/docs/wasm_serialization.md +80 -0
  133. data/exe/rbs +7 -0
  134. data/ext/rbs_extension/ast_translation.c +1855 -0
  135. data/ext/rbs_extension/ast_translation.h +41 -0
  136. data/ext/rbs_extension/class_constants.c +187 -0
  137. data/ext/rbs_extension/class_constants.h +104 -0
  138. data/ext/rbs_extension/compat.h +10 -0
  139. data/ext/rbs_extension/extconf.rb +40 -0
  140. data/ext/rbs_extension/legacy_location.c +294 -0
  141. data/ext/rbs_extension/legacy_location.h +82 -0
  142. data/ext/rbs_extension/main.c +613 -0
  143. data/ext/rbs_extension/rbs_extension.h +16 -0
  144. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  145. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  146. data/goodcheck.yml +91 -0
  147. data/include/rbs/ast.h +1047 -0
  148. data/include/rbs/defines.h +99 -0
  149. data/include/rbs/lexer.h +207 -0
  150. data/include/rbs/location.h +40 -0
  151. data/include/rbs/parser.h +153 -0
  152. data/include/rbs/serialize.h +39 -0
  153. data/include/rbs/string.h +47 -0
  154. data/include/rbs/util/rbs_allocator.h +59 -0
  155. data/include/rbs/util/rbs_assert.h +20 -0
  156. data/include/rbs/util/rbs_buffer.h +83 -0
  157. data/include/rbs/util/rbs_constant_pool.h +155 -0
  158. data/include/rbs/util/rbs_encoding.h +282 -0
  159. data/include/rbs/util/rbs_unescape.h +24 -0
  160. data/include/rbs.h +14 -0
  161. data/lib/rbs/ancestor_graph.rb +92 -0
  162. data/lib/rbs/annotate/annotations.rb +199 -0
  163. data/lib/rbs/annotate/formatter.rb +82 -0
  164. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  165. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  166. data/lib/rbs/annotate.rb +8 -0
  167. data/lib/rbs/ast/annotation.rb +29 -0
  168. data/lib/rbs/ast/comment.rb +29 -0
  169. data/lib/rbs/ast/declarations.rb +472 -0
  170. data/lib/rbs/ast/directives.rb +49 -0
  171. data/lib/rbs/ast/members.rb +451 -0
  172. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  173. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  174. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  175. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  176. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  177. data/lib/rbs/ast/ruby/members.rb +762 -0
  178. data/lib/rbs/ast/type_param.rb +235 -0
  179. data/lib/rbs/ast/visitor.rb +137 -0
  180. data/lib/rbs/buffer.rb +189 -0
  181. data/lib/rbs/builtin_names.rb +58 -0
  182. data/lib/rbs/cli/colored_io.rb +48 -0
  183. data/lib/rbs/cli/diff.rb +84 -0
  184. data/lib/rbs/cli/validate.rb +294 -0
  185. data/lib/rbs/cli.rb +1253 -0
  186. data/lib/rbs/collection/cleaner.rb +38 -0
  187. data/lib/rbs/collection/config/lockfile.rb +92 -0
  188. data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  189. data/lib/rbs/collection/config.rb +81 -0
  190. data/lib/rbs/collection/installer.rb +32 -0
  191. data/lib/rbs/collection/sources/base.rb +14 -0
  192. data/lib/rbs/collection/sources/git.rb +265 -0
  193. data/lib/rbs/collection/sources/local.rb +81 -0
  194. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  195. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  196. data/lib/rbs/collection/sources.rb +38 -0
  197. data/lib/rbs/collection.rb +16 -0
  198. data/lib/rbs/constant.rb +28 -0
  199. data/lib/rbs/definition.rb +415 -0
  200. data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
  201. data/lib/rbs/definition_builder/method_builder.rb +295 -0
  202. data/lib/rbs/definition_builder.rb +1054 -0
  203. data/lib/rbs/diff.rb +131 -0
  204. data/lib/rbs/environment/class_entry.rb +69 -0
  205. data/lib/rbs/environment/module_entry.rb +66 -0
  206. data/lib/rbs/environment/use_map.rb +77 -0
  207. data/lib/rbs/environment.rb +1028 -0
  208. data/lib/rbs/environment_loader.rb +167 -0
  209. data/lib/rbs/environment_walker.rb +155 -0
  210. data/lib/rbs/errors.rb +634 -0
  211. data/lib/rbs/factory.rb +18 -0
  212. data/lib/rbs/file_finder.rb +28 -0
  213. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  214. data/lib/rbs/inline_parser.rb +568 -0
  215. data/lib/rbs/location_aux.rb +170 -0
  216. data/lib/rbs/locator.rb +247 -0
  217. data/lib/rbs/method_type.rb +145 -0
  218. data/lib/rbs/namespace.rb +154 -0
  219. data/lib/rbs/parser/lex_result.rb +15 -0
  220. data/lib/rbs/parser/token.rb +23 -0
  221. data/lib/rbs/parser_aux.rb +142 -0
  222. data/lib/rbs/prototype/helpers.rb +197 -0
  223. data/lib/rbs/prototype/node_usage.rb +99 -0
  224. data/lib/rbs/prototype/rb.rb +816 -0
  225. data/lib/rbs/prototype/rbi.rb +625 -0
  226. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  227. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  228. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  229. data/lib/rbs/prototype/runtime.rb +680 -0
  230. data/lib/rbs/repository.rb +127 -0
  231. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  232. data/lib/rbs/resolver/type_name_resolver.rb +167 -0
  233. data/lib/rbs/rewriter.rb +70 -0
  234. data/lib/rbs/sorter.rb +198 -0
  235. data/lib/rbs/source.rb +99 -0
  236. data/lib/rbs/substitution.rb +83 -0
  237. data/lib/rbs/subtractor.rb +204 -0
  238. data/lib/rbs/test/errors.rb +80 -0
  239. data/lib/rbs/test/guaranteed.rb +30 -0
  240. data/lib/rbs/test/hook.rb +212 -0
  241. data/lib/rbs/test/observer.rb +19 -0
  242. data/lib/rbs/test/setup.rb +84 -0
  243. data/lib/rbs/test/setup_helper.rb +50 -0
  244. data/lib/rbs/test/tester.rb +167 -0
  245. data/lib/rbs/test/type_check.rb +457 -0
  246. data/lib/rbs/test.rb +112 -0
  247. data/lib/rbs/type_alias_dependency.rb +100 -0
  248. data/lib/rbs/type_alias_regularity.rb +126 -0
  249. data/lib/rbs/type_name.rb +122 -0
  250. data/lib/rbs/types.rb +1604 -0
  251. data/lib/rbs/unit_test/convertibles.rb +177 -0
  252. data/lib/rbs/unit_test/spy.rb +138 -0
  253. data/lib/rbs/unit_test/type_assertions.rb +383 -0
  254. data/lib/rbs/unit_test/with_aliases.rb +145 -0
  255. data/lib/rbs/unit_test.rb +6 -0
  256. data/lib/rbs/validator.rb +186 -0
  257. data/lib/rbs/variance_calculator.rb +189 -0
  258. data/lib/rbs/vendorer.rb +71 -0
  259. data/lib/rbs/version.rb +5 -0
  260. data/lib/rbs/wasm/deserializer.rb +213 -0
  261. data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
  262. data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
  263. data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
  264. data/lib/rbs/wasm/jars/asm-util.jar +0 -0
  265. data/lib/rbs/wasm/jars/asm.jar +0 -0
  266. data/lib/rbs/wasm/jars/compiler.jar +0 -0
  267. data/lib/rbs/wasm/jars/log.jar +0 -0
  268. data/lib/rbs/wasm/jars/runtime.jar +0 -0
  269. data/lib/rbs/wasm/jars/wasi.jar +0 -0
  270. data/lib/rbs/wasm/jars/wasm.jar +0 -0
  271. data/lib/rbs/wasm/location.rb +61 -0
  272. data/lib/rbs/wasm/parser.rb +137 -0
  273. data/lib/rbs/wasm/rbs_parser.wasm +0 -0
  274. data/lib/rbs/wasm/runtime.rb +217 -0
  275. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  276. data/lib/rbs/writer.rb +424 -0
  277. data/lib/rbs.rb +117 -0
  278. data/lib/rdoc/discover.rb +20 -0
  279. data/lib/rdoc_plugin/parser.rb +163 -0
  280. data/rbs.gemspec +68 -0
  281. data/schema/annotation.json +14 -0
  282. data/schema/comment.json +26 -0
  283. data/schema/decls.json +326 -0
  284. data/schema/function.json +87 -0
  285. data/schema/location.json +56 -0
  286. data/schema/members.json +266 -0
  287. data/schema/methodType.json +50 -0
  288. data/schema/typeParam.json +52 -0
  289. data/schema/types.json +317 -0
  290. data/sig/ancestor_builder.rbs +163 -0
  291. data/sig/ancestor_graph.rbs +60 -0
  292. data/sig/annotate/annotations.rbs +102 -0
  293. data/sig/annotate/formatter.rbs +24 -0
  294. data/sig/annotate/rdoc_annotater.rbs +85 -0
  295. data/sig/annotate/rdoc_source.rbs +32 -0
  296. data/sig/annotation.rbs +27 -0
  297. data/sig/ast/ruby/annotations.rbs +470 -0
  298. data/sig/ast/ruby/comment_block.rbs +127 -0
  299. data/sig/ast/ruby/declarations.rbs +158 -0
  300. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  301. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  302. data/sig/ast/ruby/members.rbs +198 -0
  303. data/sig/buffer.rbs +108 -0
  304. data/sig/builtin_names.rbs +44 -0
  305. data/sig/cli/colored_io.rbs +15 -0
  306. data/sig/cli/diff.rbs +15 -0
  307. data/sig/cli/validate.rbs +47 -0
  308. data/sig/cli.rbs +89 -0
  309. data/sig/collection/cleaner.rbs +13 -0
  310. data/sig/collection/config/lockfile.rbs +74 -0
  311. data/sig/collection/config/lockfile_generator.rbs +68 -0
  312. data/sig/collection/config.rbs +46 -0
  313. data/sig/collection/installer.rbs +17 -0
  314. data/sig/collection/sources.rbs +214 -0
  315. data/sig/collection.rbs +4 -0
  316. data/sig/comment.rbs +26 -0
  317. data/sig/constant.rbs +21 -0
  318. data/sig/declarations.rbs +274 -0
  319. data/sig/definition.rbs +232 -0
  320. data/sig/definition_builder.rbs +181 -0
  321. data/sig/diff.rbs +28 -0
  322. data/sig/directives.rbs +77 -0
  323. data/sig/environment/class_entry.rbs +50 -0
  324. data/sig/environment/module_entry.rbs +50 -0
  325. data/sig/environment.rbs +286 -0
  326. data/sig/environment_loader.rbs +111 -0
  327. data/sig/environment_walker.rbs +65 -0
  328. data/sig/errors.rbs +408 -0
  329. data/sig/factory.rbs +5 -0
  330. data/sig/file_finder.rbs +28 -0
  331. data/sig/inline_parser/comment_association.rbs +71 -0
  332. data/sig/inline_parser.rbs +126 -0
  333. data/sig/location.rbs +135 -0
  334. data/sig/locator.rbs +56 -0
  335. data/sig/manifest.yaml +5 -0
  336. data/sig/members.rbs +258 -0
  337. data/sig/method_builder.rbs +89 -0
  338. data/sig/method_types.rbs +58 -0
  339. data/sig/namespace.rbs +161 -0
  340. data/sig/parser.rbs +164 -0
  341. data/sig/prototype/helpers.rbs +29 -0
  342. data/sig/prototype/node_usage.rbs +20 -0
  343. data/sig/prototype/rb.rbs +96 -0
  344. data/sig/prototype/rbi.rbs +75 -0
  345. data/sig/prototype/runtime.rbs +182 -0
  346. data/sig/rbs.rbs +21 -0
  347. data/sig/rdoc/rbs.rbs +67 -0
  348. data/sig/repository.rbs +85 -0
  349. data/sig/resolver/constant_resolver.rbs +92 -0
  350. data/sig/resolver/context.rbs +34 -0
  351. data/sig/resolver/type_name_resolver.rbs +61 -0
  352. data/sig/rewriter.rbs +45 -0
  353. data/sig/shims/bundler.rbs +38 -0
  354. data/sig/shims/enumerable.rbs +5 -0
  355. data/sig/shims/rubygems.rbs +19 -0
  356. data/sig/sorter.rbs +41 -0
  357. data/sig/source.rbs +48 -0
  358. data/sig/substitution.rbs +48 -0
  359. data/sig/subtractor.rbs +37 -0
  360. data/sig/test/errors.rbs +52 -0
  361. data/sig/test/guranteed.rbs +9 -0
  362. data/sig/test/type_check.rbs +19 -0
  363. data/sig/test.rbs +82 -0
  364. data/sig/type_alias_dependency.rbs +53 -0
  365. data/sig/type_alias_regularity.rbs +98 -0
  366. data/sig/type_param.rbs +115 -0
  367. data/sig/typename.rbs +89 -0
  368. data/sig/types.rbs +578 -0
  369. data/sig/unit_test/convertibles.rbs +154 -0
  370. data/sig/unit_test/spy.rbs +22 -0
  371. data/sig/unit_test/type_assertions.rbs +211 -0
  372. data/sig/unit_test/with_aliases.rbs +136 -0
  373. data/sig/use_map.rbs +35 -0
  374. data/sig/util.rbs +9 -0
  375. data/sig/validator.rbs +63 -0
  376. data/sig/variance_calculator.rbs +87 -0
  377. data/sig/vendorer.rbs +51 -0
  378. data/sig/version.rbs +3 -0
  379. data/sig/visitor.rbs +47 -0
  380. data/sig/wasm/deserializer.rbs +66 -0
  381. data/sig/wasm/serialization_schema.rbs +13 -0
  382. data/sig/writer.rbs +127 -0
  383. data/src/ast.c +1628 -0
  384. data/src/lexer.c +3217 -0
  385. data/src/lexer.re +155 -0
  386. data/src/lexstate.c +217 -0
  387. data/src/location.c +31 -0
  388. data/src/parser.c +4255 -0
  389. data/src/serialize.c +958 -0
  390. data/src/string.c +41 -0
  391. data/src/util/rbs_allocator.c +162 -0
  392. data/src/util/rbs_assert.c +19 -0
  393. data/src/util/rbs_buffer.c +54 -0
  394. data/src/util/rbs_constant_pool.c +268 -0
  395. data/src/util/rbs_encoding.c +21308 -0
  396. data/src/util/rbs_unescape.c +167 -0
  397. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  398. data/stdlib/abbrev/0/array.rbs +26 -0
  399. data/stdlib/base64/0/base64.rbs +355 -0
  400. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  401. data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  402. data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  403. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  404. data/stdlib/cgi/0/core.rbs +911 -0
  405. data/stdlib/cgi/0/manifest.yaml +4 -0
  406. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  407. data/stdlib/coverage/0/coverage.rbs +266 -0
  408. data/stdlib/csv/0/csv.rbs +3776 -0
  409. data/stdlib/csv/0/manifest.yaml +3 -0
  410. data/stdlib/date/0/date.rbs +1598 -0
  411. data/stdlib/date/0/date_time.rbs +617 -0
  412. data/stdlib/date/0/time.rbs +26 -0
  413. data/stdlib/dbm/0/dbm.rbs +421 -0
  414. data/stdlib/delegate/0/delegator.rbs +187 -0
  415. data/stdlib/delegate/0/kernel.rbs +47 -0
  416. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  417. data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  418. data/stdlib/digest/0/digest.rbs +687 -0
  419. data/stdlib/erb/0/erb.rbs +933 -0
  420. data/stdlib/etc/0/etc.rbs +884 -0
  421. data/stdlib/fileutils/0/fileutils.rbs +1753 -0
  422. data/stdlib/find/0/find.rbs +49 -0
  423. data/stdlib/forwardable/0/forwardable.rbs +271 -0
  424. data/stdlib/io-console/0/io-console.rbs +414 -0
  425. data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
  426. data/stdlib/json/0/json.rbs +1963 -0
  427. data/stdlib/kconv/0/kconv.rbs +166 -0
  428. data/stdlib/logger/0/formatter.rbs +45 -0
  429. data/stdlib/logger/0/log_device.rbs +100 -0
  430. data/stdlib/logger/0/logger.rbs +796 -0
  431. data/stdlib/logger/0/manifest.yaml +2 -0
  432. data/stdlib/logger/0/period.rbs +17 -0
  433. data/stdlib/logger/0/severity.rbs +34 -0
  434. data/stdlib/minitest/0/kernel.rbs +42 -0
  435. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  436. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  437. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  438. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  439. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  440. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  441. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  442. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  443. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  444. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  445. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  446. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  447. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  448. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  449. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  450. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  451. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  452. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  453. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  454. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  455. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  456. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  457. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  458. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  459. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  460. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  461. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  462. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  463. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  464. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  465. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  466. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  467. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  468. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  469. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  470. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  471. data/stdlib/minitest/0/minitest.rbs +115 -0
  472. data/stdlib/monitor/0/monitor.rbs +363 -0
  473. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  474. data/stdlib/net-http/0/manifest.yaml +3 -0
  475. data/stdlib/net-http/0/net-http.rbs +5580 -0
  476. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  477. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  478. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  479. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  480. data/stdlib/nkf/0/nkf.rbs +402 -0
  481. data/stdlib/objspace/0/objspace.rbs +470 -0
  482. data/stdlib/observable/0/observable.rbs +217 -0
  483. data/stdlib/open-uri/0/manifest.yaml +4 -0
  484. data/stdlib/open-uri/0/open-uri.rbs +433 -0
  485. data/stdlib/open3/0/open3.rbs +606 -0
  486. data/stdlib/openssl/0/manifest.yaml +3 -0
  487. data/stdlib/openssl/0/openssl.rbs +12231 -0
  488. data/stdlib/optparse/0/optparse.rbs +1734 -0
  489. data/stdlib/pathname/0/pathname.rbs +36 -0
  490. data/stdlib/pp/0/manifest.yaml +2 -0
  491. data/stdlib/pp/0/pp.rbs +301 -0
  492. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  493. data/stdlib/pstore/0/pstore.rbs +608 -0
  494. data/stdlib/psych/0/core_ext.rbs +12 -0
  495. data/stdlib/psych/0/dbm.rbs +237 -0
  496. data/stdlib/psych/0/manifest.yaml +3 -0
  497. data/stdlib/psych/0/psych.rbs +455 -0
  498. data/stdlib/psych/0/store.rbs +57 -0
  499. data/stdlib/pty/0/pty.rbs +240 -0
  500. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  501. data/stdlib/rdoc/0/code_object.rbs +52 -0
  502. data/stdlib/rdoc/0/comment.rbs +61 -0
  503. data/stdlib/rdoc/0/context.rbs +153 -0
  504. data/stdlib/rdoc/0/markup.rbs +117 -0
  505. data/stdlib/rdoc/0/options.rbs +76 -0
  506. data/stdlib/rdoc/0/parser.rbs +56 -0
  507. data/stdlib/rdoc/0/rdoc.rbs +393 -0
  508. data/stdlib/rdoc/0/ri.rbs +17 -0
  509. data/stdlib/rdoc/0/store.rbs +48 -0
  510. data/stdlib/rdoc/0/top_level.rbs +97 -0
  511. data/stdlib/resolv/0/manifest.yaml +3 -0
  512. data/stdlib/resolv/0/resolv.rbs +1787 -0
  513. data/stdlib/ripper/0/ripper.rbs +1654 -0
  514. data/stdlib/securerandom/0/manifest.yaml +2 -0
  515. data/stdlib/securerandom/0/securerandom.rbs +49 -0
  516. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  517. data/stdlib/singleton/0/singleton.rbs +134 -0
  518. data/stdlib/socket/0/addrinfo.rbs +666 -0
  519. data/stdlib/socket/0/basic_socket.rbs +590 -0
  520. data/stdlib/socket/0/constants.rbs +2295 -0
  521. data/stdlib/socket/0/ip_socket.rbs +94 -0
  522. data/stdlib/socket/0/socket.rbs +4170 -0
  523. data/stdlib/socket/0/socket_error.rbs +5 -0
  524. data/stdlib/socket/0/tcp_server.rbs +192 -0
  525. data/stdlib/socket/0/tcp_socket.rbs +87 -0
  526. data/stdlib/socket/0/udp_socket.rbs +133 -0
  527. data/stdlib/socket/0/unix_server.rbs +169 -0
  528. data/stdlib/socket/0/unix_socket.rbs +172 -0
  529. data/stdlib/stringio/0/stringio.rbs +1681 -0
  530. data/stdlib/strscan/0/string_scanner.rbs +1648 -0
  531. data/stdlib/tempfile/0/tempfile.rbs +483 -0
  532. data/stdlib/time/0/time.rbs +434 -0
  533. data/stdlib/timeout/0/timeout.rbs +137 -0
  534. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  535. data/stdlib/tsort/0/cyclic.rbs +8 -0
  536. data/stdlib/tsort/0/interfaces.rbs +20 -0
  537. data/stdlib/tsort/0/tsort.rbs +410 -0
  538. data/stdlib/uri/0/common.rbs +621 -0
  539. data/stdlib/uri/0/file.rbs +118 -0
  540. data/stdlib/uri/0/ftp.rbs +13 -0
  541. data/stdlib/uri/0/generic.rbs +1116 -0
  542. data/stdlib/uri/0/http.rbs +104 -0
  543. data/stdlib/uri/0/https.rbs +14 -0
  544. data/stdlib/uri/0/ldap.rbs +230 -0
  545. data/stdlib/uri/0/ldaps.rbs +14 -0
  546. data/stdlib/uri/0/mailto.rbs +92 -0
  547. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  548. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  549. data/stdlib/uri/0/ws.rbs +13 -0
  550. data/stdlib/uri/0/wss.rbs +9 -0
  551. data/stdlib/yaml/0/manifest.yaml +2 -0
  552. data/stdlib/yaml/0/yaml.rbs +1 -0
  553. data/stdlib/zlib/0/buf_error.rbs +10 -0
  554. data/stdlib/zlib/0/data_error.rbs +10 -0
  555. data/stdlib/zlib/0/deflate.rbs +211 -0
  556. data/stdlib/zlib/0/error.rbs +20 -0
  557. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  558. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  559. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  560. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  561. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  562. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  563. data/stdlib/zlib/0/gzip_writer.rbs +168 -0
  564. data/stdlib/zlib/0/inflate.rbs +180 -0
  565. data/stdlib/zlib/0/mem_error.rbs +10 -0
  566. data/stdlib/zlib/0/need_dict.rbs +13 -0
  567. data/stdlib/zlib/0/stream_end.rbs +11 -0
  568. data/stdlib/zlib/0/stream_error.rbs +11 -0
  569. data/stdlib/zlib/0/version_error.rbs +11 -0
  570. data/stdlib/zlib/0/zlib.rbs +449 -0
  571. data/stdlib/zlib/0/zstream.rbs +201 -0
  572. data/wasm/README.md +59 -0
  573. data/wasm/rbs_wasm.c +411 -0
  574. metadata +660 -0
data/core/gc.rbs ADDED
@@ -0,0 +1,788 @@
1
+ # <!-- rdoc-file=gc.rb -->
2
+ # The GC module provides an interface to Ruby's mark-and-sweep garbage
3
+ # collection mechanism.
4
+ #
5
+ # Some of the underlying methods are also available via the ObjectSpace module.
6
+ #
7
+ # You may obtain information about the operation of the GC through GC::Profiler.
8
+ #
9
+ module GC
10
+ # <!-- rdoc-file=gc.c -->
11
+ # The GC profiler provides access to information on GC runs including time,
12
+ # length and object space size.
13
+ #
14
+ # Example:
15
+ #
16
+ # GC::Profiler.enable
17
+ #
18
+ # require 'rdoc/rdoc'
19
+ #
20
+ # GC::Profiler.report
21
+ #
22
+ # GC::Profiler.disable
23
+ #
24
+ # See also GC.count, GC.malloc_allocated_size and GC.malloc_allocations
25
+ #
26
+ module Profiler
27
+ # <!--
28
+ # rdoc-file=gc.c
29
+ # - GC::Profiler.clear -> nil
30
+ # -->
31
+ # Clears the GC profiler data.
32
+ #
33
+ def self.clear: () -> nil
34
+
35
+ # <!--
36
+ # rdoc-file=gc.c
37
+ # - GC::Profiler.disable -> nil
38
+ # -->
39
+ # Stops the GC profiler.
40
+ #
41
+ def self.disable: () -> nil
42
+
43
+ # <!--
44
+ # rdoc-file=gc.c
45
+ # - GC::Profiler.enable -> nil
46
+ # -->
47
+ # Starts the GC profiler.
48
+ #
49
+ def self.enable: () -> nil
50
+
51
+ # <!--
52
+ # rdoc-file=gc.c
53
+ # - GC::Profiler.enabled? -> true or false
54
+ # -->
55
+ # The current status of GC profile mode.
56
+ #
57
+ def self.enabled?: () -> bool
58
+
59
+ # <!--
60
+ # rdoc-file=gc.c
61
+ # - GC::Profiler.raw_data -> [Hash, ...]
62
+ # -->
63
+ # Returns an Array of individual raw profile data Hashes ordered from earliest
64
+ # to latest by `:GC_INVOKE_TIME`.
65
+ #
66
+ # For example:
67
+ #
68
+ # [
69
+ # {
70
+ # :GC_TIME=>1.3000000000000858e-05,
71
+ # :GC_INVOKE_TIME=>0.010634999999999999,
72
+ # :HEAP_USE_SIZE=>289640,
73
+ # :HEAP_TOTAL_SIZE=>588960,
74
+ # :HEAP_TOTAL_OBJECTS=>14724,
75
+ # :GC_IS_MARKED=>false
76
+ # },
77
+ # # ...
78
+ # ]
79
+ #
80
+ # The keys mean:
81
+ #
82
+ # `:GC_TIME`
83
+ # : Time elapsed in seconds for this GC run
84
+ #
85
+ # `:GC_INVOKE_TIME`
86
+ # : Time elapsed in seconds from startup to when the GC was invoked
87
+ #
88
+ # `:HEAP_USE_SIZE`
89
+ # : Total bytes of heap used
90
+ #
91
+ # `:HEAP_TOTAL_SIZE`
92
+ # : Total size of heap in bytes
93
+ #
94
+ # `:HEAP_TOTAL_OBJECTS`
95
+ # : Total number of objects
96
+ #
97
+ # `:GC_IS_MARKED`
98
+ # : Returns `true` if the GC is in mark phase
99
+ #
100
+ #
101
+ # If ruby was built with `GC_PROFILE_MORE_DETAIL`, you will also have access to
102
+ # the following hash keys:
103
+ #
104
+ # `:GC_MARK_TIME`
105
+ # `:GC_SWEEP_TIME`
106
+ # `:ALLOCATE_INCREASE`
107
+ # `:ALLOCATE_LIMIT`
108
+ # `:HEAP_USE_PAGES`
109
+ # `:HEAP_LIVE_OBJECTS`
110
+ # `:HEAP_FREE_OBJECTS`
111
+ # `:HAVE_FINALIZE`
112
+ # :
113
+ #
114
+ def self.raw_data: () -> Array[Hash[Symbol, untyped]]?
115
+
116
+ # <!--
117
+ # rdoc-file=gc.c
118
+ # - GC::Profiler.report
119
+ # - GC::Profiler.report(io)
120
+ # -->
121
+ # Writes the GC::Profiler.result to `$stdout` or the given IO object.
122
+ #
123
+ def self.report: (?_Reporter io) -> nil
124
+
125
+ interface _Reporter
126
+ def write: (String msg) -> void
127
+ end
128
+
129
+ # <!--
130
+ # rdoc-file=gc.c
131
+ # - GC::Profiler.result -> String
132
+ # -->
133
+ # Returns a profile data report such as:
134
+ #
135
+ # GC 1 invokes.
136
+ # Index Invoke Time(sec) Use Size(byte) Total Size(byte) Total Object GC time(ms)
137
+ # 1 0.012 159240 212940 10647 0.00000000000001530000
138
+ #
139
+ def self.result: () -> String
140
+
141
+ # <!--
142
+ # rdoc-file=gc.c
143
+ # - GC::Profiler.total_time -> float
144
+ # -->
145
+ # The total time used for garbage collection in seconds
146
+ #
147
+ def self.total_time: () -> Float
148
+ end
149
+
150
+ # <!-- rdoc-file=gc.c -->
151
+ # Internal constants in the garbage collector.
152
+ #
153
+ INTERNAL_CONSTANTS: Hash[Symbol, untyped]
154
+
155
+ # <!-- rdoc-file=gc.c -->
156
+ # GC build options
157
+ #
158
+ OPTS: Array[String]
159
+
160
+ # <!--
161
+ # rdoc-file=gc.rb
162
+ # - GC.config -> hash
163
+ # - GC.config(hash_to_merge) -> hash
164
+ # -->
165
+ # This method is implementation-specific to CRuby.
166
+ #
167
+ # Sets or gets information about the current GC configuration.
168
+ #
169
+ # Configuration parameters are GC implementation-specific and may change without
170
+ # notice.
171
+ #
172
+ # With no argument given, returns a hash containing the configuration:
173
+ #
174
+ # GC.config
175
+ # # => {rgengc_allow_full_mark: true, implementation: "default"}
176
+ #
177
+ # With argument `hash_to_merge` given, merges that hash into the stored
178
+ # configuration hash; ignores unknown hash keys; returns the configuration hash:
179
+ #
180
+ # GC.config(rgengc_allow_full_mark: false)
181
+ # # => {rgengc_allow_full_mark: false, implementation: "default"}
182
+ # GC.config(foo: 'bar')
183
+ # # => {rgengc_allow_full_mark: false, implementation: "default"}
184
+ #
185
+ # <strong>All-Implementations Configuration</strong>
186
+ #
187
+ # The single read-only entry for all implementations is:
188
+ #
189
+ # * <code>:implementation</code>: the string name of the implementation; for
190
+ # the Ruby default implementation, <code>'default'</code>.
191
+ #
192
+ # <strong>Implementation-Specific Configuration</strong>
193
+ #
194
+ # A GC implementation maintains its own implementation-specific configuration.
195
+ #
196
+ # For Ruby's default implementation the single entry is:
197
+ #
198
+ # * <code>:rgengc_allow_full_mark</code>: Controls whether the GC is allowed
199
+ # to run a full mark (young & old objects):
200
+ #
201
+ # * `true` (default): GC interleaves major and minor collections. A flag
202
+ # is set to notify GC that a full mark has been requested. This flag is
203
+ # accessible via GC.latest_gc_info(:need_major_by).
204
+ # * `false`: GC does not initiate a full marking cycle unless explicitly
205
+ # directed by user code; see GC.start. Setting this parameter to `false`
206
+ # disables young-to-old promotion. For performance reasons, we
207
+ # recommended warming up the application using Process.warmup before
208
+ # setting this parameter to `false`.
209
+ #
210
+ def self.config: () -> Hash[Symbol, untyped]
211
+ | (Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
212
+
213
+ # <!--
214
+ # rdoc-file=gc.rb
215
+ # - self.count -> integer
216
+ # -->
217
+ # Returns the total number of times garbage collection has occurred:
218
+ #
219
+ # GC.count # => 385
220
+ # GC.start
221
+ # GC.count # => 386
222
+ #
223
+ def self.count: () -> Integer
224
+
225
+ # <!--
226
+ # rdoc-file=gc.rb
227
+ # - GC.disable -> true or false
228
+ # -->
229
+ # Disables garbage collection (but GC.start remains potent): returns whether
230
+ # garbage collection was already disabled.
231
+ #
232
+ # GC.enable
233
+ # GC.disable # => false
234
+ # GC.disable # => true
235
+ #
236
+ def self.disable: () -> bool
237
+
238
+ # <!--
239
+ # rdoc-file=gc.rb
240
+ # - GC.enable -> true or false
241
+ # -->
242
+ # Enables garbage collection; returns whether garbage collection was disabled:
243
+ #
244
+ # GC.disable
245
+ # GC.enable # => true
246
+ # GC.enable # => false
247
+ #
248
+ def self.enable: () -> bool
249
+
250
+ # <!--
251
+ # rdoc-file=gc.rb
252
+ # - start(full_mark: true, immediate_mark: true, immediate_sweep: true)
253
+ # -->
254
+ # Initiates garbage collection, even if explicitly disabled by GC.disable.
255
+ #
256
+ # Keyword arguments:
257
+ #
258
+ # * `full_mark`: its boolean value determines whether to perform a major
259
+ # garbage collection cycle:
260
+ #
261
+ # * `true`: initiates a major garbage collection cycle, meaning all
262
+ # objects (old and new) are marked.
263
+ # * `false`: initiates a minor garbage collection cycle, meaning only
264
+ # young objects are marked.
265
+ #
266
+ # * `immediate_mark`: its boolean value determines whether to perform
267
+ # incremental marking:
268
+ #
269
+ # * `true`: marking is completed before the method returns.
270
+ # * `false`: marking is performed by parts, interleaved with program
271
+ # execution both before the method returns and afterward; therefore
272
+ # marking may not be completed before the return. Note that if
273
+ # `full_mark` is `false`, marking will always be immediate, regardless
274
+ # of the value of `immediate_mark`.
275
+ #
276
+ # * `immediate_sweep`: its boolean value determines whether to defer sweeping
277
+ # (using lazy sweep):
278
+ #
279
+ # * `true`: sweeping is completed before the method returns.
280
+ # * `false`: sweeping is performed by parts, interleaved with program
281
+ # execution both before the method returns and afterward; therefore
282
+ # sweeping may not be completed before the return.
283
+ #
284
+ # Note that these keyword arguments are implementation- and version-dependent,
285
+ # are not guaranteed to be future-compatible, and may be ignored in some
286
+ # implementations.
287
+ #
288
+ def self.start: (?immediate_sweep: boolish, ?immediate_mark: boolish, ?full_mark: boolish) -> nil
289
+
290
+ # <!--
291
+ # rdoc-file=gc.rb
292
+ # - GC.stat -> new_hash
293
+ # - GC.stat(key) -> value
294
+ # - GC.stat(hash) -> hash
295
+ # -->
296
+ # This method is implementation-specific to CRuby.
297
+ #
298
+ # Returns GC statistics. The particular statistics are implementation-specific
299
+ # and may change in the future without notice.
300
+ #
301
+ # With no argument given, returns information about the most recent garbage
302
+ # collection:
303
+ #
304
+ # GC.stat
305
+ # # =>
306
+ # {count: 28,
307
+ # time: 1,
308
+ # marking_time: 1,
309
+ # sweeping_time: 0,
310
+ # heap_allocated_pages: 521,
311
+ # heap_empty_pages: 0,
312
+ # heap_allocatable_slots: 0,
313
+ # heap_available_slots: 539590,
314
+ # heap_live_slots: 422243,
315
+ # heap_free_slots: 117347,
316
+ # heap_final_slots: 0,
317
+ # heap_marked_slots: 264877,
318
+ # heap_eden_pages: 521,
319
+ # total_allocated_pages: 521,
320
+ # total_freed_pages: 0,
321
+ # total_allocated_objects: 2246376,
322
+ # total_freed_objects: 1824133,
323
+ # malloc_increase_bytes: 50982,
324
+ # malloc_increase_bytes_limit: 18535172,
325
+ # minor_gc_count: 18,
326
+ # major_gc_count: 10,
327
+ # compact_count: 0,
328
+ # read_barrier_faults: 0,
329
+ # total_moved_objects: 0,
330
+ # remembered_wb_unprotected_objects: 0,
331
+ # remembered_wb_unprotected_objects_limit: 2162,
332
+ # old_objects: 216365,
333
+ # old_objects_limit: 432540,
334
+ # oldmalloc_increase_bytes: 1654232,
335
+ # oldmalloc_increase_bytes_limit: 16846103}
336
+ #
337
+ # With symbol argument `key` given, returns the value for that key:
338
+ #
339
+ # GC.stat(:count) # => 30
340
+ #
341
+ # With hash argument `hash` given, returns that hash with GC statistics merged
342
+ # into its content; this form may be useful in minimizing [probe
343
+ # effects](https://en.wikipedia.org/wiki/Probe_effect):
344
+ #
345
+ # h = {foo: 0, bar: 1}
346
+ # GC.stat(h)
347
+ # h.keys.take(5) # => [:foo, :bar, :count, :time, :marking_time]
348
+ #
349
+ # The hash includes entries such as:
350
+ #
351
+ # * <code>:count</code>: The total number of garbage collections run since
352
+ # application start (count includes both minor and major garbage
353
+ # collections).
354
+ # * <code>:time</code>: The total time spent in garbage collections (in
355
+ # milliseconds).
356
+ # * <code>:heap_allocated_pages</code>: The total number of allocated pages.
357
+ # * <code>:heap_empty_pages</code>: The number of pages with no live objects,
358
+ # and that could be released to the system.
359
+ # * <code>:heap_sorted_length</code>: The number of pages that can fit into
360
+ # the buffer that holds references to all pages.
361
+ # * <code>:heap_allocatable_pages</code>: The total number of pages the
362
+ # application could allocate without additional GC.
363
+ # * <code>:heap_available_slots</code>: The total number of slots in all
364
+ # <code>:heap_allocated_pages</code>.
365
+ # * <code>:heap_live_slots</code>: The total number of slots which contain
366
+ # live objects.
367
+ # * <code>:heap_free_slots</code>: The total number of slots which do not
368
+ # contain live objects.
369
+ # * <code>:heap_final_slots</code>: The total number of slots with pending
370
+ # finalizers to be run.
371
+ # * <code>:heap_marked_slots</code>: The total number of objects marked in the
372
+ # last GC.
373
+ # * <code>:heap_eden_pages</code>: The total number of pages which contain at
374
+ # least one live slot.
375
+ # * <code>:total_allocated_pages</code>: The cumulative number of pages
376
+ # allocated since application start.
377
+ # * <code>:total_freed_pages</code>: The cumulative number of pages freed
378
+ # since application start.
379
+ # * <code>:total_allocated_objects</code>: The cumulative number of objects
380
+ # allocated since application start.
381
+ # * <code>:total_freed_objects</code>: The cumulative number of objects freed
382
+ # since application start.
383
+ # * <code>:malloc_increase_bytes</code>: Amount of memory allocated on the
384
+ # heap for objects. Decreased by any GC.
385
+ # * <code>:malloc_increase_bytes_limit</code>: When
386
+ # <code>:malloc_increase_bytes</code> crosses this limit, GC is triggered.
387
+ # * <code>:minor_gc_count</code>: The total number of minor garbage
388
+ # collections run since process start.
389
+ # * <code>:major_gc_count</code>: The total number of major garbage
390
+ # collections run since process start.
391
+ # * <code>:compact_count</code>: The total number of compactions run since
392
+ # process start.
393
+ # * <code>:read_barrier_faults</code>: The total number of times the read
394
+ # barrier was triggered during compaction.
395
+ # * <code>:total_moved_objects</code>: The total number of objects compaction
396
+ # has moved.
397
+ # * <code>:remembered_wb_unprotected_objects</code>: The total number of
398
+ # objects without write barriers.
399
+ # * <code>:remembered_wb_unprotected_objects_limit</code>: When
400
+ # <code>:remembered_wb_unprotected_objects</code> crosses this limit, major
401
+ # GC is triggered.
402
+ # * <code>:old_objects</code>: Number of live, old objects which have survived
403
+ # at least 3 garbage collections.
404
+ # * <code>:old_objects_limit</code>: When <code>:old_objects</code> crosses
405
+ # this limit, major GC is triggered.
406
+ # * <code>:oldmalloc_increase_bytes</code>: Amount of memory allocated on the
407
+ # heap for objects. Decreased by major GC.
408
+ # * <code>:oldmalloc_increase_bytes_limit</code>: When
409
+ # <code>:oldmalloc_increase_bytes</code> crosses this limit, major GC is
410
+ # triggered.
411
+ #
412
+ def self.stat: (?Hash[Symbol, untyped]? hash) -> Hash[Symbol, untyped]
413
+ | (Symbol key) -> Integer
414
+
415
+ # <!--
416
+ # rdoc-file=gc.rb
417
+ # - GC.measure_total_time = setting -> setting
418
+ # -->
419
+ # Enables or disables GC total time measurement; returns `setting`. See
420
+ # GC.total_time.
421
+ #
422
+ # When argument `object` is `nil` or `false`, disables total time measurement;
423
+ # GC.measure_total_time then returns `false`:
424
+ #
425
+ # GC.measure_total_time = nil # => nil
426
+ # GC.measure_total_time # => false
427
+ # GC.measure_total_time = false # => false
428
+ # GC.measure_total_time # => false
429
+ #
430
+ # Otherwise, enables total time measurement; GC.measure_total_time then returns
431
+ # `true`:
432
+ #
433
+ # GC.measure_total_time = true # => true
434
+ # GC.measure_total_time # => true
435
+ # GC.measure_total_time = :foo # => :foo
436
+ # GC.measure_total_time # => true
437
+ #
438
+ # Note that when enabled, total time measurement affects performance.
439
+ #
440
+ def self.measure_total_time=: [T] (T enable) -> T
441
+
442
+ # <!--
443
+ # rdoc-file=gc.rb
444
+ # - GC.measure_total_time -> true or false
445
+ # -->
446
+ # Returns the setting for GC total time measurement; the initial setting is
447
+ # `true`. See GC.total_time.
448
+ #
449
+ def self.measure_total_time: () -> bool
450
+
451
+ # <!--
452
+ # rdoc-file=gc.c
453
+ # - GC.auto_compact = flag
454
+ # -->
455
+ # Updates automatic compaction mode.
456
+ #
457
+ # When enabled, the compactor will execute on every major collection.
458
+ #
459
+ # Enabling compaction will degrade performance on major collections.
460
+ #
461
+ def self.auto_compact=: [T] (T enable) -> T
462
+
463
+ # <!--
464
+ # rdoc-file=gc.c
465
+ # - GC.auto_compact -> true or false
466
+ # -->
467
+ # Returns whether or not automatic compaction has been enabled.
468
+ #
469
+ def self.auto_compact: () -> bool
470
+
471
+ # <!--
472
+ # rdoc-file=gc.rb
473
+ # - GC.stat_heap -> new_hash
474
+ # - GC.stat_heap(heap_id) -> new_hash
475
+ # - GC.stat_heap(heap_id, key) -> value
476
+ # - GC.stat_heap(nil, hash) -> hash
477
+ # - GC.stat_heap(heap_id, hash) -> hash
478
+ # -->
479
+ # This method is implementation-specific to CRuby.
480
+ #
481
+ # Returns statistics for GC heaps. The particular statistics are
482
+ # implementation-specific and may change in the future without notice.
483
+ #
484
+ # With no argument given, returns statistics for all heaps:
485
+ #
486
+ # GC.stat_heap
487
+ # # =>
488
+ # {0 =>
489
+ # {slot_size: 40,
490
+ # heap_eden_pages: 246,
491
+ # heap_eden_slots: 402802,
492
+ # total_allocated_pages: 246,
493
+ # force_major_gc_count: 2,
494
+ # force_incremental_marking_finish_count: 1,
495
+ # total_allocated_objects: 33867152,
496
+ # total_freed_objects: 33520523},
497
+ # 1 =>
498
+ # {slot_size: 80,
499
+ # heap_eden_pages: 84,
500
+ # heap_eden_slots: 68746,
501
+ # total_allocated_pages: 84,
502
+ # force_major_gc_count: 1,
503
+ # force_incremental_marking_finish_count: 4,
504
+ # total_allocated_objects: 147491,
505
+ # total_freed_objects: 90699},
506
+ # 2 =>
507
+ # {slot_size: 160,
508
+ # heap_eden_pages: 157,
509
+ # heap_eden_slots: 64182,
510
+ # total_allocated_pages: 157,
511
+ # force_major_gc_count: 0,
512
+ # force_incremental_marking_finish_count: 0,
513
+ # total_allocated_objects: 211460,
514
+ # total_freed_objects: 190075},
515
+ # 3 =>
516
+ # {slot_size: 320,
517
+ # heap_eden_pages: 8,
518
+ # heap_eden_slots: 1631,
519
+ # total_allocated_pages: 8,
520
+ # force_major_gc_count: 0,
521
+ # force_incremental_marking_finish_count: 0,
522
+ # total_allocated_objects: 1422,
523
+ # total_freed_objects: 700},
524
+ # 4 =>
525
+ # {slot_size: 640,
526
+ # heap_eden_pages: 16,
527
+ # heap_eden_slots: 1628,
528
+ # total_allocated_pages: 16,
529
+ # force_major_gc_count: 0,
530
+ # force_incremental_marking_finish_count: 0,
531
+ # total_allocated_objects: 1230,
532
+ # total_freed_objects: 309}}
533
+ #
534
+ # In the example above, the keys in the outer hash are the heap identifiers:
535
+ #
536
+ # GC.stat_heap.keys # => [0, 1, 2, 3, 4]
537
+ #
538
+ # On CRuby, each heap identifier is an integer; on other implementations, a heap
539
+ # identifier may be a string.
540
+ #
541
+ # With only argument `heap_id` given, returns statistics for the given heap
542
+ # identifier:
543
+ #
544
+ # GC.stat_heap(2)
545
+ # # =>
546
+ # {slot_size: 160,
547
+ # heap_eden_pages: 157,
548
+ # heap_eden_slots: 64182,
549
+ # total_allocated_pages: 157,
550
+ # force_major_gc_count: 0,
551
+ # force_incremental_marking_finish_count: 0,
552
+ # total_allocated_objects: 225018,
553
+ # total_freed_objects: 206647}
554
+ #
555
+ # With arguments `heap_id` and `key` given, returns the value for the given key
556
+ # in the given heap:
557
+ #
558
+ # GC.stat_heap(2, :slot_size) # => 160
559
+ #
560
+ # With arguments `nil` and `hash` given, merges the statistics for all heaps
561
+ # into the given hash:
562
+ #
563
+ # h = {foo: 0, bar: 1}
564
+ # GC.stat_heap(nil, h).keys # => [:foo, :bar, 0, 1, 2, 3, 4]
565
+ #
566
+ # With arguments `heap_id` and `hash` given, merges the statistics for the given
567
+ # heap into the given hash:
568
+ #
569
+ # h = {foo: 0, bar: 1}
570
+ # GC.stat_heap(2, h).keys
571
+ # # =>
572
+ # [:foo,
573
+ # :bar,
574
+ # :slot_size,
575
+ # :heap_eden_pages,
576
+ # :heap_eden_slots,
577
+ # :total_allocated_pages,
578
+ # :force_major_gc_count,
579
+ # :force_incremental_marking_finish_count,
580
+ # :total_allocated_objects,
581
+ # :total_freed_objects]
582
+ #
583
+ # The statistics for a heap may include:
584
+ #
585
+ # * <code>:slot_size</code>: The slot size of the heap in bytes.
586
+ # * <code>:heap_allocatable_pages</code>: The number of pages that can be
587
+ # allocated without triggering a new garbage collection cycle.
588
+ # * <code>:heap_eden_pages</code>: The number of pages in the eden heap.
589
+ # * <code>:heap_eden_slots</code>: The total number of slots in all of the
590
+ # pages in the eden heap.
591
+ # * <code>:total_allocated_pages</code>: The total number of pages that have
592
+ # been allocated in the heap.
593
+ # * <code>:total_freed_pages</code>: The total number of pages that have been
594
+ # freed and released back to the system in the heap.
595
+ # * <code>:force_major_gc_count</code>: The number of times this heap has
596
+ # forced major garbage collection cycles to start due to running out of free
597
+ # slots.
598
+ # * <code>:force_incremental_marking_finish_count</code>: The number of times
599
+ # this heap has forced incremental marking to complete due to running out of
600
+ # pooled slots.
601
+ #
602
+ def self.stat_heap: (?Integer? heap_name, ?Hash[Symbol, untyped]? hash) -> Hash[Symbol, untyped]
603
+ | (Integer heap_name, Symbol key) -> Integer
604
+
605
+ # <!--
606
+ # rdoc-file=gc.c
607
+ # - GC.latest_compact_info -> hash
608
+ # -->
609
+ # Returns information about object moved in the most recent GC compaction.
610
+ #
611
+ # The returned hash has two keys :considered and :moved. The hash for
612
+ # :considered lists the number of objects that were considered for movement by
613
+ # the compactor, and the :moved hash lists the number of objects that were
614
+ # actually moved. Some objects can't be moved (maybe they were pinned) so these
615
+ # numbers can be used to calculate compaction efficiency.
616
+ #
617
+ def self.latest_compact_info: () -> compact_info
618
+
619
+ # <!--
620
+ # rdoc-file=gc.rb
621
+ # - GC.stress -> setting
622
+ # -->
623
+ # Returns the current GC stress-mode setting, which initially is `false`.
624
+ #
625
+ # The stress mode may be set by method GC.stress=.
626
+ #
627
+ def self.stress: () -> (Integer | bool)
628
+
629
+ # <!--
630
+ # rdoc-file=gc.rb
631
+ # - GC.stress = value -> value
632
+ # -->
633
+ # Enables or disables stress mode; enabling stress mode will degrade
634
+ # performance; it is only for debugging.
635
+ #
636
+ # Sets the current GC stress mode to the given value:
637
+ #
638
+ # * If the value is `nil` or `false`, disables stress mode.
639
+ # * If the value is an integer, enables stress mode with certain flags; see
640
+ # below.
641
+ # * Otherwise, enables stress mode; GC is invoked at every GC opportunity: all
642
+ # memory and object allocations.
643
+ #
644
+ # The flags are bits in the given integer:
645
+ #
646
+ # * `0x01`: No major GC.
647
+ # * `0x02`: No immediate sweep.
648
+ # * `0x04`: Full mark after malloc/calloc/realloc.
649
+ #
650
+ def self.stress=: (Integer flag) -> Integer
651
+ | (bool flag) -> bool
652
+
653
+ # <!--
654
+ # rdoc-file=gc.rb
655
+ # - GC.total_time -> integer
656
+ # -->
657
+ # Returns the GC total time in nanoseconds:
658
+ #
659
+ # GC.total_time # => 156250
660
+ #
661
+ # Note that total time accumulates only when total time measurement is enabled
662
+ # (that is, when GC.measure_total_time is `true`):
663
+ #
664
+ # GC.measure_total_time # => true
665
+ # GC.total_time # => 625000
666
+ # GC.start
667
+ # GC.total_time # => 937500
668
+ # GC.start
669
+ # GC.total_time # => 1093750
670
+ #
671
+ # GC.measure_total_time = false
672
+ # GC.total_time # => 1250000
673
+ # GC.start
674
+ # GC.total_time # => 1250000
675
+ # GC.start
676
+ # GC.total_time # => 1250000
677
+ #
678
+ # GC.measure_total_time = true
679
+ # GC.total_time # => 1250000
680
+ # GC.start
681
+ # GC.total_time # => 1406250
682
+ #
683
+ def self.total_time: () -> Integer
684
+
685
+ # <!--
686
+ # rdoc-file=gc.c
687
+ # - GC.compact
688
+ # -->
689
+ # This function compacts objects together in Ruby's heap. It eliminates unused
690
+ # space (or fragmentation) in the heap by moving objects in to that unused
691
+ # space. This function returns a hash which contains statistics about which
692
+ # objects were moved. See `GC.latest_gc_info` for details about compaction
693
+ # statistics.
694
+ #
695
+ # This method is implementation specific and not expected to be implemented in
696
+ # any implementation besides MRI.
697
+ #
698
+ # To test whether GC compaction is supported, use the idiom:
699
+ #
700
+ # GC.respond_to?(:compact)
701
+ #
702
+ def self.compact: () -> compact_info
703
+
704
+ # The type that `GC.compact` and related functions can return.
705
+ #
706
+ type compact_info = Hash[:considered | :moved | :moved_up | :moved_down, Hash[Symbol, Integer]]
707
+
708
+ # <!--
709
+ # rdoc-file=gc.rb
710
+ # - GC.verify_compaction_references(toward: nil, double_heap: false) -> hash
711
+ # -->
712
+ # Verify compaction reference consistency.
713
+ #
714
+ # This method is implementation specific. During compaction, objects that were
715
+ # moved are replaced with T_MOVED objects. No object should have a reference to
716
+ # a T_MOVED object after compaction.
717
+ #
718
+ # This function expands the heap to ensure room to move all objects, compacts
719
+ # the heap to make sure everything moves, updates all references, then performs
720
+ # a full GC. If any object contains a reference to a T_MOVED object, that
721
+ # object should be pushed on the mark stack, and will make a SEGV.
722
+ #
723
+ def self.verify_compaction_references: (?toward: :empty | untyped, ?double_heap: boolish, ?expand_heap: boolish) -> compact_info
724
+
725
+ # <!--
726
+ # rdoc-file=gc.c
727
+ # - GC.verify_internal_consistency -> nil
728
+ # -->
729
+ # Verify internal consistency.
730
+ #
731
+ # This method is implementation specific. Now this method checks generational
732
+ # consistency if RGenGC is supported.
733
+ #
734
+ def self.verify_internal_consistency: () -> nil
735
+
736
+ # <!--
737
+ # rdoc-file=gc.rb
738
+ # - GC.latest_gc_info -> new_hash
739
+ # - GC.latest_gc_info(key) -> value
740
+ # - GC.latest_gc_info(hash) -> hash
741
+ # -->
742
+ # With no argument given, returns information about the most recent garbage
743
+ # collection:
744
+ #
745
+ # GC.latest_gc_info
746
+ # # =>
747
+ # {major_by: :force,
748
+ # need_major_by: nil,
749
+ # gc_by: :method,
750
+ # have_finalizer: false,
751
+ # immediate_sweep: true,
752
+ # state: :none,
753
+ # weak_references_count: 0,
754
+ # retained_weak_references_count: 0}
755
+ #
756
+ # With symbol argument `key` given, returns the value for that key:
757
+ #
758
+ # GC.latest_gc_info(:gc_by) # => :newobj
759
+ #
760
+ # With hash argument `hash` given, returns that hash with GC information merged
761
+ # into its content; this form may be useful in minimizing [probe
762
+ # effects](https://en.wikipedia.org/wiki/Probe_effect):
763
+ #
764
+ # h = {foo: 0, bar: 1}
765
+ # GC.latest_gc_info(h)
766
+ # # =>
767
+ # {foo: 0,
768
+ # bar: 1,
769
+ # major_by: nil,
770
+ # need_major_by: nil,
771
+ # gc_by: :newobj,
772
+ # have_finalizer: false,
773
+ # immediate_sweep: false,
774
+ # state: :sweeping,
775
+ # weak_references_count: 0,
776
+ # retained_weak_references_count: 0}
777
+ #
778
+ def self.latest_gc_info: (?Hash[Symbol, untyped]? hash) -> Hash[Symbol, untyped]
779
+ | (Symbol key) -> untyped
780
+
781
+ # <!--
782
+ # rdoc-file=gc.rb
783
+ # - garbage_collect(full_mark: true, immediate_mark: true, immediate_sweep: true)
784
+ # -->
785
+ # Alias of GC.start
786
+ #
787
+ def garbage_collect: (?immediate_sweep: boolish immediate_sweep, ?immediate_mark: boolish immediate_mark, ?full_mark: boolish full_mark) -> nil
788
+ end