rbs-relaxed 3.9.0.1

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 (484) hide show
  1. checksums.yaml +7 -0
  2. data/.github/dependabot.yml +22 -0
  3. data/.github/workflows/comments.yml +35 -0
  4. data/.github/workflows/dependabot.yml +30 -0
  5. data/.github/workflows/ruby.yml +82 -0
  6. data/.github/workflows/typecheck.yml +38 -0
  7. data/.github/workflows/windows.yml +43 -0
  8. data/.gitignore +23 -0
  9. data/.rubocop.yml +68 -0
  10. data/BSDL +22 -0
  11. data/CHANGELOG.md +1868 -0
  12. data/COPYING +56 -0
  13. data/README.md +203 -0
  14. data/Rakefile +417 -0
  15. data/Steepfile +44 -0
  16. data/config.yml +313 -0
  17. data/core/array.rbs +4062 -0
  18. data/core/basic_object.rbs +375 -0
  19. data/core/binding.rbs +150 -0
  20. data/core/builtin.rbs +277 -0
  21. data/core/class.rbs +220 -0
  22. data/core/comparable.rbs +171 -0
  23. data/core/complex.rbs +786 -0
  24. data/core/constants.rbs +96 -0
  25. data/core/data.rbs +415 -0
  26. data/core/dir.rbs +981 -0
  27. data/core/encoding.rbs +1371 -0
  28. data/core/enumerable.rbs +2405 -0
  29. data/core/enumerator/product.rbs +92 -0
  30. data/core/enumerator.rbs +630 -0
  31. data/core/env.rbs +6 -0
  32. data/core/errno.rbs +673 -0
  33. data/core/errors.rbs +760 -0
  34. data/core/exception.rbs +485 -0
  35. data/core/false_class.rbs +82 -0
  36. data/core/fiber.rbs +550 -0
  37. data/core/fiber_error.rbs +11 -0
  38. data/core/file.rbs +2936 -0
  39. data/core/file_test.rbs +331 -0
  40. data/core/float.rbs +1151 -0
  41. data/core/gc.rbs +644 -0
  42. data/core/global_variables.rbs +184 -0
  43. data/core/hash.rbs +1861 -0
  44. data/core/integer.rbs +1413 -0
  45. data/core/io/buffer.rbs +984 -0
  46. data/core/io/wait.rbs +70 -0
  47. data/core/io.rbs +3406 -0
  48. data/core/kernel.rbs +3096 -0
  49. data/core/marshal.rbs +207 -0
  50. data/core/match_data.rbs +635 -0
  51. data/core/math.rbs +729 -0
  52. data/core/method.rbs +386 -0
  53. data/core/module.rbs +1704 -0
  54. data/core/nil_class.rbs +209 -0
  55. data/core/numeric.rbs +818 -0
  56. data/core/object.rbs +110 -0
  57. data/core/object_space/weak_key_map.rbs +166 -0
  58. data/core/object_space.rbs +190 -0
  59. data/core/proc.rbs +868 -0
  60. data/core/process.rbs +2296 -0
  61. data/core/ractor.rbs +1068 -0
  62. data/core/random.rbs +237 -0
  63. data/core/range.rbs +1107 -0
  64. data/core/rational.rbs +531 -0
  65. data/core/rb_config.rbs +88 -0
  66. data/core/rbs/unnamed/argf.rbs +1229 -0
  67. data/core/rbs/unnamed/env_class.rbs +1209 -0
  68. data/core/rbs/unnamed/random.rbs +293 -0
  69. data/core/refinement.rbs +59 -0
  70. data/core/regexp.rbs +1930 -0
  71. data/core/ruby_vm.rbs +765 -0
  72. data/core/rubygems/basic_specification.rbs +6 -0
  73. data/core/rubygems/config_file.rbs +38 -0
  74. data/core/rubygems/dependency_installer.rbs +6 -0
  75. data/core/rubygems/errors.rbs +176 -0
  76. data/core/rubygems/installer.rbs +15 -0
  77. data/core/rubygems/path_support.rbs +6 -0
  78. data/core/rubygems/platform.rbs +7 -0
  79. data/core/rubygems/request_set.rbs +49 -0
  80. data/core/rubygems/requirement.rbs +148 -0
  81. data/core/rubygems/rubygems.rbs +1171 -0
  82. data/core/rubygems/source_list.rbs +15 -0
  83. data/core/rubygems/specification.rbs +23 -0
  84. data/core/rubygems/stream_ui.rbs +5 -0
  85. data/core/rubygems/uninstaller.rbs +10 -0
  86. data/core/rubygems/version.rbs +294 -0
  87. data/core/set.rbs +621 -0
  88. data/core/signal.rbs +100 -0
  89. data/core/string.rbs +3583 -0
  90. data/core/struct.rbs +667 -0
  91. data/core/symbol.rbs +475 -0
  92. data/core/thread.rbs +1765 -0
  93. data/core/thread_group.rbs +79 -0
  94. data/core/time.rbs +1762 -0
  95. data/core/trace_point.rbs +477 -0
  96. data/core/true_class.rbs +98 -0
  97. data/core/unbound_method.rbs +329 -0
  98. data/core/warning.rbs +87 -0
  99. data/docs/CONTRIBUTING.md +106 -0
  100. data/docs/architecture.md +110 -0
  101. data/docs/collection.md +192 -0
  102. data/docs/data_and_struct.md +86 -0
  103. data/docs/gem.md +57 -0
  104. data/docs/rbs_by_example.md +309 -0
  105. data/docs/repo.md +125 -0
  106. data/docs/sigs.md +167 -0
  107. data/docs/stdlib.md +147 -0
  108. data/docs/syntax.md +910 -0
  109. data/docs/tools.md +17 -0
  110. data/exe/rbs +7 -0
  111. data/ext/rbs_extension/extconf.rb +15 -0
  112. data/ext/rbs_extension/lexer.c +2728 -0
  113. data/ext/rbs_extension/lexer.h +179 -0
  114. data/ext/rbs_extension/lexer.re +147 -0
  115. data/ext/rbs_extension/lexstate.c +175 -0
  116. data/ext/rbs_extension/location.c +325 -0
  117. data/ext/rbs_extension/location.h +85 -0
  118. data/ext/rbs_extension/main.c +33 -0
  119. data/ext/rbs_extension/parser.c +2973 -0
  120. data/ext/rbs_extension/parser.h +18 -0
  121. data/ext/rbs_extension/parserstate.c +397 -0
  122. data/ext/rbs_extension/parserstate.h +163 -0
  123. data/ext/rbs_extension/rbs_extension.h +31 -0
  124. data/ext/rbs_extension/unescape.c +32 -0
  125. data/goodcheck.yml +91 -0
  126. data/include/rbs/constants.h +82 -0
  127. data/include/rbs/ruby_objs.h +72 -0
  128. data/include/rbs/util/rbs_constant_pool.h +219 -0
  129. data/include/rbs.h +7 -0
  130. data/lib/rbs/ancestor_graph.rb +92 -0
  131. data/lib/rbs/annotate/annotations.rb +199 -0
  132. data/lib/rbs/annotate/formatter.rb +92 -0
  133. data/lib/rbs/annotate/rdoc_annotator.rb +400 -0
  134. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  135. data/lib/rbs/annotate.rb +8 -0
  136. data/lib/rbs/ast/annotation.rb +29 -0
  137. data/lib/rbs/ast/comment.rb +29 -0
  138. data/lib/rbs/ast/declarations.rb +467 -0
  139. data/lib/rbs/ast/directives.rb +49 -0
  140. data/lib/rbs/ast/members.rb +451 -0
  141. data/lib/rbs/ast/type_param.rb +225 -0
  142. data/lib/rbs/ast/visitor.rb +137 -0
  143. data/lib/rbs/buffer.rb +67 -0
  144. data/lib/rbs/builtin_names.rb +58 -0
  145. data/lib/rbs/cli/colored_io.rb +48 -0
  146. data/lib/rbs/cli/diff.rb +83 -0
  147. data/lib/rbs/cli/validate.rb +357 -0
  148. data/lib/rbs/cli.rb +1223 -0
  149. data/lib/rbs/collection/cleaner.rb +38 -0
  150. data/lib/rbs/collection/config/lockfile.rb +92 -0
  151. data/lib/rbs/collection/config/lockfile_generator.rb +218 -0
  152. data/lib/rbs/collection/config.rb +81 -0
  153. data/lib/rbs/collection/installer.rb +32 -0
  154. data/lib/rbs/collection/sources/base.rb +14 -0
  155. data/lib/rbs/collection/sources/git.rb +258 -0
  156. data/lib/rbs/collection/sources/local.rb +81 -0
  157. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  158. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  159. data/lib/rbs/collection/sources.rb +38 -0
  160. data/lib/rbs/collection.rb +16 -0
  161. data/lib/rbs/constant.rb +28 -0
  162. data/lib/rbs/definition.rb +401 -0
  163. data/lib/rbs/definition_builder/ancestor_builder.rb +620 -0
  164. data/lib/rbs/definition_builder/method_builder.rb +254 -0
  165. data/lib/rbs/definition_builder.rb +845 -0
  166. data/lib/rbs/diff.rb +125 -0
  167. data/lib/rbs/environment/use_map.rb +77 -0
  168. data/lib/rbs/environment.rb +829 -0
  169. data/lib/rbs/environment_loader.rb +173 -0
  170. data/lib/rbs/environment_walker.rb +155 -0
  171. data/lib/rbs/errors.rb +645 -0
  172. data/lib/rbs/factory.rb +18 -0
  173. data/lib/rbs/file_finder.rb +28 -0
  174. data/lib/rbs/location_aux.rb +138 -0
  175. data/lib/rbs/locator.rb +243 -0
  176. data/lib/rbs/method_type.rb +143 -0
  177. data/lib/rbs/namespace.rb +125 -0
  178. data/lib/rbs/parser/lex_result.rb +15 -0
  179. data/lib/rbs/parser/token.rb +23 -0
  180. data/lib/rbs/parser_aux.rb +114 -0
  181. data/lib/rbs/prototype/helpers.rb +140 -0
  182. data/lib/rbs/prototype/node_usage.rb +99 -0
  183. data/lib/rbs/prototype/rb.rb +840 -0
  184. data/lib/rbs/prototype/rbi.rb +641 -0
  185. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  186. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  187. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  188. data/lib/rbs/prototype/runtime.rb +667 -0
  189. data/lib/rbs/repository.rb +127 -0
  190. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  191. data/lib/rbs/resolver/type_name_resolver.rb +91 -0
  192. data/lib/rbs/sorter.rb +198 -0
  193. data/lib/rbs/substitution.rb +83 -0
  194. data/lib/rbs/subtractor.rb +201 -0
  195. data/lib/rbs/test/errors.rb +80 -0
  196. data/lib/rbs/test/guaranteed.rb +30 -0
  197. data/lib/rbs/test/hook.rb +212 -0
  198. data/lib/rbs/test/observer.rb +19 -0
  199. data/lib/rbs/test/setup.rb +84 -0
  200. data/lib/rbs/test/setup_helper.rb +50 -0
  201. data/lib/rbs/test/tester.rb +167 -0
  202. data/lib/rbs/test/type_check.rb +435 -0
  203. data/lib/rbs/test.rb +112 -0
  204. data/lib/rbs/type_alias_dependency.rb +100 -0
  205. data/lib/rbs/type_alias_regularity.rb +126 -0
  206. data/lib/rbs/type_name.rb +109 -0
  207. data/lib/rbs/types.rb +1596 -0
  208. data/lib/rbs/unit_test/convertibles.rb +176 -0
  209. data/lib/rbs/unit_test/spy.rb +138 -0
  210. data/lib/rbs/unit_test/type_assertions.rb +347 -0
  211. data/lib/rbs/unit_test/with_aliases.rb +143 -0
  212. data/lib/rbs/unit_test.rb +6 -0
  213. data/lib/rbs/validator.rb +186 -0
  214. data/lib/rbs/variance_calculator.rb +189 -0
  215. data/lib/rbs/vendorer.rb +71 -0
  216. data/lib/rbs/version.rb +5 -0
  217. data/lib/rbs/writer.rb +424 -0
  218. data/lib/rbs.rb +94 -0
  219. data/lib/rdoc/discover.rb +20 -0
  220. data/lib/rdoc_plugin/parser.rb +163 -0
  221. data/rbs-relaxed.gemspec +48 -0
  222. data/schema/annotation.json +14 -0
  223. data/schema/comment.json +26 -0
  224. data/schema/decls.json +326 -0
  225. data/schema/function.json +87 -0
  226. data/schema/location.json +56 -0
  227. data/schema/members.json +266 -0
  228. data/schema/methodType.json +50 -0
  229. data/schema/typeParam.json +36 -0
  230. data/schema/types.json +317 -0
  231. data/sig/ancestor_builder.rbs +163 -0
  232. data/sig/ancestor_graph.rbs +60 -0
  233. data/sig/annotate/annotations.rbs +102 -0
  234. data/sig/annotate/formatter.rbs +24 -0
  235. data/sig/annotate/rdoc_annotater.rbs +82 -0
  236. data/sig/annotate/rdoc_source.rbs +30 -0
  237. data/sig/annotation.rbs +27 -0
  238. data/sig/buffer.rbs +32 -0
  239. data/sig/builtin_names.rbs +44 -0
  240. data/sig/cli/colored_io.rbs +15 -0
  241. data/sig/cli/diff.rbs +21 -0
  242. data/sig/cli/validate.rbs +43 -0
  243. data/sig/cli.rbs +87 -0
  244. data/sig/collection/cleaner.rbs +13 -0
  245. data/sig/collection/config/lockfile.rbs +74 -0
  246. data/sig/collection/config/lockfile_generator.rbs +66 -0
  247. data/sig/collection/config.rbs +46 -0
  248. data/sig/collection/installer.rbs +17 -0
  249. data/sig/collection/sources.rbs +214 -0
  250. data/sig/collection.rbs +4 -0
  251. data/sig/comment.rbs +26 -0
  252. data/sig/constant.rbs +21 -0
  253. data/sig/declarations.rbs +267 -0
  254. data/sig/definition.rbs +173 -0
  255. data/sig/definition_builder.rbs +165 -0
  256. data/sig/diff.rbs +28 -0
  257. data/sig/directives.rbs +77 -0
  258. data/sig/environment.rbs +279 -0
  259. data/sig/environment_loader.rbs +111 -0
  260. data/sig/environment_walker.rbs +65 -0
  261. data/sig/errors.rbs +405 -0
  262. data/sig/factory.rbs +5 -0
  263. data/sig/file_finder.rbs +28 -0
  264. data/sig/location.rbs +110 -0
  265. data/sig/locator.rbs +58 -0
  266. data/sig/manifest.yaml +7 -0
  267. data/sig/members.rbs +258 -0
  268. data/sig/method_builder.rbs +84 -0
  269. data/sig/method_types.rbs +58 -0
  270. data/sig/namespace.rbs +146 -0
  271. data/sig/parser.rbs +100 -0
  272. data/sig/prototype/helpers.rbs +27 -0
  273. data/sig/prototype/node_usage.rbs +20 -0
  274. data/sig/prototype/rb.rbs +96 -0
  275. data/sig/prototype/rbi.rbs +75 -0
  276. data/sig/prototype/runtime.rbs +182 -0
  277. data/sig/rbs.rbs +21 -0
  278. data/sig/rdoc/rbs.rbs +67 -0
  279. data/sig/repository.rbs +85 -0
  280. data/sig/resolver/constant_resolver.rbs +92 -0
  281. data/sig/resolver/context.rbs +34 -0
  282. data/sig/resolver/type_name_resolver.rbs +35 -0
  283. data/sig/shims/bundler.rbs +38 -0
  284. data/sig/shims/enumerable.rbs +5 -0
  285. data/sig/shims/rubygems.rbs +19 -0
  286. data/sig/sorter.rbs +41 -0
  287. data/sig/substitution.rbs +48 -0
  288. data/sig/subtractor.rbs +37 -0
  289. data/sig/test/errors.rbs +52 -0
  290. data/sig/test/guranteed.rbs +9 -0
  291. data/sig/test/type_check.rbs +19 -0
  292. data/sig/test.rbs +82 -0
  293. data/sig/type_alias_dependency.rbs +53 -0
  294. data/sig/type_alias_regularity.rbs +98 -0
  295. data/sig/type_param.rbs +110 -0
  296. data/sig/typename.rbs +79 -0
  297. data/sig/types.rbs +579 -0
  298. data/sig/unit_test/convertibles.rbs +154 -0
  299. data/sig/unit_test/spy.rbs +30 -0
  300. data/sig/unit_test/type_assertions.rbs +196 -0
  301. data/sig/unit_test/with_aliases.rbs +136 -0
  302. data/sig/use_map.rbs +35 -0
  303. data/sig/util.rbs +9 -0
  304. data/sig/validator.rbs +63 -0
  305. data/sig/variance_calculator.rbs +87 -0
  306. data/sig/vendorer.rbs +51 -0
  307. data/sig/version.rbs +3 -0
  308. data/sig/visitor.rbs +47 -0
  309. data/sig/writer.rbs +127 -0
  310. data/src/constants.c +153 -0
  311. data/src/ruby_objs.c +795 -0
  312. data/src/util/rbs_constant_pool.c +342 -0
  313. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  314. data/stdlib/abbrev/0/array.rbs +26 -0
  315. data/stdlib/base64/0/base64.rbs +355 -0
  316. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  317. data/stdlib/bigdecimal/0/big_decimal.rbs +1629 -0
  318. data/stdlib/bigdecimal-math/0/big_math.rbs +119 -0
  319. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  320. data/stdlib/cgi/0/core.rbs +1285 -0
  321. data/stdlib/cgi/0/manifest.yaml +3 -0
  322. data/stdlib/coverage/0/coverage.rbs +263 -0
  323. data/stdlib/csv/0/csv.rbs +3776 -0
  324. data/stdlib/csv/0/manifest.yaml +3 -0
  325. data/stdlib/date/0/date.rbs +1585 -0
  326. data/stdlib/date/0/date_time.rbs +616 -0
  327. data/stdlib/date/0/time.rbs +26 -0
  328. data/stdlib/dbm/0/dbm.rbs +421 -0
  329. data/stdlib/delegate/0/delegator.rbs +184 -0
  330. data/stdlib/delegate/0/kernel.rbs +47 -0
  331. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  332. data/stdlib/did_you_mean/0/did_you_mean.rbs +343 -0
  333. data/stdlib/digest/0/digest.rbs +577 -0
  334. data/stdlib/erb/0/erb.rbs +532 -0
  335. data/stdlib/etc/0/etc.rbs +865 -0
  336. data/stdlib/fileutils/0/fileutils.rbs +1734 -0
  337. data/stdlib/find/0/find.rbs +49 -0
  338. data/stdlib/forwardable/0/forwardable.rbs +268 -0
  339. data/stdlib/io-console/0/io-console.rbs +414 -0
  340. data/stdlib/ipaddr/0/ipaddr.rbs +428 -0
  341. data/stdlib/json/0/json.rbs +1916 -0
  342. data/stdlib/kconv/0/kconv.rbs +166 -0
  343. data/stdlib/logger/0/formatter.rbs +45 -0
  344. data/stdlib/logger/0/log_device.rbs +100 -0
  345. data/stdlib/logger/0/logger.rbs +796 -0
  346. data/stdlib/logger/0/manifest.yaml +2 -0
  347. data/stdlib/logger/0/period.rbs +17 -0
  348. data/stdlib/logger/0/severity.rbs +34 -0
  349. data/stdlib/minitest/0/kernel.rbs +42 -0
  350. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  351. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  352. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  353. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  354. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  355. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  356. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  357. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  358. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  359. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  360. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  361. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  362. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  363. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  364. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  365. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  366. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  367. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  368. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  369. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  370. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  371. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  372. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  373. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  374. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  375. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  376. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  377. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  378. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  379. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  380. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  381. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  382. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  383. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  384. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  385. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  386. data/stdlib/minitest/0/minitest.rbs +115 -0
  387. data/stdlib/monitor/0/monitor.rbs +363 -0
  388. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  389. data/stdlib/net-http/0/manifest.yaml +3 -0
  390. data/stdlib/net-http/0/net-http.rbs +5552 -0
  391. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  392. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  393. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  394. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  395. data/stdlib/nkf/0/nkf.rbs +402 -0
  396. data/stdlib/objspace/0/objspace.rbs +487 -0
  397. data/stdlib/observable/0/observable.rbs +217 -0
  398. data/stdlib/open-uri/0/manifest.yaml +4 -0
  399. data/stdlib/open-uri/0/open-uri.rbs +393 -0
  400. data/stdlib/open3/0/open3.rbs +147 -0
  401. data/stdlib/openssl/0/manifest.yaml +3 -0
  402. data/stdlib/openssl/0/openssl.rbs +12113 -0
  403. data/stdlib/optparse/0/optparse.rbs +1725 -0
  404. data/stdlib/pathname/0/pathname.rbs +1406 -0
  405. data/stdlib/pp/0/manifest.yaml +2 -0
  406. data/stdlib/pp/0/pp.rbs +300 -0
  407. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  408. data/stdlib/pstore/0/pstore.rbs +603 -0
  409. data/stdlib/psych/0/core_ext.rbs +12 -0
  410. data/stdlib/psych/0/dbm.rbs +237 -0
  411. data/stdlib/psych/0/manifest.yaml +3 -0
  412. data/stdlib/psych/0/psych.rbs +402 -0
  413. data/stdlib/psych/0/store.rbs +59 -0
  414. data/stdlib/pty/0/pty.rbs +237 -0
  415. data/stdlib/rdoc/0/code_object.rbs +51 -0
  416. data/stdlib/rdoc/0/comment.rbs +59 -0
  417. data/stdlib/rdoc/0/context.rbs +153 -0
  418. data/stdlib/rdoc/0/markup.rbs +117 -0
  419. data/stdlib/rdoc/0/parser.rbs +56 -0
  420. data/stdlib/rdoc/0/rdoc.rbs +391 -0
  421. data/stdlib/rdoc/0/ri.rbs +17 -0
  422. data/stdlib/rdoc/0/store.rbs +48 -0
  423. data/stdlib/rdoc/0/top_level.rbs +97 -0
  424. data/stdlib/resolv/0/manifest.yaml +3 -0
  425. data/stdlib/resolv/0/resolv.rbs +1830 -0
  426. data/stdlib/ripper/0/ripper.rbs +1648 -0
  427. data/stdlib/securerandom/0/securerandom.rbs +62 -0
  428. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  429. data/stdlib/singleton/0/singleton.rbs +131 -0
  430. data/stdlib/socket/0/addrinfo.rbs +666 -0
  431. data/stdlib/socket/0/basic_socket.rbs +590 -0
  432. data/stdlib/socket/0/constants.rbs +2295 -0
  433. data/stdlib/socket/0/ip_socket.rbs +92 -0
  434. data/stdlib/socket/0/socket.rbs +4157 -0
  435. data/stdlib/socket/0/socket_error.rbs +5 -0
  436. data/stdlib/socket/0/tcp_server.rbs +192 -0
  437. data/stdlib/socket/0/tcp_socket.rbs +79 -0
  438. data/stdlib/socket/0/udp_socket.rbs +133 -0
  439. data/stdlib/socket/0/unix_server.rbs +169 -0
  440. data/stdlib/socket/0/unix_socket.rbs +172 -0
  441. data/stdlib/stringio/0/stringio.rbs +567 -0
  442. data/stdlib/strscan/0/string_scanner.rbs +1627 -0
  443. data/stdlib/tempfile/0/tempfile.rbs +479 -0
  444. data/stdlib/time/0/time.rbs +432 -0
  445. data/stdlib/timeout/0/timeout.rbs +81 -0
  446. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  447. data/stdlib/tsort/0/cyclic.rbs +5 -0
  448. data/stdlib/tsort/0/interfaces.rbs +20 -0
  449. data/stdlib/tsort/0/tsort.rbs +409 -0
  450. data/stdlib/uri/0/common.rbs +582 -0
  451. data/stdlib/uri/0/file.rbs +118 -0
  452. data/stdlib/uri/0/ftp.rbs +13 -0
  453. data/stdlib/uri/0/generic.rbs +1108 -0
  454. data/stdlib/uri/0/http.rbs +104 -0
  455. data/stdlib/uri/0/https.rbs +14 -0
  456. data/stdlib/uri/0/ldap.rbs +230 -0
  457. data/stdlib/uri/0/ldaps.rbs +14 -0
  458. data/stdlib/uri/0/mailto.rbs +92 -0
  459. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  460. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  461. data/stdlib/uri/0/ws.rbs +13 -0
  462. data/stdlib/uri/0/wss.rbs +9 -0
  463. data/stdlib/yaml/0/manifest.yaml +2 -0
  464. data/stdlib/yaml/0/yaml.rbs +1 -0
  465. data/stdlib/zlib/0/buf_error.rbs +10 -0
  466. data/stdlib/zlib/0/data_error.rbs +10 -0
  467. data/stdlib/zlib/0/deflate.rbs +210 -0
  468. data/stdlib/zlib/0/error.rbs +20 -0
  469. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  470. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  471. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  472. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  473. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  474. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  475. data/stdlib/zlib/0/gzip_writer.rbs +166 -0
  476. data/stdlib/zlib/0/inflate.rbs +180 -0
  477. data/stdlib/zlib/0/mem_error.rbs +10 -0
  478. data/stdlib/zlib/0/need_dict.rbs +13 -0
  479. data/stdlib/zlib/0/stream_end.rbs +11 -0
  480. data/stdlib/zlib/0/stream_error.rbs +11 -0
  481. data/stdlib/zlib/0/version_error.rbs +11 -0
  482. data/stdlib/zlib/0/zlib.rbs +449 -0
  483. data/stdlib/zlib/0/zstream.rbs +200 -0
  484. metadata +532 -0
