rbs 4.0.0.dev.4 → 4.1.0.pre.2

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 (306) hide show
  1. checksums.yaml +4 -4
  2. data/.clang-format +1 -0
  3. data/.github/dependabot.yml +16 -14
  4. data/.github/workflows/bundle-update.yml +63 -0
  5. data/.github/workflows/c-check.yml +21 -11
  6. data/.github/workflows/comments.yml +5 -3
  7. data/.github/workflows/dependabot.yml +2 -2
  8. data/.github/workflows/jruby.yml +67 -0
  9. data/.github/workflows/milestone.yml +83 -0
  10. data/.github/workflows/ruby.yml +63 -24
  11. data/.github/workflows/rust.yml +184 -0
  12. data/.github/workflows/truffleruby.yml +54 -0
  13. data/.github/workflows/typecheck.yml +5 -2
  14. data/.github/workflows/wasm.yml +53 -0
  15. data/.github/workflows/windows.yml +8 -2
  16. data/.gitignore +11 -0
  17. data/.rubocop.yml +1 -1
  18. data/CHANGELOG.md +357 -0
  19. data/README.md +4 -4
  20. data/Rakefile +365 -33
  21. data/Steepfile +8 -0
  22. data/config.yml +450 -24
  23. data/core/array.rbs +443 -363
  24. data/core/basic_object.rbs +9 -8
  25. data/core/binding.rbs +0 -2
  26. data/core/builtin.rbs +9 -8
  27. data/core/class.rbs +11 -8
  28. data/core/comparable.rbs +55 -34
  29. data/core/complex.rbs +104 -78
  30. data/core/dir.rbs +61 -49
  31. data/core/encoding.rbs +12 -15
  32. data/core/enumerable.rbs +288 -196
  33. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  34. data/core/enumerator/product.rbs +5 -5
  35. data/core/enumerator.rbs +91 -28
  36. data/core/errno.rbs +11 -2
  37. data/core/errors.rbs +58 -29
  38. data/core/exception.rbs +13 -13
  39. data/core/fiber.rbs +74 -54
  40. data/core/file.rbs +260 -1151
  41. data/core/file_constants.rbs +463 -0
  42. data/core/file_stat.rbs +534 -0
  43. data/core/file_test.rbs +3 -3
  44. data/core/float.rbs +257 -92
  45. data/core/gc.rbs +425 -281
  46. data/core/hash.rbs +1151 -829
  47. data/core/integer.rbs +156 -195
  48. data/core/io/buffer.rbs +53 -42
  49. data/core/io/wait.rbs +13 -35
  50. data/core/io.rbs +216 -150
  51. data/core/kernel.rbs +239 -163
  52. data/core/marshal.rbs +4 -4
  53. data/core/match_data.rbs +15 -13
  54. data/core/math.rbs +107 -66
  55. data/core/method.rbs +69 -33
  56. data/core/module.rbs +302 -150
  57. data/core/nil_class.rbs +7 -6
  58. data/core/numeric.rbs +77 -63
  59. data/core/object.rbs +9 -11
  60. data/core/object_space/weak_key_map.rbs +7 -7
  61. data/core/object_space.rbs +30 -23
  62. data/core/pathname.rbs +1322 -0
  63. data/core/proc.rbs +95 -58
  64. data/core/process.rbs +222 -202
  65. data/core/ractor.rbs +371 -515
  66. data/core/random.rbs +21 -3
  67. data/core/range.rbs +181 -79
  68. data/core/rational.rbs +60 -89
  69. data/core/rbs/ops.rbs +154 -0
  70. data/core/rbs/unnamed/argf.rbs +63 -56
  71. data/core/rbs/unnamed/env_class.rbs +19 -14
  72. data/core/rbs/unnamed/main_class.rbs +123 -0
  73. data/core/rbs/unnamed/random.rbs +11 -118
  74. data/core/regexp.rbs +258 -214
  75. data/core/ruby.rbs +53 -0
  76. data/core/ruby_vm.rbs +78 -34
  77. data/core/rubygems/config_file.rbs +5 -5
  78. data/core/rubygems/errors.rbs +4 -71
  79. data/core/rubygems/requirement.rbs +5 -5
  80. data/core/rubygems/rubygems.rbs +16 -82
  81. data/core/rubygems/version.rbs +2 -3
  82. data/core/set.rbs +493 -363
  83. data/core/signal.rbs +26 -16
  84. data/core/string.rbs +3234 -1285
  85. data/core/struct.rbs +43 -42
  86. data/core/symbol.rbs +41 -34
  87. data/core/thread.rbs +141 -73
  88. data/core/time.rbs +81 -50
  89. data/core/trace_point.rbs +41 -35
  90. data/core/true_class.rbs +2 -2
  91. data/core/unbound_method.rbs +24 -16
  92. data/core/warning.rbs +7 -7
  93. data/docs/CONTRIBUTING.md +2 -1
  94. data/docs/aliases.md +79 -0
  95. data/docs/collection.md +3 -3
  96. data/docs/config.md +171 -0
  97. data/docs/encoding.md +56 -0
  98. data/docs/gem.md +0 -1
  99. data/docs/inline.md +634 -0
  100. data/docs/rbs_by_example.md +20 -20
  101. data/docs/rust.md +96 -0
  102. data/docs/sigs.md +3 -3
  103. data/docs/syntax.md +48 -18
  104. data/docs/type_fingerprint.md +21 -0
  105. data/docs/wasm_serialization.md +80 -0
  106. data/exe/rbs +1 -1
  107. data/ext/rbs_extension/ast_translation.c +1441 -671
  108. data/ext/rbs_extension/ast_translation.h +7 -0
  109. data/ext/rbs_extension/class_constants.c +18 -2
  110. data/ext/rbs_extension/class_constants.h +9 -0
  111. data/ext/rbs_extension/extconf.rb +6 -1
  112. data/ext/rbs_extension/legacy_location.c +33 -56
  113. data/ext/rbs_extension/legacy_location.h +37 -0
  114. data/ext/rbs_extension/main.c +183 -39
  115. data/include/rbs/ast.h +597 -297
  116. data/include/rbs/defines.h +40 -0
  117. data/include/rbs/lexer.h +31 -11
  118. data/include/rbs/location.h +25 -44
  119. data/include/rbs/parser.h +6 -6
  120. data/include/rbs/serialize.h +39 -0
  121. data/include/rbs/string.h +0 -2
  122. data/include/rbs/util/rbs_allocator.h +34 -13
  123. data/include/rbs/util/rbs_assert.h +12 -1
  124. data/include/rbs/util/rbs_constant_pool.h +0 -3
  125. data/include/rbs/util/rbs_encoding.h +2 -0
  126. data/include/rbs/util/rbs_unescape.h +2 -1
  127. data/include/rbs.h +8 -0
  128. data/lib/rbs/annotate/rdoc_annotator.rb +27 -31
  129. data/lib/rbs/ast/annotation.rb +1 -1
  130. data/lib/rbs/ast/comment.rb +1 -1
  131. data/lib/rbs/ast/declarations.rb +10 -10
  132. data/lib/rbs/ast/members.rb +14 -14
  133. data/lib/rbs/ast/ruby/annotations.rb +335 -3
  134. data/lib/rbs/ast/ruby/comment_block.rb +30 -4
  135. data/lib/rbs/ast/ruby/declarations.rb +209 -4
  136. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
  137. data/lib/rbs/ast/ruby/helpers/location_helper.rb +1 -1
  138. data/lib/rbs/ast/ruby/members.rb +571 -22
  139. data/lib/rbs/ast/type_param.rb +24 -4
  140. data/lib/rbs/buffer.rb +66 -24
  141. data/lib/rbs/cli/diff.rb +16 -15
  142. data/lib/rbs/cli/validate.rb +38 -106
  143. data/lib/rbs/cli.rb +55 -24
  144. data/lib/rbs/collection/config/lockfile_generator.rb +28 -3
  145. data/lib/rbs/collection/sources/git.rb +7 -0
  146. data/lib/rbs/definition.rb +1 -1
  147. data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
  148. data/lib/rbs/definition_builder/method_builder.rb +32 -6
  149. data/lib/rbs/definition_builder.rb +147 -25
  150. data/lib/rbs/diff.rb +7 -1
  151. data/lib/rbs/environment.rb +235 -75
  152. data/lib/rbs/environment_loader.rb +0 -6
  153. data/lib/rbs/errors.rb +27 -18
  154. data/lib/rbs/inline_parser.rb +377 -15
  155. data/lib/rbs/location_aux.rb +1 -1
  156. data/lib/rbs/locator.rb +5 -1
  157. data/lib/rbs/method_type.rb +5 -3
  158. data/lib/rbs/namespace.rb +47 -11
  159. data/lib/rbs/parser_aux.rb +20 -7
  160. data/lib/rbs/prototype/helpers.rb +57 -0
  161. data/lib/rbs/prototype/rb.rb +3 -28
  162. data/lib/rbs/prototype/rbi.rb +3 -20
  163. data/lib/rbs/prototype/runtime.rb +10 -0
  164. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  165. data/lib/rbs/resolver/type_name_resolver.rb +120 -44
  166. data/lib/rbs/rewriter.rb +70 -0
  167. data/lib/rbs/subtractor.rb +3 -1
  168. data/lib/rbs/test/type_check.rb +25 -3
  169. data/lib/rbs/type_name.rb +34 -14
  170. data/lib/rbs/types.rb +88 -78
  171. data/lib/rbs/unit_test/type_assertions.rb +44 -8
  172. data/lib/rbs/validator.rb +2 -2
  173. data/lib/rbs/version.rb +1 -1
  174. data/lib/rbs/wasm/deserializer.rb +213 -0
  175. data/lib/rbs/wasm/location.rb +61 -0
  176. data/lib/rbs/wasm/parser.rb +137 -0
  177. data/lib/rbs/wasm/runtime.rb +217 -0
  178. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  179. data/lib/rbs.rb +13 -2
  180. data/lib/rdoc/discover.rb +1 -1
  181. data/lib/rdoc_plugin/parser.rb +1 -1
  182. data/rbs.gemspec +24 -6
  183. data/schema/typeParam.json +17 -1
  184. data/sig/annotate/rdoc_annotater.rbs +12 -9
  185. data/sig/ast/ruby/annotations.rbs +364 -4
  186. data/sig/ast/ruby/comment_block.rbs +8 -0
  187. data/sig/ast/ruby/declarations.rbs +102 -4
  188. data/sig/ast/ruby/members.rbs +128 -2
  189. data/sig/buffer.rbs +19 -1
  190. data/sig/cli/diff.rbs +5 -11
  191. data/sig/cli/validate.rbs +12 -8
  192. data/sig/cli.rbs +18 -18
  193. data/sig/collection/config/lockfile_generator.rbs +2 -0
  194. data/sig/definition.rbs +6 -1
  195. data/sig/definition_builder.rbs +2 -0
  196. data/sig/environment.rbs +70 -12
  197. data/sig/errors.rbs +13 -14
  198. data/sig/inline_parser.rbs +41 -2
  199. data/sig/locator.rbs +0 -2
  200. data/sig/manifest.yaml +0 -2
  201. data/sig/method_builder.rbs +3 -1
  202. data/sig/namespace.rbs +20 -0
  203. data/sig/parser.rbs +41 -13
  204. data/sig/prototype/helpers.rbs +2 -0
  205. data/sig/resolver/type_name_resolver.rbs +36 -10
  206. data/sig/rewriter.rbs +45 -0
  207. data/sig/source.rbs +3 -3
  208. data/sig/type_param.rbs +13 -8
  209. data/sig/typename.rbs +15 -0
  210. data/sig/types.rbs +6 -7
  211. data/sig/unit_test/spy.rbs +0 -8
  212. data/sig/unit_test/type_assertions.rbs +15 -0
  213. data/sig/wasm/deserializer.rbs +66 -0
  214. data/sig/wasm/serialization_schema.rbs +13 -0
  215. data/src/ast.c +443 -162
  216. data/src/lexer.c +1415 -1313
  217. data/src/lexer.re +4 -0
  218. data/src/lexstate.c +63 -37
  219. data/src/location.c +7 -47
  220. data/src/parser.c +1032 -521
  221. data/src/serialize.c +958 -0
  222. data/src/string.c +0 -48
  223. data/src/util/rbs_allocator.c +89 -74
  224. data/src/util/rbs_assert.c +1 -1
  225. data/src/util/rbs_buffer.c +2 -2
  226. data/src/util/rbs_constant_pool.c +10 -14
  227. data/src/util/rbs_encoding.c +4 -8
  228. data/src/util/rbs_unescape.c +56 -20
  229. data/stdlib/abbrev/0/array.rbs +1 -1
  230. data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
  231. data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
  232. data/stdlib/cgi/0/core.rbs +9 -393
  233. data/stdlib/cgi/0/manifest.yaml +1 -0
  234. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  235. data/stdlib/coverage/0/coverage.rbs +7 -4
  236. data/stdlib/csv/0/csv.rbs +5 -5
  237. data/stdlib/date/0/date.rbs +92 -79
  238. data/stdlib/date/0/date_time.rbs +25 -24
  239. data/stdlib/delegate/0/delegator.rbs +10 -7
  240. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  241. data/stdlib/digest/0/digest.rbs +111 -1
  242. data/stdlib/erb/0/erb.rbs +748 -347
  243. data/stdlib/etc/0/etc.rbs +73 -54
  244. data/stdlib/fileutils/0/fileutils.rbs +179 -160
  245. data/stdlib/forwardable/0/forwardable.rbs +13 -10
  246. data/stdlib/io-console/0/io-console.rbs +2 -2
  247. data/stdlib/json/0/json.rbs +223 -142
  248. data/stdlib/monitor/0/monitor.rbs +3 -3
  249. data/stdlib/net-http/0/net-http.rbs +162 -134
  250. data/stdlib/objspace/0/objspace.rbs +17 -34
  251. data/stdlib/open-uri/0/open-uri.rbs +48 -8
  252. data/stdlib/open3/0/open3.rbs +469 -10
  253. data/stdlib/openssl/0/openssl.rbs +482 -364
  254. data/stdlib/optparse/0/optparse.rbs +26 -17
  255. data/stdlib/pathname/0/pathname.rbs +11 -1381
  256. data/stdlib/pp/0/pp.rbs +9 -8
  257. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  258. data/stdlib/pstore/0/pstore.rbs +35 -30
  259. data/stdlib/psych/0/psych.rbs +65 -12
  260. data/stdlib/psych/0/store.rbs +2 -4
  261. data/stdlib/pty/0/pty.rbs +9 -6
  262. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  263. data/stdlib/rdoc/0/code_object.rbs +2 -1
  264. data/stdlib/rdoc/0/parser.rbs +1 -1
  265. data/stdlib/rdoc/0/rdoc.rbs +1 -1
  266. data/stdlib/rdoc/0/store.rbs +1 -1
  267. data/stdlib/resolv/0/resolv.rbs +26 -69
  268. data/stdlib/ripper/0/ripper.rbs +22 -19
  269. data/stdlib/securerandom/0/manifest.yaml +2 -0
  270. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  271. data/stdlib/shellwords/0/shellwords.rbs +3 -3
  272. data/stdlib/singleton/0/singleton.rbs +3 -0
  273. data/stdlib/socket/0/addrinfo.rbs +7 -7
  274. data/stdlib/socket/0/basic_socket.rbs +3 -3
  275. data/stdlib/socket/0/ip_socket.rbs +10 -8
  276. data/stdlib/socket/0/socket.rbs +23 -10
  277. data/stdlib/socket/0/tcp_server.rbs +1 -1
  278. data/stdlib/socket/0/tcp_socket.rbs +11 -3
  279. data/stdlib/socket/0/udp_socket.rbs +1 -1
  280. data/stdlib/socket/0/unix_server.rbs +1 -1
  281. data/stdlib/stringio/0/stringio.rbs +1209 -95
  282. data/stdlib/strscan/0/string_scanner.rbs +101 -80
  283. data/stdlib/tempfile/0/tempfile.rbs +25 -21
  284. data/stdlib/time/0/time.rbs +8 -6
  285. data/stdlib/timeout/0/timeout.rbs +63 -7
  286. data/stdlib/tsort/0/cyclic.rbs +4 -1
  287. data/stdlib/tsort/0/interfaces.rbs +8 -8
  288. data/stdlib/tsort/0/tsort.rbs +16 -15
  289. data/stdlib/uri/0/common.rbs +42 -20
  290. data/stdlib/uri/0/file.rbs +3 -3
  291. data/stdlib/uri/0/generic.rbs +26 -18
  292. data/stdlib/uri/0/http.rbs +2 -2
  293. data/stdlib/uri/0/ldap.rbs +2 -2
  294. data/stdlib/uri/0/mailto.rbs +3 -3
  295. data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
  296. data/stdlib/zlib/0/deflate.rbs +4 -3
  297. data/stdlib/zlib/0/gzip_reader.rbs +8 -8
  298. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  299. data/stdlib/zlib/0/inflate.rbs +1 -1
  300. data/stdlib/zlib/0/need_dict.rbs +1 -1
  301. data/stdlib/zlib/0/zstream.rbs +1 -0
  302. data/wasm/README.md +59 -0
  303. data/wasm/rbs_wasm.c +411 -0
  304. metadata +56 -8
  305. data/.vscode/extensions.json +0 -5
  306. data/.vscode/settings.json +0 -19
