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
@@ -0,0 +1,470 @@
1
+ # <!-- rdoc-file=ext/objspace/objspace.c -->
2
+ # The objspace library extends the ObjectSpace module and adds several methods
3
+ # to get internal statistic information about object/memory management.
4
+ #
5
+ # You need to <code>require 'objspace'</code> to use this extension module.
6
+ #
7
+ # Generally, you **SHOULD** **NOT** use this library if you do not know about
8
+ # the MRI implementation. Mainly, this library is for (memory) profiler
9
+ # developers and MRI developers who need to know about MRI memory usage.
10
+ #
11
+ %a{annotate:rdoc:source:from=ext/objspace}
12
+ module ObjectSpace
13
+ # <!--
14
+ # rdoc-file=ext/objspace/object_tracing.c
15
+ # - allocation_class_path(object) -> string
16
+ # -->
17
+ # Returns the class for the given `object`.
18
+ #
19
+ # class A
20
+ # def foo
21
+ # ObjectSpace::trace_object_allocations do
22
+ # obj = Object.new
23
+ # p "#{ObjectSpace::allocation_class_path(obj)}"
24
+ # end
25
+ # end
26
+ # end
27
+ #
28
+ # A.new.foo #=> "Class"
29
+ #
30
+ # See ::trace_object_allocations for more information and examples.
31
+ #
32
+ def self?.allocation_class_path: (untyped) -> String
33
+
34
+ # <!--
35
+ # rdoc-file=ext/objspace/object_tracing.c
36
+ # - allocation_generation(object) -> integer or nil
37
+ # -->
38
+ # Returns garbage collector generation for the given `object`.
39
+ #
40
+ # class B
41
+ # include ObjectSpace
42
+ #
43
+ # def foo
44
+ # trace_object_allocations do
45
+ # obj = Object.new
46
+ # p "Generation is #{allocation_generation(obj)}"
47
+ # end
48
+ # end
49
+ # end
50
+ #
51
+ # B.new.foo #=> "Generation is 3"
52
+ #
53
+ # See ::trace_object_allocations for more information and examples.
54
+ #
55
+ def self?.allocation_generation: (untyped) -> (Integer | nil)
56
+
57
+ # <!--
58
+ # rdoc-file=ext/objspace/object_tracing.c
59
+ # - allocation_method_id(object) -> string
60
+ # -->
61
+ # Returns the method identifier for the given `object`.
62
+ #
63
+ # class A
64
+ # include ObjectSpace
65
+ #
66
+ # def foo
67
+ # trace_object_allocations do
68
+ # obj = Object.new
69
+ # p "#{allocation_class_path(obj)}##{allocation_method_id(obj)}"
70
+ # end
71
+ # end
72
+ # end
73
+ #
74
+ # A.new.foo #=> "Class#new"
75
+ #
76
+ # See ::trace_object_allocations for more information and examples.
77
+ #
78
+ def self?.allocation_method_id: (untyped) -> Symbol
79
+
80
+ # <!--
81
+ # rdoc-file=ext/objspace/object_tracing.c
82
+ # - allocation_sourcefile(object) -> string
83
+ # -->
84
+ # Returns the source file origin from the given `object`.
85
+ #
86
+ # See ::trace_object_allocations for more information and examples.
87
+ #
88
+ def self?.allocation_sourcefile: (untyped) -> String
89
+
90
+ # <!--
91
+ # rdoc-file=ext/objspace/object_tracing.c
92
+ # - allocation_sourceline(object) -> integer
93
+ # -->
94
+ # Returns the original line from source for from the given `object`.
95
+ #
96
+ # See ::trace_object_allocations for more information and examples.
97
+ #
98
+ def self?.allocation_sourceline: (untyped) -> Integer
99
+
100
+ # <!--
101
+ # rdoc-file=ext/objspace/objspace.c
102
+ # - ObjectSpace.count_imemo_objects([result_hash]) -> hash
103
+ # -->
104
+ # Counts objects for each `T_IMEMO` type.
105
+ #
106
+ # This method is only for MRI developers interested in performance and memory
107
+ # usage of Ruby programs.
108
+ #
109
+ # It returns a hash as:
110
+ #
111
+ # {:imemo_ifunc=>8,
112
+ # :imemo_svar=>7,
113
+ # :imemo_cref=>509,
114
+ # :imemo_memo=>1,
115
+ # :imemo_throw_data=>1}
116
+ #
117
+ # If the optional argument, result_hash, is given, it is overwritten and
118
+ # returned. This is intended to avoid probe effect.
119
+ #
120
+ # The contents of the returned hash is implementation specific and may change in
121
+ # the future.
122
+ #
123
+ # In this version, keys are symbol objects.
124
+ #
125
+ # This method is only expected to work with C Ruby.
126
+ #
127
+ def self?.count_imemo_objects: (?Hash[Symbol, Integer] result_hash) -> Hash[Symbol, Integer]
128
+
129
+ # <!--
130
+ # rdoc-file=ext/objspace/objspace.c
131
+ # - ObjectSpace.count_objects_size([result_hash]) -> hash
132
+ # -->
133
+ # Counts objects size (in bytes) for each type.
134
+ #
135
+ # Note that this information is incomplete. You need to deal with this
136
+ # information as only a **HINT**. Especially, total size of T_DATA may be
137
+ # wrong.
138
+ #
139
+ # It returns a hash as:
140
+ # {:TOTAL=>1461154, :T_CLASS=>158280, :T_MODULE=>20672, :T_STRING=>527249, ...}
141
+ #
142
+ # If the optional argument, result_hash, is given, it is overwritten and
143
+ # returned. This is intended to avoid probe effect.
144
+ #
145
+ # The contents of the returned hash is implementation defined. It may be changed
146
+ # in future.
147
+ #
148
+ # This method is only expected to work with C Ruby.
149
+ #
150
+ def self?.count_objects_size: (?Hash[Symbol, Integer] result_hash) -> Hash[Symbol, Integer]
151
+
152
+ # <!--
153
+ # rdoc-file=ext/objspace/objspace.c
154
+ # - ObjectSpace.count_symbols([result_hash]) -> hash
155
+ # -->
156
+ # Counts symbols for each Symbol type.
157
+ #
158
+ # This method is only for MRI developers interested in performance and memory
159
+ # usage of Ruby programs.
160
+ #
161
+ # If the optional argument, result_hash, is given, it is overwritten and
162
+ # returned. This is intended to avoid probe effect.
163
+ #
164
+ # Note: The contents of the returned hash is implementation defined. It may be
165
+ # changed in future.
166
+ #
167
+ # This method is only expected to work with C Ruby.
168
+ #
169
+ # On this version of MRI, they have 3 types of Symbols (and 1 total counts).
170
+ #
171
+ # * mortal_dynamic_symbol: GC target symbols (collected by GC)
172
+ # * immortal_dynamic_symbol: Immortal symbols promoted from dynamic symbols (do not collected by GC)
173
+ # * immortal_static_symbol: Immortal symbols (do not collected by GC)
174
+ # * immortal_symbol: total immortal symbols (immortal_dynamic_symbol+immortal_static_symbol)
175
+ #
176
+ def self?.count_symbols: (?Hash[Symbol, Integer] result_hash) -> Hash[Symbol, Integer]
177
+
178
+ # <!--
179
+ # rdoc-file=ext/objspace/objspace.c
180
+ # - ObjectSpace.count_tdata_objects([result_hash]) -> hash
181
+ # -->
182
+ # Counts objects for each `T_DATA` type.
183
+ #
184
+ # This method is only for MRI developers interested in performance and memory
185
+ # usage of Ruby programs.
186
+ #
187
+ # It returns a hash as:
188
+ #
189
+ # {RubyVM::InstructionSequence=>504, :parser=>5, :barrier=>6,
190
+ # :mutex=>6, Proc=>60, RubyVM::Env=>57, Mutex=>1, Encoding=>99,
191
+ # ThreadGroup=>1, Binding=>1, Thread=>1, RubyVM=>1, :iseq=>1,
192
+ # Random=>1, ARGF.class=>1, Data=>1, :autoload=>3, Time=>2}
193
+ # # T_DATA objects existing at startup on r32276.
194
+ #
195
+ # If the optional argument, result_hash, is given, it is overwritten and
196
+ # returned. This is intended to avoid probe effect.
197
+ #
198
+ # The contents of the returned hash is implementation specific and may change in
199
+ # the future.
200
+ #
201
+ # In this version, keys are Class object or Symbol object.
202
+ #
203
+ # If object is kind of normal (accessible) object, the key is Class object. If
204
+ # object is not a kind of normal (internal) object, the key is symbol name,
205
+ # registered by rb_data_type_struct.
206
+ #
207
+ # This method is only expected to work with C Ruby.
208
+ #
209
+ def self?.count_tdata_objects: (?Hash[untyped, Integer] result_hash) -> Hash[untyped, Integer]
210
+
211
+ # <!--
212
+ # rdoc-file=ext/objspace/lib/objspace.rb
213
+ # - dump(obj, output: :string)
214
+ # -->
215
+ # Dump the contents of a ruby object as JSON.
216
+ #
217
+ # *output* can be one of: <code>:stdout</code>, <code>:file</code>,
218
+ # <code>:string</code>, or IO object.
219
+ #
220
+ # * <code>:file</code> means dumping to a tempfile and returning corresponding
221
+ # File object;
222
+ # * <code>:stdout</code> means printing the dump and returning `nil`;
223
+ # * <code>:string</code> means returning a string with the dump;
224
+ # * if an instance of IO object is provided, the output goes there, and the
225
+ # object is returned.
226
+ #
227
+ # This method is only expected to work with C Ruby. This is an experimental
228
+ # method and is subject to change. In particular, the function signature and
229
+ # output format are not guaranteed to be compatible in future versions of ruby.
230
+ #
231
+ def self?.dump: (untyped obj, ?output: Symbol) -> (String | File | nil)
232
+
233
+ # <!--
234
+ # rdoc-file=ext/objspace/lib/objspace.rb
235
+ # - dump_all(output: :file, full: false, since: nil, shapes: true)
236
+ # -->
237
+ # Dump the contents of the ruby heap as JSON.
238
+ #
239
+ # *output* argument is the same as for #dump.
240
+ #
241
+ # *full* must be a boolean. If true, all heap slots are dumped including the
242
+ # empty ones (`T_NONE`).
243
+ #
244
+ # *since* must be a non-negative integer or `nil`.
245
+ #
246
+ # If *since* is a positive integer, only objects of that generation and newer
247
+ # generations are dumped. The current generation can be accessed using
248
+ # GC::count. Objects that were allocated without object allocation tracing
249
+ # enabled are ignored. See ::trace_object_allocations for more information and
250
+ # examples.
251
+ #
252
+ # If *since* is omitted or is `nil`, all objects are dumped.
253
+ #
254
+ # *shapes* must be a boolean or a non-negative integer.
255
+ #
256
+ # If *shapes* is a positive integer, only shapes newer than the provided shape
257
+ # id are dumped. The current shape_id can be accessed using
258
+ # <code>RubyVM.stat(:next_shape_id)</code>.
259
+ #
260
+ # If *shapes* is `false`, no shapes are dumped.
261
+ #
262
+ # To only dump objects allocated past a certain point you can combine *since*
263
+ # and *shapes*:
264
+ # ObjectSpace.trace_object_allocations
265
+ # GC.start
266
+ # gc_generation = GC.count
267
+ # shape_generation = RubyVM.stat(:next_shape_id)
268
+ # call_method_to_instrument
269
+ # ObjectSpace.dump_all(since: gc_generation, shapes: shape_generation)
270
+ #
271
+ # This method is only expected to work with C Ruby. This is an experimental
272
+ # method and is subject to change. In particular, the function signature and
273
+ # output format are not guaranteed to be compatible in future versions of ruby.
274
+ #
275
+ def self?.dump_all: (?since: Integer | nil, ?full: boolish, ?output: Symbol) -> (String | File | nil)
276
+
277
+ # <!--
278
+ # rdoc-file=ext/objspace/objspace.c
279
+ # - ObjectSpace.internal_class_of(obj) -> Class or Module
280
+ # -->
281
+ # MRI specific feature
282
+ # : Return internal class of obj.
283
+ #
284
+ # obj can be an instance of InternalObjectWrapper.
285
+ #
286
+ # Note that you should not use this method in your application.
287
+ #
288
+ def self?.internal_class_of: (untyped) -> Class
289
+
290
+ # <!--
291
+ # rdoc-file=ext/objspace/objspace.c
292
+ # - ObjectSpace.internal_super_of(cls) -> Class or Module
293
+ # -->
294
+ # MRI specific feature
295
+ # : Return internal super class of cls (Class or Module).
296
+ #
297
+ # obj can be an instance of InternalObjectWrapper.
298
+ #
299
+ # Note that you should not use this method in your application.
300
+ #
301
+ def self?.internal_super_of: (untyped) -> untyped
302
+
303
+ # <!--
304
+ # rdoc-file=ext/objspace/objspace.c
305
+ # - ObjectSpace.memsize_of(obj) -> Integer
306
+ # -->
307
+ # Return consuming memory size of obj in bytes.
308
+ #
309
+ # Note that the return size is incomplete. You need to deal with this
310
+ # information as only a **HINT**. Especially, the size of `T_DATA` may not be
311
+ # correct.
312
+ #
313
+ # This method is only expected to work with CRuby.
314
+ #
315
+ # From Ruby 3.2 with Variable Width Allocation, it returns the actual slot size
316
+ # used plus any additional memory allocated outside the slot (such as external
317
+ # strings, arrays, or hash tables).
318
+ #
319
+ def self?.memsize_of: (untyped) -> Integer
320
+
321
+ # <!--
322
+ # rdoc-file=ext/objspace/objspace.c
323
+ # - ObjectSpace.memsize_of_all([klass]) -> Integer
324
+ # -->
325
+ # Return consuming memory size of all living objects in bytes.
326
+ #
327
+ # If `klass` (should be Class object) is given, return the total memory size of
328
+ # instances of the given class.
329
+ #
330
+ # Note that the returned size is incomplete. You need to deal with this
331
+ # information as only a **HINT**. Especially, the size of `T_DATA` may not be
332
+ # correct.
333
+ #
334
+ # Note that this method does **NOT** return total malloc'ed memory size.
335
+ #
336
+ # This method can be defined by the following Ruby code:
337
+ #
338
+ # def memsize_of_all klass = false
339
+ # total = 0
340
+ # ObjectSpace.each_object{|e|
341
+ # total += ObjectSpace.memsize_of(e) if klass == false || e.kind_of?(klass)
342
+ # }
343
+ # total
344
+ # end
345
+ #
346
+ # This method is only expected to work with C Ruby.
347
+ #
348
+ def self?.memsize_of_all: (?Class) -> Integer
349
+
350
+ # <!--
351
+ # rdoc-file=ext/objspace/objspace.c
352
+ # - ObjectSpace.reachable_objects_from(obj) -> array or nil
353
+ # -->
354
+ # MRI specific feature
355
+ # : Return all reachable objects from `obj'.
356
+ #
357
+ #
358
+ # This method returns all reachable objects from `obj'.
359
+ #
360
+ # If `obj' has two or more references to the same object `x', then returned
361
+ # array only includes one `x' object.
362
+ #
363
+ # If `obj' is a non-markable (non-heap management) object such as true, false,
364
+ # nil, symbols and Fixnums (and Flonum) then it simply returns nil.
365
+ #
366
+ # If `obj' has references to an internal object, then it returns instances of
367
+ # ObjectSpace::InternalObjectWrapper class. This object contains a reference to
368
+ # an internal object and you can check the type of internal object with `type'
369
+ # method.
370
+ #
371
+ # If `obj' is instance of ObjectSpace::InternalObjectWrapper class, then this
372
+ # method returns all reachable object from an internal object, which is pointed
373
+ # by `obj'.
374
+ #
375
+ # With this method, you can find memory leaks.
376
+ #
377
+ # This method is only expected to work with C Ruby.
378
+ #
379
+ # Example:
380
+ # ObjectSpace.reachable_objects_from(['a', 'b', 'c'])
381
+ # #=> [Array, 'a', 'b', 'c']
382
+ #
383
+ # ObjectSpace.reachable_objects_from(['a', 'a', 'a'])
384
+ # #=> [Array, 'a', 'a', 'a'] # all 'a' strings have different object id
385
+ #
386
+ # ObjectSpace.reachable_objects_from([v = 'a', v, v])
387
+ # #=> [Array, 'a']
388
+ #
389
+ # ObjectSpace.reachable_objects_from(1)
390
+ # #=> nil # 1 is not markable (heap managed) object
391
+ #
392
+ def self?.reachable_objects_from: (untyped) -> (Array[untyped] | nil)
393
+
394
+ # <!--
395
+ # rdoc-file=ext/objspace/objspace.c
396
+ # - ObjectSpace.reachable_objects_from_root -> hash
397
+ # -->
398
+ # MRI specific feature
399
+ # : Return all reachable objects from root.
400
+ #
401
+ def self?.reachable_objects_from_root: () -> Hash[String, untyped]
402
+
403
+ # <!--
404
+ # rdoc-file=ext/objspace/object_tracing.c
405
+ # - trace_object_allocations { block }
406
+ # -->
407
+ # Starts tracing object allocations from the ObjectSpace extension module.
408
+ #
409
+ # For example:
410
+ #
411
+ # require 'objspace'
412
+ #
413
+ # class C
414
+ # include ObjectSpace
415
+ #
416
+ # def foo
417
+ # trace_object_allocations do
418
+ # obj = Object.new
419
+ # p "#{allocation_sourcefile(obj)}:#{allocation_sourceline(obj)}"
420
+ # end
421
+ # end
422
+ # end
423
+ #
424
+ # C.new.foo #=> "objtrace.rb:8"
425
+ #
426
+ # This example has included the ObjectSpace module to make it easier to read,
427
+ # but you can also use the ::trace_object_allocations notation (recommended).
428
+ #
429
+ # Note that this feature introduces a huge performance decrease and huge memory
430
+ # consumption.
431
+ #
432
+ def self.trace_object_allocations: () { (untyped) -> untyped } -> untyped
433
+
434
+ # <!--
435
+ # rdoc-file=ext/objspace/object_tracing.c
436
+ # - trace_object_allocations_clear
437
+ # -->
438
+ # Clear recorded tracing information.
439
+ #
440
+ def self?.trace_object_allocations_clear: () -> void
441
+
442
+ # <!--
443
+ # rdoc-file=ext/objspace/object_tracing.c
444
+ # - trace_object_allocations_debug_start
445
+ # -->
446
+ # Starts tracing object allocations for GC debugging. If you encounter the BUG
447
+ # "... is T_NONE" (and so on) on your application, please try this method at the
448
+ # beginning of your app.
449
+ #
450
+ def self?.trace_object_allocations_debug_start: () -> void
451
+
452
+ # <!--
453
+ # rdoc-file=ext/objspace/object_tracing.c
454
+ # - trace_object_allocations_start
455
+ # -->
456
+ # Starts tracing object allocations.
457
+ #
458
+ def self?.trace_object_allocations_start: () -> void
459
+
460
+ # <!--
461
+ # rdoc-file=ext/objspace/object_tracing.c
462
+ # - trace_object_allocations_stop
463
+ # -->
464
+ # Stop tracing object allocations.
465
+ #
466
+ # Note that if ::trace_object_allocations_start is called n-times, then tracing
467
+ # will stop after calling ::trace_object_allocations_stop n-times.
468
+ #
469
+ def self?.trace_object_allocations_stop: () -> void
470
+ end
@@ -0,0 +1,217 @@
1
+ # <!-- rdoc-file=lib/observer.rb -->
2
+ # The Observer pattern (also known as publish/subscribe) provides a simple
3
+ # mechanism for one object to inform a set of interested third-party objects
4
+ # when its state changes.
5
+ #
6
+ # ## Mechanism
7
+ #
8
+ # The notifying class mixes in the `Observable` module, which provides the
9
+ # methods for managing the associated observer objects.
10
+ #
11
+ # The observable object must:
12
+ # * assert that it has `#changed`
13
+ # * call `#notify_observers`
14
+ #
15
+ # An observer subscribes to updates using Observable#add_observer, which also
16
+ # specifies the method called via #notify_observers. The default method for
17
+ # #notify_observers is #update.
18
+ #
19
+ # ### Example
20
+ #
21
+ # The following example demonstrates this nicely. A `Ticker`, when run,
22
+ # continually receives the stock `Price` for its `@symbol`. A `Warner` is a
23
+ # general observer of the price, and two warners are demonstrated, a `WarnLow`
24
+ # and a `WarnHigh`, which print a warning if the price is below or above their
25
+ # set limits, respectively.
26
+ #
27
+ # The `update` callback allows the warners to run without being explicitly
28
+ # called. The system is set up with the `Ticker` and several observers, and the
29
+ # observers do their duty without the top-level code having to interfere.
30
+ #
31
+ # Note that the contract between publisher and subscriber (observable and
32
+ # observer) is not declared or enforced. The `Ticker` publishes a time and a
33
+ # price, and the warners receive that. But if you don't ensure that your
34
+ # contracts are correct, nothing else can warn you.
35
+ #
36
+ # require "observer"
37
+ #
38
+ # class Ticker ### Periodically fetch a stock price.
39
+ # include Observable
40
+ #
41
+ # def initialize(symbol)
42
+ # @symbol = symbol
43
+ # end
44
+ #
45
+ # def run
46
+ # last_price = nil
47
+ # loop do
48
+ # price = Price.fetch(@symbol)
49
+ # print "Current price: #{price}\n"
50
+ # if price != last_price
51
+ # changed # notify observers
52
+ # last_price = price
53
+ # notify_observers(Time.now, price)
54
+ # end
55
+ # sleep 1
56
+ # end
57
+ # end
58
+ # end
59
+ #
60
+ # class Price ### A mock class to fetch a stock price (60 - 140).
61
+ # def self.fetch(symbol)
62
+ # 60 + rand(80)
63
+ # end
64
+ # end
65
+ #
66
+ # class Warner ### An abstract observer of Ticker objects.
67
+ # def initialize(ticker, limit)
68
+ # @limit = limit
69
+ # ticker.add_observer(self)
70
+ # end
71
+ # end
72
+ #
73
+ # class WarnLow < Warner
74
+ # def update(time, price) # callback for observer
75
+ # if price < @limit
76
+ # print "--- #{time.to_s}: Price below #@limit: #{price}\n"
77
+ # end
78
+ # end
79
+ # end
80
+ #
81
+ # class WarnHigh < Warner
82
+ # def update(time, price) # callback for observer
83
+ # if price > @limit
84
+ # print "+++ #{time.to_s}: Price above #@limit: #{price}\n"
85
+ # end
86
+ # end
87
+ # end
88
+ #
89
+ # ticker = Ticker.new("MSFT")
90
+ # WarnLow.new(ticker, 80)
91
+ # WarnHigh.new(ticker, 120)
92
+ # ticker.run
93
+ #
94
+ # Produces:
95
+ #
96
+ # Current price: 83
97
+ # Current price: 75
98
+ # --- Sun Jun 09 00:10:25 CDT 2002: Price below 80: 75
99
+ # Current price: 90
100
+ # Current price: 134
101
+ # +++ Sun Jun 09 00:10:25 CDT 2002: Price above 120: 134
102
+ # Current price: 134
103
+ # Current price: 112
104
+ # Current price: 79
105
+ # --- Sun Jun 09 00:10:25 CDT 2002: Price below 80: 79
106
+ #
107
+ # ### Usage with procs
108
+ #
109
+ # The `#notify_observers` method can also be used with +proc+s by using the
110
+ # `:call` as `func` parameter.
111
+ #
112
+ # The following example illustrates the use of a lambda:
113
+ #
114
+ # require 'observer'
115
+ #
116
+ # class Ticker
117
+ # include Observable
118
+ #
119
+ # def run
120
+ # # logic to retrieve the price (here 77.0)
121
+ # changed
122
+ # notify_observers(77.0)
123
+ # end
124
+ # end
125
+ #
126
+ # ticker = Ticker.new
127
+ # warner = ->(price) { puts "New price received: #{price}" }
128
+ # ticker.add_observer(warner, :call)
129
+ # ticker.run
130
+ #
131
+ module Observable
132
+ # <!--
133
+ # rdoc-file=lib/observer.rb
134
+ # - add_observer(observer, func=:update)
135
+ # -->
136
+ # Add `observer` as an observer on this object. So that it will receive
137
+ # notifications.
138
+ #
139
+ # `observer`
140
+ # : the object that will be notified of changes.
141
+ #
142
+ # `func`
143
+ # : Symbol naming the method that will be called when this Observable has
144
+ # changes.
145
+ #
146
+ # This method must return true for `observer.respond_to?` and will receive
147
+ # `*arg` when #notify_observers is called, where `*arg` is the value passed
148
+ # to #notify_observers by this Observable
149
+ #
150
+ def add_observer: (untyped observer, ?Symbol func) -> void
151
+
152
+ # <!--
153
+ # rdoc-file=lib/observer.rb
154
+ # - changed(state=true)
155
+ # -->
156
+ # Set the changed state of this object. Notifications will be sent only if the
157
+ # changed `state` is `true`.
158
+ #
159
+ # `state`
160
+ # : Boolean indicating the changed state of this Observable.
161
+ #
162
+ def changed: (?bool state) -> void
163
+
164
+ # <!--
165
+ # rdoc-file=lib/observer.rb
166
+ # - changed?()
167
+ # -->
168
+ # Returns true if this object's state has been changed since the last
169
+ # #notify_observers call.
170
+ #
171
+ def changed?: () -> bool
172
+
173
+ # <!--
174
+ # rdoc-file=lib/observer.rb
175
+ # - count_observers()
176
+ # -->
177
+ # Return the number of observers associated with this object.
178
+ #
179
+ def count_observers: () -> Integer
180
+
181
+ # <!--
182
+ # rdoc-file=lib/observer.rb
183
+ # - delete_observer(observer)
184
+ # -->
185
+ # Remove `observer` as an observer on this object so that it will no longer
186
+ # receive notifications.
187
+ #
188
+ # `observer`
189
+ # : An observer of this Observable
190
+ #
191
+ def delete_observer: (untyped observer) -> void
192
+
193
+ # <!--
194
+ # rdoc-file=lib/observer.rb
195
+ # - delete_observers()
196
+ # -->
197
+ # Remove all observers associated with this object.
198
+ #
199
+ def delete_observers: () -> void
200
+
201
+ # <!--
202
+ # rdoc-file=lib/observer.rb
203
+ # - notify_observers(*arg)
204
+ # -->
205
+ # Notify observers of a change in state **if** this object's changed state is
206
+ # `true`.
207
+ #
208
+ # This will invoke the method named in #add_observer, passing `*arg`. The
209
+ # changed state is then set to `false`.
210
+ #
211
+ # `*arg`
212
+ # : Any arguments to pass to the observers.
213
+ #
214
+ def notify_observers: (*untyped arg) -> void
215
+
216
+ VERSION: String
217
+ end
@@ -0,0 +1,4 @@
1
+ dependencies:
2
+ - name: tempfile
3
+ - name: uri
4
+ - name: stringio