rbs 2.0.0 → 2.2.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 (208) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +34 -0
  3. data/.github/workflows/ruby.yml +5 -0
  4. data/CHANGELOG.md +82 -0
  5. data/README.md +6 -1
  6. data/Rakefile +56 -21
  7. data/core/array.rbs +2866 -1086
  8. data/core/basic_object.rbs +150 -30
  9. data/core/binding.rbs +33 -0
  10. data/core/builtin.rbs +4 -4
  11. data/core/class.rbs +43 -5
  12. data/core/comparable.rbs +57 -0
  13. data/core/complex.rbs +170 -4
  14. data/core/constants.rbs +51 -0
  15. data/core/deprecated.rbs +7 -0
  16. data/core/dir.rbs +305 -20
  17. data/core/encoding.rbs +1214 -77
  18. data/core/enumerable.rbs +2173 -234
  19. data/core/enumerator.rbs +448 -182
  20. data/core/env.rbs +448 -1
  21. data/core/errno.rbs +1 -10
  22. data/core/errors.rbs +152 -2
  23. data/core/exception.rbs +201 -127
  24. data/core/false_class.rbs +27 -0
  25. data/core/fiber.rbs +118 -37
  26. data/core/fiber_error.rbs +8 -9
  27. data/core/file.rbs +1060 -142
  28. data/core/file_test.rbs +287 -32
  29. data/core/float.rbs +776 -300
  30. data/core/gc.rbs +185 -34
  31. data/core/global_variables.rbs +5 -1
  32. data/core/hash.rbs +1582 -649
  33. data/core/integer.rbs +974 -204
  34. data/core/io/buffer.rbs +710 -0
  35. data/core/io/wait.rbs +29 -8
  36. data/core/io.rbs +2438 -417
  37. data/core/kernel.rbs +2319 -318
  38. data/core/marshal.rbs +37 -2
  39. data/core/match_data.rbs +123 -6
  40. data/core/math.rbs +126 -6
  41. data/core/method.rbs +226 -102
  42. data/core/module.rbs +421 -45
  43. data/core/nil_class.rbs +64 -0
  44. data/core/numeric.rbs +620 -142
  45. data/core/object.rbs +453 -81
  46. data/core/object_space.rbs +92 -2
  47. data/core/proc.rbs +482 -285
  48. data/core/process.rbs +443 -34
  49. data/core/ractor.rbs +232 -9
  50. data/core/random.rbs +151 -52
  51. data/core/range.rbs +885 -160
  52. data/core/rational.rbs +122 -6
  53. data/core/rb_config.rbs +14 -4
  54. data/core/refinement.rbs +44 -0
  55. data/core/regexp.rbs +156 -14
  56. data/core/ruby_vm.rbs +42 -3
  57. data/core/signal.rbs +78 -39
  58. data/core/string.rbs +2123 -567
  59. data/core/string_io.rbs +204 -0
  60. data/core/struct.rbs +283 -28
  61. data/core/symbol.rbs +304 -30
  62. data/core/thread.rbs +1288 -688
  63. data/core/thread_group.rbs +66 -10
  64. data/core/time.rbs +643 -217
  65. data/core/trace_point.rbs +100 -12
  66. data/core/true_class.rbs +24 -0
  67. data/core/unbound_method.rbs +73 -7
  68. data/core/warning.rbs +37 -12
  69. data/docs/CONTRIBUTING.md +40 -34
  70. data/docs/stdlib.md +3 -102
  71. data/docs/syntax.md +54 -11
  72. data/ext/rbs_extension/extconf.rb +1 -0
  73. data/ext/rbs_extension/lexer.h +5 -0
  74. data/ext/rbs_extension/lexstate.c +6 -0
  75. data/ext/rbs_extension/parser.c +85 -10
  76. data/ext/rbs_extension/ruby_objs.c +4 -2
  77. data/ext/rbs_extension/ruby_objs.h +2 -2
  78. data/goodcheck.yml +0 -11
  79. data/lib/rbs/annotate/annotations.rb +197 -0
  80. data/lib/rbs/annotate/formatter.rb +80 -0
  81. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  82. data/lib/rbs/annotate/rdoc_source.rb +120 -0
  83. data/lib/rbs/annotate.rb +6 -0
  84. data/lib/rbs/ast/members.rb +21 -13
  85. data/lib/rbs/buffer.rb +17 -11
  86. data/lib/rbs/cli.rb +48 -1
  87. data/lib/rbs/definition_builder/method_builder.rb +28 -16
  88. data/lib/rbs/definition_builder.rb +6 -2
  89. data/lib/rbs/environment.rb +8 -4
  90. data/lib/rbs/location_aux.rb +12 -0
  91. data/lib/rbs/namespace.rb +1 -1
  92. data/lib/rbs/prototype/rb.rb +12 -0
  93. data/lib/rbs/type_alias_regularity.rb +6 -4
  94. data/lib/rbs/type_name.rb +1 -1
  95. data/lib/rbs/types.rb +1 -1
  96. data/lib/rbs/validator.rb +6 -0
  97. data/lib/rbs/version.rb +1 -1
  98. data/lib/rbs/writer.rb +54 -4
  99. data/lib/rbs.rb +0 -2
  100. data/schema/typeParam.json +3 -3
  101. data/sig/annotate/annotations.rbs +102 -0
  102. data/sig/annotate/formatter.rbs +24 -0
  103. data/sig/annotate/rdoc_annotater.rbs +82 -0
  104. data/sig/annotate/rdoc_source.rbs +30 -0
  105. data/sig/buffer.rbs +6 -2
  106. data/sig/cli.rbs +2 -0
  107. data/sig/collection/{collections.rbs → sources.rbs} +0 -0
  108. data/sig/location.rbs +6 -0
  109. data/sig/members.rbs +24 -18
  110. data/sig/method_builder.rbs +5 -4
  111. data/sig/method_types.rbs +5 -1
  112. data/sig/polyfill.rbs +78 -0
  113. data/sig/validator.rbs +3 -1
  114. data/sig/writer.rbs +79 -2
  115. data/stdlib/abbrev/0/abbrev.rbs +6 -0
  116. data/stdlib/abbrev/0/array.rbs +26 -0
  117. data/stdlib/base64/0/base64.rbs +31 -0
  118. data/stdlib/benchmark/0/benchmark.rbs +74 -3
  119. data/stdlib/bigdecimal/0/big_decimal.rbs +614 -165
  120. data/stdlib/bigdecimal-math/0/big_math.rbs +41 -64
  121. data/stdlib/cgi/0/core.rbs +649 -21
  122. data/stdlib/coverage/0/coverage.rbs +164 -2
  123. data/stdlib/csv/0/csv.rbs +2862 -398
  124. data/stdlib/date/0/date.rbs +483 -25
  125. data/stdlib/date/0/date_time.rbs +187 -12
  126. data/stdlib/dbm/0/dbm.rbs +152 -17
  127. data/stdlib/digest/0/digest.rbs +146 -0
  128. data/stdlib/erb/0/erb.rbs +65 -245
  129. data/stdlib/fiber/0/fiber.rbs +73 -91
  130. data/stdlib/fileutils/0/fileutils.rbs +301 -1
  131. data/stdlib/find/0/find.rbs +9 -0
  132. data/stdlib/forwardable/0/forwardable.rbs +65 -1
  133. data/stdlib/io-console/0/io-console.rbs +227 -15
  134. data/stdlib/ipaddr/0/ipaddr.rbs +161 -0
  135. data/stdlib/json/0/json.rbs +1147 -145
  136. data/stdlib/logger/0/formatter.rbs +24 -0
  137. data/stdlib/logger/0/log_device.rbs +64 -0
  138. data/stdlib/logger/0/logger.rbs +165 -13
  139. data/stdlib/logger/0/period.rbs +10 -0
  140. data/stdlib/logger/0/severity.rbs +26 -0
  141. data/stdlib/monitor/0/monitor.rbs +163 -0
  142. data/stdlib/mutex_m/0/mutex_m.rbs +35 -6
  143. data/stdlib/net-http/0/manifest.yaml +1 -0
  144. data/stdlib/net-http/0/net-http.rbs +1513 -683
  145. data/stdlib/nkf/0/nkf.rbs +372 -0
  146. data/stdlib/objspace/0/objspace.rbs +149 -90
  147. data/stdlib/openssl/0/openssl.rbs +8108 -71
  148. data/stdlib/optparse/0/optparse.rbs +487 -19
  149. data/stdlib/pathname/0/pathname.rbs +425 -124
  150. data/stdlib/prettyprint/0/prettyprint.rbs +120 -99
  151. data/stdlib/prime/0/integer-extension.rbs +20 -2
  152. data/stdlib/prime/0/prime.rbs +88 -21
  153. data/stdlib/pstore/0/pstore.rbs +102 -0
  154. data/stdlib/pty/0/pty.rbs +64 -14
  155. data/stdlib/resolv/0/resolv.rbs +420 -31
  156. data/stdlib/rubygems/0/basic_specification.rbs +4 -1
  157. data/stdlib/rubygems/0/config_file.rbs +33 -1
  158. data/stdlib/rubygems/0/dependency_installer.rbs +4 -3
  159. data/stdlib/rubygems/0/installer.rbs +13 -1
  160. data/stdlib/rubygems/0/path_support.rbs +4 -1
  161. data/stdlib/rubygems/0/platform.rbs +5 -1
  162. data/stdlib/rubygems/0/request_set.rbs +44 -2
  163. data/stdlib/rubygems/0/requirement.rbs +65 -2
  164. data/stdlib/rubygems/0/rubygems.rbs +407 -0
  165. data/stdlib/rubygems/0/source_list.rbs +13 -0
  166. data/stdlib/rubygems/0/specification.rbs +21 -1
  167. data/stdlib/rubygems/0/stream_ui.rbs +3 -1
  168. data/stdlib/rubygems/0/uninstaller.rbs +8 -1
  169. data/stdlib/rubygems/0/version.rbs +60 -157
  170. data/stdlib/securerandom/0/securerandom.rbs +44 -0
  171. data/stdlib/set/0/set.rbs +423 -109
  172. data/stdlib/shellwords/0/shellwords.rbs +55 -77
  173. data/stdlib/singleton/0/singleton.rbs +20 -0
  174. data/stdlib/socket/0/addrinfo.rbs +210 -9
  175. data/stdlib/socket/0/basic_socket.rbs +103 -11
  176. data/stdlib/socket/0/ip_socket.rbs +31 -9
  177. data/stdlib/socket/0/socket.rbs +586 -38
  178. data/stdlib/socket/0/tcp_server.rbs +22 -2
  179. data/stdlib/socket/0/tcp_socket.rbs +12 -1
  180. data/stdlib/socket/0/udp_socket.rbs +25 -2
  181. data/stdlib/socket/0/unix_server.rbs +22 -2
  182. data/stdlib/socket/0/unix_socket.rbs +45 -5
  183. data/stdlib/strscan/0/string_scanner.rbs +210 -9
  184. data/stdlib/tempfile/0/tempfile.rbs +58 -10
  185. data/stdlib/time/0/time.rbs +208 -116
  186. data/stdlib/timeout/0/timeout.rbs +10 -0
  187. data/stdlib/tmpdir/0/tmpdir.rbs +13 -4
  188. data/stdlib/tsort/0/cyclic.rbs +1 -0
  189. data/stdlib/tsort/0/interfaces.rbs +1 -0
  190. data/stdlib/tsort/0/tsort.rbs +42 -0
  191. data/stdlib/uri/0/common.rbs +57 -8
  192. data/stdlib/uri/0/file.rbs +55 -109
  193. data/stdlib/uri/0/ftp.rbs +6 -3
  194. data/stdlib/uri/0/generic.rbs +558 -329
  195. data/stdlib/uri/0/http.rbs +60 -114
  196. data/stdlib/uri/0/https.rbs +8 -102
  197. data/stdlib/uri/0/ldap.rbs +143 -137
  198. data/stdlib/uri/0/ldaps.rbs +8 -102
  199. data/stdlib/uri/0/mailto.rbs +3 -0
  200. data/stdlib/uri/0/rfc2396_parser.rbs +66 -26
  201. data/stdlib/uri/0/ws.rbs +6 -3
  202. data/stdlib/uri/0/wss.rbs +5 -3
  203. data/stdlib/yaml/0/dbm.rbs +151 -87
  204. data/stdlib/yaml/0/store.rbs +6 -0
  205. data/stdlib/zlib/0/zlib.rbs +90 -31
  206. metadata +18 -6
  207. data/lib/rbs/location.rb +0 -221
  208. data/sig/char_scanner.rbs +0 -9