data/core/exception.rbs CHANGED
@@ -102,7 +102,7 @@ class Exception
102
102
  # Returns the backtrace (the list of code locations that led to the exception),
103
103
  # as an array of strings.
104
104
  #
105
- # Example (assuming the code is stored in the file named `t.rb`):
105
+ # Example (assuming the code is stored in the file named <code>t.rb</code>):
106
106
  #
107
107
  # def division(numerator, denominator)
108
108
  # numerator / denominator
@@ -118,7 +118,7 @@ class Exception
118
118
  # # String
119
119
  # end
120
120
  #
121
- # The value returned by this method migth be adjusted when raising (see
121
+ # The value returned by this method might be adjusted when raising (see
122
122
  # Kernel#raise), or during intermediate handling by #set_backtrace.
123
123
  #
124
124
  # See also #backtrace_locations that provide the same value, as structured
@@ -136,7 +136,7 @@ class Exception
136
136
  # Returns the backtrace (the list of code locations that led to the exception),
137
137
  # as an array of Thread::Backtrace::Location instances.
138
138
  #
139
- # Example (assuming the code is stored in the file named `t.rb`):
139
+ # Example (assuming the code is stored in the file named <code>t.rb</code>):
140
140
  #
141
141
  # def division(numerator, denominator)
142
142
  # numerator / denominator