@@ -0,0 +1,487 @@
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 `require 'objspace'` 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_nodes([result_hash]) -> hash
132
+ # -->
133
+ # Counts nodes for each node type.
134
+ #
135
+ # This method is only for MRI developers interested in performance and memory
136
+ # usage of Ruby programs.
137
+ #
138
+ # It returns a hash as:
139
+ #
140
+ # {:NODE_METHOD=>2027, :NODE_FBODY=>1927, :NODE_CFUNC=>1798, ...}
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
+ # Note: The contents of the returned hash is implementation defined. It may be
146
+ # changed in future.
147
+ #
148
+ # This method is only expected to work with C Ruby.
149
+ #
150
+ def self?.count_nodes: (?Hash[Symbol, Integer] result_hash) -> Hash[Symbol, Integer]
151
+
152
+ # <!--
153
+ # rdoc-file=ext/objspace/objspace.c
154
+ # - ObjectSpace.count_objects_size([result_hash]) -> hash
155
+ # -->
156
+ # Counts objects size (in bytes) for each type.
157
+ #
158
+ # Note that this information is incomplete. You need to deal with this
159
+ # information as only a **HINT**. Especially, total size of T_DATA may be
160
+ # wrong.
161
+ #
162
+ # It returns a hash as:
163
+ # {:TOTAL=>1461154, :T_CLASS=>158280, :T_MODULE=>20672, :T_STRING=>527249, ...}
164
+ #
165
+ # If the optional argument, result_hash, is given, it is overwritten and
166
+ # returned. This is intended to avoid probe effect.
167
+ #
168
+ # The contents of the returned hash is implementation defined. It may be changed
169
+ # in future.
170
+ #
171
+ # This method is only expected to work with C Ruby.
172
+ #
173
+ def self?.count_objects_size: (?Hash[Symbol, Integer] result_hash) -> Hash[Symbol, Integer]
174
+
175
+ # <!--
176
+ # rdoc-file=ext/objspace/objspace.c
177
+ # - ObjectSpace.count_symbols([result_hash]) -> hash
178
+ # -->
179
+ # Counts symbols for each Symbol type.
180
+ #
181
+ # This method is only for MRI developers interested in performance and memory
182
+ # usage of Ruby programs.
183
+ #
184
+ # If the optional argument, result_hash, is given, it is overwritten and
185
+ # returned. This is intended to avoid probe effect.
186
+ #
187
+ # Note: The contents of the returned hash is implementation defined. It may be
188
+ # changed in future.
189
+ #
190
+ # This method is only expected to work with C Ruby.
191
+ #
192
+ # On this version of MRI, they have 3 types of Symbols (and 1 total counts).
193
+ #
194
+ # * mortal_dynamic_symbol: GC target symbols (collected by GC)
195
+ # * immortal_dynamic_symbol: Immortal symbols promoted from dynamic symbols (do not collected by GC)
196
+ # * immortal_static_symbol: Immortal symbols (do not collected by GC)
197
+ # * immortal_symbol: total immortal symbols (immortal_dynamic_symbol+immortal_static_symbol)
198
+ #
199
+ def self?.count_symbols: (?Hash[Symbol, Integer] result_hash) -> Hash[Symbol, Integer]
200
+
201
+ # <!--
202
+ # rdoc-file=ext/objspace/objspace.c
203
+ # - ObjectSpace.count_tdata_objects([result_hash]) -> hash
204
+ # -->
205
+ # Counts objects for each `T_DATA` type.
206
+ #
207
+ # This method is only for MRI developers interested in performance and memory
208
+ # usage of Ruby programs.
209
+ #
210
+ # It returns a hash as:
211
+ #
212
+ # {RubyVM::InstructionSequence=>504, :parser=>5, :barrier=>6,
213
+ # :mutex=>6, Proc=>60, RubyVM::Env=>57, Mutex=>1, Encoding=>99,
214
+ # ThreadGroup=>1, Binding=>1, Thread=>1, RubyVM=>1, :iseq=>1,
215
+ # Random=>1, ARGF.class=>1, Data=>1, :autoload=>3, Time=>2}
216
+ # # T_DATA objects existing at startup on r32276.
217
+ #
218
+ # If the optional argument, result_hash, is given, it is overwritten and
219
+ # returned. This is intended to avoid probe effect.
220
+ #
221
+ # The contents of the returned hash is implementation specific and may change in
222
+ # the future.
223
+ #
224
+ # In this version, keys are Class object or Symbol object.
225
+ #
226
+ # If object is kind of normal (accessible) object, the key is Class object. If
227
+ # object is not a kind of normal (internal) object, the key is symbol name,
228
+ # registered by rb_data_type_struct.
229
+ #
230
+ # This method is only expected to work with C Ruby.
231
+ #
232
+ def self?.count_tdata_objects: (?Hash[untyped, Integer] result_hash) -> Hash[untyped, Integer]
233
+
234
+ # <!--
235
+ # rdoc-file=ext/objspace/lib/objspace.rb
236
+ # - dump(obj, output: :string)
237
+ # -->
238
+ # Dump the contents of a ruby object as JSON.
239
+ #
240
+ # *output* can be one of: `:stdout`, `:file`, `:string`, or IO object.
241
+ #
242
+ # * `:file` means dumping to a tempfile and returning corresponding File
243
+ # object;
244
+ # * `:stdout` means printing the dump and returning `nil`;
245
+ # * `:string` means returning a string with the dump;
246
+ # * if an instance of IO object is provided, the output goes there, and the
247
+ # object is returned.
248
+ #
249
+ # This method is only expected to work with C Ruby. This is an experimental
250
+ # method and is subject to change. In particular, the function signature and
251
+ # output format are not guaranteed to be compatible in future versions of ruby.
252
+ #
253
+ def self?.dump: (untyped obj, ?output: Symbol) -> (String | File | nil)
254
+
255
+ # <!--
256
+ # rdoc-file=ext/objspace/lib/objspace.rb
257
+ # - dump_all(output: :file, full: false, since: nil, shapes: true)
258
+ # -->
259
+ # Dump the contents of the ruby heap as JSON.
260
+ #
261
+ # *output* argument is the same as for #dump.
262
+ #
263
+ # *full* must be a boolean. If true, all heap slots are dumped including the
264
+ # empty ones (`T_NONE`).
265
+ #
266
+ # *since* must be a non-negative integer or `nil`.
267
+ #
268
+ # If *since* is a positive integer, only objects of that generation and newer
269
+ # generations are dumped. The current generation can be accessed using
270
+ # GC::count. Objects that were allocated without object allocation tracing
271
+ # enabled are ignored. See ::trace_object_allocations for more information and
272
+ # examples.
273
+ #
274
+ # If *since* is omitted or is `nil`, all objects are dumped.
275
+ #
276
+ # *shapes* must be a boolean or a non-negative integer.
277
+ #
278
+ # If *shapes* is a positive integer, only shapes newer than the provided shape
279
+ # id are dumped. The current shape_id can be accessed using
280
+ # `RubyVM.stat(:next_shape_id)`.
281
+ #
282
+ # If *shapes* is `false`, no shapes are dumped.
283
+ #
284
+ # To only dump objects allocated past a certain point you can combine *since*
285
+ # and *shapes*:
286
+ # ObjectSpace.trace_object_allocations
287
+ # GC.start
288
+ # gc_generation = GC.count
289
+ # shape_generation = RubyVM.stat(:next_shape_id)
290
+ # call_method_to_instrument
291
+ # ObjectSpace.dump_all(since: gc_generation, shapes: shape_generation)
292
+ #
293
+ # This method is only expected to work with C Ruby. This is an experimental
294
+ # method and is subject to change. In particular, the function signature and
295
+ # output format are not guaranteed to be compatible in future versions of ruby.
296
+ #
297
+ def self?.dump_all: (?since: Integer | nil, ?full: boolish, ?output: Symbol) -> (String | File | nil)
298
+
299
+ # <!--
300
+ # rdoc-file=ext/objspace/objspace.c
301
+ # - ObjectSpace.internal_class_of(obj) -> Class or Module
302
+ # -->
303
+ # MRI specific feature
304
+ # : Return internal class of obj.
305
+ #
306
+ # obj can be an instance of InternalObjectWrapper.
307
+ #
308
+ # Note that you should not use this method in your application.
309
+ #
310
+ def self?.internal_class_of: (untyped) -> Class
311
+
312
+ # <!--
313
+ # rdoc-file=ext/objspace/objspace.c
314
+ # - ObjectSpace.internal_super_of(cls) -> Class or Module
315
+ # -->
316
+ # MRI specific feature
317
+ # : Return internal super class of cls (Class or Module).
318
+ #
319
+ # obj can be an instance of InternalObjectWrapper.
320
+ #
321
+ # Note that you should not use this method in your application.
322
+ #
323
+ def self?.internal_super_of: (untyped) -> untyped
324
+
325
+ # <!--
326
+ # rdoc-file=ext/objspace/objspace.c
327
+ # - ObjectSpace.memsize_of(obj) -> Integer
328
+ # -->
329
+ # Return consuming memory size of obj in bytes.
330
+ #
331
+ # Note that the return size is incomplete. You need to deal with this
332
+ # information as only a **HINT**. Especially, the size of `T_DATA` may not be
333
+ # correct.
334
+ #
335
+ # This method is only expected to work with C Ruby.
336
+ #
337
+ # From Ruby 2.2, memsize_of(obj) returns a memory size includes sizeof(RVALUE).
338
+ #
339
+ def self?.memsize_of: (untyped) -> Integer
340
+
341
+ # <!--
342
+ # rdoc-file=ext/objspace/objspace.c
343
+ # - ObjectSpace.memsize_of_all([klass]) -> Integer
344
+ # -->
345
+ # Return consuming memory size of all living objects in bytes.
346
+ #
347
+ # If `klass` (should be Class object) is given, return the total memory size of
348
+ # instances of the given class.
349
+ #
350
+ # Note that the returned size is incomplete. You need to deal with this
351
+ # information as only a **HINT**. Especially, the size of `T_DATA` may not be
352
+ # correct.
353
+ #
354
+ # Note that this method does **NOT** return total malloc'ed memory size.
355
+ #
356
+ # This method can be defined by the following Ruby code:
357
+ #
358
+ # def memsize_of_all klass = false
359
+ # total = 0
360
+ # ObjectSpace.each_object{|e|
361
+ # total += ObjectSpace.memsize_of(e) if klass == false || e.kind_of?(klass)
362
+ # }
363
+ # total
364
+ # end
365
+ #
366
+ # This method is only expected to work with C Ruby.
367
+ #
368
+ def self?.memsize_of_all: (?Class) -> Integer
369
+
370
+ # <!--
371
+ # rdoc-file=ext/objspace/objspace.c
372
+ # - ObjectSpace.reachable_objects_from(obj) -> array or nil
373
+ # -->
374
+ # MRI specific feature
375
+ # : Return all reachable objects from `obj'.
376
+ #
377
+ #
378
+ # This method returns all reachable objects from `obj'.
379
+ #
380
+ # If `obj' has two or more references to the same object `x', then returned
381
+ # array only includes one `x' object.
382
+ #
383
+ # If `obj' is a non-markable (non-heap management) object such as true, false,
384
+ # nil, symbols and Fixnums (and Flonum) then it simply returns nil.
385
+ #
386
+ # If `obj' has references to an internal object, then it returns instances of
387
+ # ObjectSpace::InternalObjectWrapper class. This object contains a reference to
388
+ # an internal object and you can check the type of internal object with `type'
389
+ # method.
390
+ #
391
+ # If `obj' is instance of ObjectSpace::InternalObjectWrapper class, then this
392
+ # method returns all reachable object from an internal object, which is pointed
393
+ # by `obj'.
394
+ #
395
+ # With this method, you can find memory leaks.
396
+ #
397
+ # This method is only expected to work with C Ruby.
398
+ #
399
+ # Example:
400
+ # ObjectSpace.reachable_objects_from(['a', 'b', 'c'])
401
+ # #=> [Array, 'a', 'b', 'c']
402
+ #
403
+ # ObjectSpace.reachable_objects_from(['a', 'a', 'a'])
404
+ # #=> [Array, 'a', 'a', 'a'] # all 'a' strings have different object id
405
+ #
406
+ # ObjectSpace.reachable_objects_from([v = 'a', v, v])
407
+ # #=> [Array, 'a']
408
+ #
409
+ # ObjectSpace.reachable_objects_from(1)
410
+ # #=> nil # 1 is not markable (heap managed) object
411
+ #
412
+ def self?.reachable_objects_from: (untyped) -> ([ untyped ] | nil)
413
+
414
+ # <!--
415
+ # rdoc-file=ext/objspace/objspace.c
416
+ # - ObjectSpace.reachable_objects_from_root -> hash
417
+ # -->
418
+ # MRI specific feature
419
+ # : Return all reachable objects from root.
420
+ #
421
+ def self?.reachable_objects_from_root: () -> Hash[String, untyped]
422
+
423
+ # <!--
424
+ # rdoc-file=ext/objspace/object_tracing.c
425
+ # - trace_object_allocations { block }
426
+ # -->
427
+ # Starts tracing object allocations from the ObjectSpace extension module.
428
+ #
429
+ # For example:
430
+ #
431
+ # require 'objspace'
432
+ #
433
+ # class C
434
+ # include ObjectSpace
435
+ #
436
+ # def foo
437
+ # trace_object_allocations do
438
+ # obj = Object.new
439
+ # p "#{allocation_sourcefile(obj)}:#{allocation_sourceline(obj)}"
440
+ # end
441
+ # end
442
+ # end
443
+ #
444
+ # C.new.foo #=> "objtrace.rb:8"
445
+ #
446
+ # This example has included the ObjectSpace module to make it easier to read,
447
+ # but you can also use the ::trace_object_allocations notation (recommended).
448
+ #
449
+ # Note that this feature introduces a huge performance decrease and huge memory
450
+ # consumption.
451
+ #
452
+ def self.trace_object_allocations: () { (untyped) -> untyped } -> untyped
453
+
454
+ # <!--
455
+ # rdoc-file=ext/objspace/object_tracing.c
456
+ # - trace_object_allocations_clear
457
+ # -->
458
+ # Clear recorded tracing information.
459
+ #
460
+ def self?.trace_object_allocations_clear: () -> void
461
+
462
+ # <!--
463
+ # rdoc-file=ext/objspace/object_tracing.c
464
+ # - trace_object_allocations_debug_start()
465
+ # -->
466
+ #
467
+ def self?.trace_object_allocations_debug_start: () -> void
468
+
469
+ # <!--
470
+ # rdoc-file=ext/objspace/object_tracing.c
471
+ # - trace_object_allocations_start
472
+ # -->
473
+ # Starts tracing object allocations.
474
+ #
475
+ def self?.trace_object_allocations_start: () -> void
476
+
477
+ # <!--
478
+ # rdoc-file=ext/objspace/object_tracing.c
479
+ # - trace_object_allocations_stop
480
+ # -->
481
+ # Stop tracing object allocations.
482
+ #
483
+ # Note that if ::trace_object_allocations_start is called n-times, then tracing
484
+ # will stop after calling ::trace_object_allocations_stop n-times.
485
+ #
486
+ def self?.trace_object_allocations_stop: () -> void
487
+ 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