data/core/ractor.rbs CHANGED
@@ -1,15 +1,16 @@
1
+ # <!-- rdoc-file=ractor.rb -->
1
2
  # Ractor is a Actor-model abstraction for Ruby that provides thread-safe
2
3
  # parallel execution.
3
4
  #
4
- # Ractor.new can make new Ractor and it will run in parallel.
5
+ # Ractor.new can make a new Ractor, and it will run in parallel.
5
6
  #
6
7
  # # The simplest ractor
7
8
  # r = Ractor.new {puts "I am in Ractor!"}
8
- # r.take # wait it to finish
9
+ # r.take # wait for it to finish
9
10
  # # here "I am in Ractor!" would be printed
10
11
  #
11
- # Ractors do not share usual objects, so the some kind of thread-safety concerns
12
- # such as data-race, race-conditions are not available on multi-ractor
12
+ # Ractors do not share usual objects, so the same kinds of thread-safety
13
+ # concerns such as data-race, race-conditions are not available on multi-ractor
13
14
  # programming.
14
15
  #
15
16
  # To achieve this, ractors severely limit object sharing between different
@@ -156,7 +157,7 @@
156
157
  # inaccessible on a moved object.
157
158
  #
158
159
  # Besides frozen objects, there are shareable objects. Class and Module objects