@@ -173,8 +173,8 @@ class Exception
173
173
  # rdoc-file=error.c
174
174
  # - cause -> exception or nil
175
175
  # -->
176
- # Returns the previous value of global variable `$!`, which may be `nil` (see
177
- # [Global Variables](rdoc-ref:exceptions.md@Global+Variables)):
176
+ # Returns the previous value of global variable <code>$!</code>, which may be
177
+ # `nil` (see [Global Variables](rdoc-ref:exceptions.md@Global+Variables)):
178
178
  #
179
179
  # begin
180
180
  # raise('Boom 0')
@@ -237,10 +237,10 @@ class Exception
237
237
  # An overriding method must be tolerant of passed keyword arguments, which may
238
238
  # include (but may not be limited to):
239
239
  #
240
- # * `:highlight`.
241
- # * `:did_you_mean`.
242
- # * `:error_highlight`.
243
- # * `:syntax_suggest`.
240
+ # * <code>:highlight</code>.
241
+ # * <code>:did_you_mean</code>.
242
+ # * <code>:error_highlight</code>.
243
+ # * <code>:syntax_suggest</code>.
244
244
  #
245
245
  # An overriding method should also be careful with ANSI code enhancements; see
246
246
  # [Messages](rdoc-ref:exceptions.md@Messages).
@@ -444,10 +444,10 @@ class Exception
444
444
  # message.
445
445
  # * Includes the [backtrace](rdoc-ref:exceptions.md@Backtraces):
446
446
  #
447
- # * If the value of keyword `order` is `:top` (the default), lists the
448
- # error message and the innermost backtrace entry first.
449
- # * If the value of keyword `order` is `:bottom`, lists the error message
450
- # the the innermost entry last.
447
+ # * If the value of keyword `order` is <code>:top</code> (the default),
448
+ # lists the error message and the innermost backtrace entry first.
449
+ # * If the value of keyword `order` is <code>:bottom</code>, lists the
450
+ # error message the innermost entry last.
451
451
  #
452
452
  # Example:
453
453
  #
data/core/fiber.rbs CHANGED
@@ -57,16 +57,16 @@
57
57
  #
58
58
  # ## Non-blocking Fibers
59
59
  #
60
- # The concept of *non-blocking fiber* was introduced in Ruby 3.0. A non-blocking
61
- # fiber, when reaching a operation that would normally block the fiber (like
62
- # `sleep`, or wait for another process or I/O) will yield control to other
63
- # fibers and allow the *scheduler* to handle blocking and waking up (resuming)
64
- # this fiber when it can proceed.
60
+ # The concept of <em>non-blocking fiber</em> was introduced in Ruby 3.0. A
61
+ # non-blocking fiber, when reaching an operation that would normally block the
62
+ # fiber (like `sleep`, or wait for another process or I/O) will yield control to
63
+ # other fibers and allow the *scheduler* to handle blocking and waking up
64
+ # (resuming) this fiber when it can proceed.
65
65
  #