159
- # are shareable so the Class/Module definitons are shared between ractors.
160
+ # are shareable so the Class/Module definitions are shared between ractors.
160
161
  # Ractor objects are also shareable objects. All operations for the shareable
161
162
  # mutable objects are thread-safe, so the thread-safety property will be kept.
162
163
  # We can not define mutable shareable objects in Ruby, but C extensions can
@@ -206,7 +207,7 @@
206
207
  # # can not access instance variables of classes/modules from non-main Ractors (RuntimeError)
207
208
  #
208
209
  # See also the description of `# shareable_constant_value` pragma in [Comments
209
- # syntax](rdoc-ref:doc/syntax/comments.rdoc) explanation.
210
+ # syntax](rdoc-ref:syntax/comments.rdoc) explanation.
210
211
  #
211
212
  # ## Ractors vs threads
212
213
  #
@@ -235,8 +236,13 @@
235
236
  #
236
237
  # ## Reference
237
238
  #
238
- # See [Ractor desgin doc](rdoc-ref:doc/ractor.md) for more details.
239
+ # See [Ractor design doc](rdoc-ref:ractor.md) for more details.
240
+ #
239
241
  class Ractor
242
+ # <!--
243
+ # rdoc-file=ractor.rb
244
+ # - count()
245
+ # -->
240
246
  # Returns total count of Ractors currently running.