66
66
  # For a Fiber to behave as non-blocking, it need to be created in Fiber.new with
67
- # `blocking: false` (which is the default), and Fiber.scheduler should be set
68
- # with Fiber.set_scheduler. If Fiber.scheduler is not set in the current thread,
69
- # blocking and non-blocking fibers' behavior is identical.
67
+ # <code>blocking: false</code> (which is the default), and Fiber.scheduler
68
+ # should be set with Fiber.set_scheduler. If Fiber.scheduler is not set in the
69
+ # current thread, blocking and non-blocking fibers' behavior is identical.
70
70
  #
71
71
  # Ruby doesn't provide a scheduler class: it is expected to be implemented by
72
72
  # the user and correspond to Fiber::Scheduler.
@@ -82,7 +82,8 @@ class Fiber < Object
82
82
  # -->
83
83
  # Returns the value of the fiber storage variable identified by `key`.
84
84
  #
85
- # The `key` must be a symbol, and the value is set by Fiber#[]= or Fiber#store.
85
+ # The `key` must be a symbol, and the value is set by Fiber#[]= or
86
+ # Fiber#storage.
86
87
  #
87
88
  # See also Fiber::[]=.
88
89
  #
@@ -101,12 +102,23 @@ class Fiber < Object
101
102
  #
102
103
  def self.[]=: [A] (Symbol, A) -> A
103
104
 
105
+ # <!--
106
+ # rdoc-file=cont.c
107
+ # - Fiber.blocking{|fiber| ...} -> result
108
+ # -->
109
+ # Forces the fiber to be blocking for the duration of the block. Returns the
110
+ # result of the block.
111
+ #
112
+ # See the "Non-blocking fibers" section in class docs for details.
113
+ #
114
+ def self.blocking: [T] () { (Fiber) -> T } -> T
115
+
104
116
  # <!--
105
117
  # rdoc-file=cont.c
106
118
  # - Fiber.blocking? -> false or 1
107
119
  # -->
108
120
  # Returns `false` if the current fiber is non-blocking. Fiber is non-blocking if
109
- # it was created via passing `blocking: false` to Fiber.new, or via
121
+ # it was created via passing <code>blocking: false</code> to Fiber.new, or via
110
122
  # Fiber.schedule.
111
123
  #
112
124
  # If the current Fiber is blocking, the method returns 1. Future developments
@@ -164,18 +176,18 @@ class Fiber < Object
164
176
  # ...1 sec pause here...
165
177
  # I slept well
166
178
  #
167
- # ...e.g. on the first blocking operation inside the Fiber (`sleep(1)`), the
168
- # control is yielded to the outside code (main fiber), and *at the end of that
169
- # execution*, the scheduler takes care of properly resuming all the blocked
170
- # fibers.
179
+ # ...e.g. on the first blocking operation inside the Fiber
180
+ # (<code>sleep(1)</code>), the control is yielded to the outside code (main
181
+ # fiber), and *at the end of that execution*, the scheduler takes care of
182
+ # properly resuming all the blocked fibers.
171
183
  #