241
247
  #
242
248
  # Ractor.count #=> 1
@@ -248,16 +254,28 @@ class Ractor
248
254
  #
249
255
  def self.count: () -> Integer
250
256
 
257
+ # <!--
258
+ # rdoc-file=ractor.rb
259
+ # - current()
260
+ # -->
251
261
  # Returns the currently executing Ractor.
252
262
  #
253
263
  # Ractor.current #=> #<Ractor:#1 running>
254
264
  #
255
265
  def self.current: () -> untyped
256
266
 
267
+ # <!--
268
+ # rdoc-file=ractor.rb
269
+ # - main()
270
+ # -->
257
271
  # returns main ractor
258
272
  #
259
273
  def self.main: () -> untyped
260
274
 
275
+ # <!--
276
+ # rdoc-file=ractor.rb
277
+ # - Ractor.make_shareable(obj, copy: false) -> shareable_obj
278
+ # -->
261
279
  # Make `obj` shareable between ractors.
262
280
  #
263
281
  # `obj` and all the objects it refers to will be frozen, unless they are already
@@ -293,6 +311,10 @@ class Ractor
293
311
  #
294
312
  def self.make_shareable: [T] (T obj, ?copy: boolish) -> T
295
313
 
314
+ # <!--
315
+ # rdoc-file=ractor.rb
316
+ # - Ractor.new(*args, name: nil) {|*args| block } -> ractor
317
+ # -->
296
318
  # Create a new Ractor with args and a block.
297
319
  #
298
320
  # A block (Proc) will be isolated (can't access to outer variables). `self`
@@ -324,6 +346,10 @@ class Ractor
324
346
  #
325
347
  def self.new: (*untyped args, ?name: string) { (*untyped) -> untyped } -> Ractor
326
348
 
349
+ # <!--
350
+ # rdoc-file=ractor.rb
351
+ # - Ractor.receive -> msg
352
+ # -->
327
353
  # Receive an incoming message from the current Ractor's incoming port's queue,
328
354
  # which was sent there by #send.
329
355
  #
@@ -382,6 +408,10 @@ class Ractor
382
408
  #
383
409
  def self.receive: () -> untyped
384
410
 
411
+ # <!--
412
+ # rdoc-file=ractor.rb
413
+ # - Ractor.receive_if {|msg| block } -> msg
414
+ # -->
385
415
  # Receive only a specific message.
386
416
  #
387
417
  # Instead of Ractor.receive, Ractor.receive_if can provide a pattern by a block
@@ -404,7 +434,7 @@ class Ractor
404
434
  # baz2
405
435
  #
406
436
  # If the block returns a truthy value, the message will be removed from the
407
- # incoming queue and returned. Otherwise, the messsage remains in the incoming
437
+ # incoming queue and returned. Otherwise, the message remains in the incoming
408
438
  # queue and the following received messages are checked by the given block.
409
439
  #
410
440
  # If there are no messages left in the incoming queue, the method will block
@@ -439,8 +469,17 @@ class Ractor
439
469
  #
440
470
  def self.receive_if: () { (untyped) -> boolish } -> untyped
441
471
 
472
+ # <!--
473
+ # rdoc-file=ractor.rb
474
+ # - recv()
475
+ # -->
476
+ #
442
477
  alias self.recv self.receive
443
478
 
479
+ # <!--
480
+ # rdoc-file=ractor.rb
481
+ # - Ractor.select(*ractors, [yield_value:, move: false]) -> [ractor or symbol, obj]
482
+ # -->
444
483
  # Waits for the first ractor to have something in its outgoing port, reads from
445
484
  # this ractor, and returns that ractor and the object received.
446
485
  #
@@ -488,8 +527,12 @@ class Ractor
488
527
  # `move` boolean flag defines whether yielded value should be copied (default)
489
528
  # or moved.
490
529
  #
491
- def self.select: (*Ractor ractors, ?move: boolish, ?yield_value: untyped) -> [Ractor | Symbol, untyped]
530
+ def self.select: (*Ractor ractors, ?move: boolish, ?yield_value: untyped) -> [ Ractor | Symbol, untyped ]
492
531
 
532
+ # <!--
533
+ # rdoc-file=ractor.rb
534
+ # - Ractor.shareable?(obj) -> true | false
535
+ # -->
493
536
  # Checks if the object is shareable by ractors.
494
537
  #
495
538
  # Ractor.shareable?(1) #=> true -- numbers and other immutable basic values are frozen
@@ -501,6 +544,10 @@ class Ractor
501
544
  #
502
545
  def self.shareable?: (untyped obj) -> bool
503
546
 
547
+ # <!--
548
+ # rdoc-file=ractor.rb
549
+ # - Ractor.yield(msg, move: false) -> nil
550
+ # -->
504
551
  # Send a message to the current ractor's outgoing port to be consumed by #take.
505
552
  #
506
553
  # r = Ractor.new {Ractor.yield 'Hello from ractor'}
@@ -539,16 +586,33 @@ class Ractor
539
586
 
540
587
  public
541
588
 
589
+ # <!--
590
+ # rdoc-file=ractor.rb
591
+ # - <<(obj, move: false)
592
+ # -->
593
+ #
542
594
  alias << send
543
595
 
596
+ # <!--
597
+ # rdoc-file=ractor.rb
598
+ # - [](sym)
599
+ # -->
544
600
  # get a value from ractor-local storage
545
601
  #
546
602
  def []: (Symbol | String sym) -> untyped
547
603
 
604
+ # <!--
605
+ # rdoc-file=ractor.rb
606
+ # - []=(sym, val)
607
+ # -->
548
608
  # set a value in ractor-local storage
549
609
  #