172
184
  # Note that the behavior described above is how the method is *expected* to
173
185
  # behave, actual behavior is up to the current scheduler's implementation of
174
186
  # Fiber::Scheduler#fiber method. Ruby doesn't enforce this method to behave in
175
187
  # any particular way.
176
188
  #
177
- # If the scheduler is not set, the method raises `RuntimeError (No scheduler is
178
- # available!)`.
189
+ # If the scheduler is not set, the method raises <code>RuntimeError (No
190
+ # scheduler is available!)</code>.
179
191
  #
180
192
  def self.schedule: () { () -> void } -> Fiber
181
193
 
@@ -196,11 +208,11 @@ class Fiber < Object
196
208
  # - Fiber.set_scheduler(scheduler) -> scheduler
197
209
  # -->
198
210
  # Sets the Fiber scheduler for the current thread. If the scheduler is set,
199
- # non-blocking fibers (created by Fiber.new with `blocking: false`, or by
200
- # Fiber.schedule) call that scheduler's hook methods on potentially blocking
201
- # operations, and the current thread will call scheduler's `close` method on
202
- # finalization (allowing the scheduler to properly manage all non-finished
203
- # fibers).
211
+ # non-blocking fibers (created by Fiber.new with <code>blocking: false</code>,
212
+ # or by Fiber.schedule) call that scheduler's hook methods on potentially
213
+ # blocking operations, and the current thread will call scheduler's `close`
214
+ # method on finalization (allowing the scheduler to properly manage all
215
+ # non-finished fibers).
204
216
  #
205
217
  # `scheduler` can be an object of any class corresponding to Fiber::Scheduler.
206
218
  # Its implementation is up to the user.
@@ -239,13 +251,13 @@ class Fiber < Object
239
251
  # f.resume # prints: current: nil
240
252
  # # ... and so on ...
241
253
  #
242
- # If `blocking: false` is passed to `Fiber.new`, *and* current thread has a
243
- # Fiber.scheduler defined, the Fiber becomes non-blocking (see "Non-blocking
244
- # Fibers" section in class docs).
254
+ # If <code>blocking: false</code> is passed to <code>Fiber.new</code>, *and*
255
+ # current thread has a Fiber.scheduler defined, the Fiber becomes non-blocking
256
+ # (see "Non-blocking Fibers" section in class docs).
245
257
  #
246
258
  # If the `storage` is unspecified, the default is to inherit a copy of the
247
- # storage from the current fiber. This is the same as specifying `storage:
248
- # true`.
259
+ # storage from the current fiber. This is the same as specifying <code>storage:
260
+ # true</code>.
249
261
  #
250
262
  # Fiber[:x] = 1
251
263
  # Fiber.new do
@@ -265,8 +277,8 @@ class Fiber < Object
265
277
  # Otherwise, the given `storage` is used as the new fiber's storage, and it must
266
278
  # be an instance of Hash.
267
279
  #
268
- # Explicitly using `storage: true` is currently experimental and may change in
269
- # the future.
280
+ # Explicitly using <code>storage: true</code> is currently experimental and may
281
+ # change in the future.
270
282
  #
271
283
  def initialize: (?blocking: boolish, ?storage: true | Hash[interned, untyped] | nil) { (?) -> void } -> void
272
284
 
@@ -352,8 +364,8 @@ class Fiber < Object
352
364
  # - fiber.blocking? -> true or false
353
365
  # -->
354
366
  # Returns `true` if `fiber` is blocking and `false` otherwise. Fiber is
355
- # non-blocking if it was created via passing `blocking: false` to Fiber.new, or
356
- # via Fiber.schedule.
367
+ # non-blocking if it was created via passing <code>blocking: false</code> to
368
+ # Fiber.new, or via Fiber.schedule.
357
369
  #
358
370
  # Note that, even if the method returns `false`, the fiber behaves differently
359
371
  # only if Fiber.scheduler is set in the current thread.