550
610
  def []=: [T] (Symbol | String sym, T val) -> T
551
611
 
612
+ # <!--
613
+ # rdoc-file=ractor.rb
614
+ # - ractor.close_incoming -> true | false
615
+ # -->
552
616
  # Closes the incoming port and returns its previous state. All further attempts
553
617
  # to Ractor.receive in the ractor, and #send to the ractor will fail with
554
618
  # Ractor::ClosedError.
@@ -561,6 +625,10 @@ class Ractor
561
625
  #
562
626
  def close_incoming: () -> bool
563
627
 
628
+ # <!--
629
+ # rdoc-file=ractor.rb
630
+ # - ractor.close_outgoing -> true | false
631
+ # -->
564
632
  # Closes the outgoing port and returns its previous state. All further attempts
565
633
  # to Ractor.yield in the ractor, and #take from the ractor will fail with
566
634
  # Ractor::ClosedError.
@@ -573,12 +641,25 @@ class Ractor
573
641
  #
574
642
  def close_outgoing: () -> bool
575
643
 
644
+ # <!--
645
+ # rdoc-file=ractor.rb
646
+ # - inspect()
647
+ # -->
648
+ #
576
649
  def inspect: () -> String
577
650
 
651
+ # <!--
652
+ # rdoc-file=ractor.rb
653
+ # - name()
654
+ # -->
578
655
  # The name set in Ractor.new, or `nil`.
579
656
  #
580
657
  def name: () -> String?
581
658
 
659
+ # <!--
660
+ # rdoc-file=ractor.rb
661
+ # - ractor.send(msg, move: false) -> self
662
+ # -->
582
663
  # Send a message to a Ractor's incoming queue to be consumed by Ractor.receive.
583
664
  #
584
665
  # r = Ractor.new do
@@ -660,6 +741,10 @@ class Ractor
660
741
  #
661
742
  def send: (untyped obj, ?move: boolish) -> Ractor
662
743
 
744
+ # <!--
745
+ # rdoc-file=ractor.rb
746
+ # - ractor.take -> msg
747
+ # -->
663
748
  # Take a message from ractor's outgoing port, which was put there by
664
749
  # Ractor.yield or at ractor's finalization.
665
750
  #
@@ -722,18 +807,71 @@ class Ractor
722
807
  #
723
808
  def take: () -> untyped
724
809
 
810
+ # <!--
811
+ # rdoc-file=ractor.rb
812
+ # - to_s()
813
+ # -->
814
+ #
725
815
  alias to_s inspect
726
816
 
727
817
  private
728
818
 
819
+ # <!--
820
+ # rdoc-file=ractor.rb
821
+ # - receive()
822
+ # -->
729
823
  # same as Ractor.receive
730
824
  #
731
825
  def receive: () -> untyped
732
826
 
827
+ # <!--
828
+ # rdoc-file=ractor.rb
829
+ # - receive_if(&b)
830
+ # -->
831
+ #
733
832
  def receive_if: () { (untyped) -> boolish } -> untyped
734
833
 
834
+ # <!--
835
+ # rdoc-file=ractor.rb
836
+ # - recv()
837
+ # -->
838
+ #
735
839
  alias recv receive
736
840
 
841
+ # <!-- rdoc-file=ractor.c -->
842
+ # Raised when an attempt is made to send a message to a closed port, or to
843
+ # retrieve a message from a closed and empty port. Ports may be closed
844
+ # explicitly with Ractor#close_outgoing/close_incoming and are closed implicitly
845
+ # when a Ractor terminates.
846
+ #
847
+ # r = Ractor.new { sleep(500) }
848
+ # r.close_outgoing
849
+ # r.take # Ractor::ClosedError
850
+ #
851
+ # ClosedError is a descendant of StopIteration, so the closing of the ractor
852
+ # will break the loops without propagating the error:
853
+ #
854
+ # r = Ractor.new do
855
+ # loop do
856
+ # msg = receive # raises ClosedError and loop traps it
857
+ # puts "Received: #{msg}"
858
+ # end
859
+ # puts "loop exited"
860
+ # end
861
+ #
862
+ # 3.times{|i| r << i}
863
+ # r.close_incoming
864
+ # r.take
865
+ # puts "Continue successfully"
866
+ #
867
+ # This will print:
868
+ #
869
+ # Received: 0
870
+ # Received: 1
871
+ # Received: 2
872
+ # loop exited
873
+ # Continue successfully
874
+ #
737
875
  class ClosedError < StopIteration