@@ -377,9 +389,9 @@ class Fiber < Object
377
389
  # the given fiber and no other fiber, returning `nil` to another fiber if that
378
390
  # fiber was calling #resume or #transfer.
379
391
  #
380
- # `Fiber#kill` only interrupts another fiber when it is in Fiber.yield. If
381
- # called on the current fiber then it raises that exception at the `Fiber#kill`
382
- # call site.
392
+ # <code>Fiber#kill</code> only interrupts another fiber when it is in
393
+ # Fiber.yield. If called on the current fiber then it raises that exception at
394
+ # the <code>Fiber#kill</code> call site.
383
395
  #
384
396
  # If the fiber has not been started, transition directly to the terminated
385
397
  # state.
@@ -392,30 +404,38 @@ class Fiber < Object
392
404
 
393
405
  # <!--
394
406
  # rdoc-file=cont.c
395
- # - fiber.raise -> obj
396
- # - fiber.raise(string) -> obj
397
- # - fiber.raise(exception [, string [, array]]) -> obj
407
+ # - raise(exception, message = exception.to_s, backtrace = nil, cause: $!)
408
+ # - raise(message = nil, cause: $!)
398
409
  # -->
399
- # Raises an exception in the fiber at the point at which the last `Fiber.yield`
400
- # was called. If the fiber has not been started or has already run to
401
- # completion, raises `FiberError`. If the fiber is yielding, it is resumed. If
402
- # it is transferring, it is transferred into. But if it is resuming, raises
403
- # `FiberError`.
404
- #
405
- # With no arguments, raises a `RuntimeError`. With a single `String` argument,
406
- # raises a `RuntimeError` with the string as a message. Otherwise, the first
407
- # parameter should be the name of an `Exception` class (or an object that
408
- # returns an `Exception` object when sent an `exception` message). The optional
409
- # second parameter sets the message associated with the exception, and the third
410
- # parameter is an array of callback information. Exceptions are caught by the
411
- # `rescue` clause of `begin...end` blocks.
410
+ # Raises an exception in the fiber at the point at which the last
411
+ # <code>Fiber.yield</code> was called.
412
+ #
413
+ # f = Fiber.new {
414
+ # puts "Before the yield"
415
+ # Fiber.yield 1 # -- exception will be raised here
416
+ # puts "After the yield"
417
+ # }
418
+ #
419
+ # p f.resume
420
+ # f.raise "Gotcha"
421
+ #
422
+ # Output
423
+ #
424
+ # Before the first yield
425
+ # 1
426
+ # t.rb:8:in 'Fiber.yield': Gotcha (RuntimeError)
427
+ # from t.rb:8:in 'block in <main>'
428
+ #
429
+ # If the fiber has not been started or has already run to completion, raises
430
+ # `FiberError`. If the fiber is yielding, it is resumed. If it is transferring,
431
+ # it is transferred into. But if it is resuming, raises `FiberError`.
412
432
  #
413
433
  # Raises `FiberError` if called on a Fiber belonging to another `Thread`.
414
434
  #
415
- # See Kernel#raise for more information.
435
+ # See Kernel#raise for more information on arguments.
416
436
  #
417
- def raise: (?string msg) -> untyped
418
- | (_Exception, ?string msg, ?Array[string] | Array[Thread::Backtrace::Location] | nil backtrace) -> untyped
437
+ def raise: (?string msg, ?cause: Exception?) -> untyped
438
+ | (_Exception, ?string msg, ?Array[string] | Array[Thread::Backtrace::Location] | nil backtrace, ?cause: Exception?) -> untyped
419
439
 
420
440
  # <!--
421
441
  # rdoc-file=cont.c
@@ -452,8 +472,8 @@ class Fiber < Object
452
472
  # important fiber-storage state. You should mostly prefer to assign specific
453
473
  # keys in the storage using Fiber::[]=.
454
474
  #
455
- # You can also use `Fiber.new(storage: nil)` to create a fiber with an empty
456
- # storage.
475
+ # You can also use <code>Fiber.new(storage: nil)</code> to create a fiber with
476
+ # an empty storage.
457
477
  #
458
478
  # Example:
459
479
  #