738
876
  end
739
877
 
@@ -743,31 +881,116 @@ class Ractor
743
881
  class IsolationError < Ractor::Error
744
882
  end
745
883
 
884
+ # <!-- rdoc-file=ractor.c -->
885
+ # Raised on an attempt to access an object which was moved in Ractor#send or
886
+ # Ractor.yield.
887
+ #
888
+ # r = Ractor.new { sleep }
889
+ #
890
+ # ary = [1, 2, 3]
891
+ # r.send(ary, move: true)
892
+ # ary.inspect
893
+ # # Ractor::MovedError (can not send any methods to a moved object)
894
+ #
746
895
  class MovedError < Ractor::Error
747
896
  end
748
897
 
898
+ # <!-- rdoc-file=ractor.c -->
899
+ # A special object which replaces any value that was moved to another ractor in
900
+ # Ractor#send or Ractor.yield. Any attempt to access the object results in
901
+ # Ractor::MovedError.
902
+ #
903
+ # r = Ractor.new { receive }
904
+ #
905
+ # ary = [1, 2, 3]
906
+ # r.send(ary, move: true)
907
+ # p Ractor::MovedObject === ary
908
+ # # => true
909
+ # ary.inspect
910
+ # # Ractor::MovedError (can not send any methods to a moved object)
911
+ #
749
912
  class MovedObject < BasicObject
750
913
  public
751
914
 
915
+ # <!--
916
+ # rdoc-file=ractor.c
917
+ # - !(*args)
918
+ # -->
919
+ #
752
920
  def !: (*untyped) -> untyped
753
921
 
922
+ # <!--
923
+ # rdoc-file=ractor.c
924
+ # - !=(*args)
925
+ # -->
926
+ #
754
927
  def !=: (*untyped) -> untyped
755
928
 
929
+ # <!--
930
+ # rdoc-file=ractor.c
931
+ # - ==(*args)
932
+ # -->
933
+ #
756
934
  def ==: (*untyped) -> untyped
757
935
 
936
+ # <!--
937
+ # rdoc-file=ractor.c
938
+ # - __id__(*args)
939
+ # -->
940
+ #
758
941
  def __id__: (*untyped) -> untyped
759
942
 
943
+ # <!--
944
+ # rdoc-file=ractor.c
945
+ # - __send__(*args)
946
+ # -->
947
+ #
760
948
  def __send__: (*untyped) -> untyped
761
949
 
950
+ # <!--
951
+ # rdoc-file=ractor.c
952
+ # - equal?(*args)
953
+ # -->
954
+ #
762
955
  def equal?: (*untyped) -> untyped
763
956
 
957
+ # <!--
958
+ # rdoc-file=ractor.c
959
+ # - instance_eval(*args)
960
+ # -->
961
+ #
764
962
  def instance_eval: (*untyped) -> untyped
765
963
 
964
+ # <!--
965
+ # rdoc-file=ractor.c
966
+ # - instance_exec(*args)
967
+ # -->
968
+ #
766
969
  def instance_exec: (*untyped) -> untyped
767
970
 
971
+ # <!--
972
+ # rdoc-file=ractor.c
973
+ # - method_missing(*args)
974
+ # -->
975
+ #
768
976
  def method_missing: (*untyped) -> untyped
769
977
  end
770
978
 
979
+ # <!-- rdoc-file=ractor.c -->
980
+ # Raised on attempt to Ractor#take if there was an uncaught exception in the
981
+ # Ractor. Its `cause` will contain the original exception, and `ractor` is the
982
+ # original ractor it was raised in.
983
+ #
984
+ # r = Ractor.new { raise "Something weird happened" }
985
+ #
986
+ # begin
987
+ # r.take
988
+ # rescue => e
989
+ # p e # => #<Ractor::RemoteError: thrown by remote Ractor.>
990
+ # p e.ractor == r # => true
991
+ # p e.cause # => #<RuntimeError: Something weird happened>
992
+ # end
993
+ #
771
994
  class RemoteError < Ractor::Error
772
995
  public
773
996