rbs 4.0.0.dev.4 → 4.0.0

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 (281) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +14 -14
  3. data/.github/workflows/bundle-update.yml +60 -0
  4. data/.github/workflows/c-check.yml +18 -11
  5. data/.github/workflows/comments.yml +5 -3
  6. data/.github/workflows/dependabot.yml +2 -2
  7. data/.github/workflows/ruby.yml +27 -34
  8. data/.github/workflows/rust.yml +95 -0
  9. data/.github/workflows/typecheck.yml +2 -2
  10. data/.github/workflows/windows.yml +2 -2
  11. data/.rubocop.yml +1 -1
  12. data/CHANGELOG.md +323 -0
  13. data/README.md +1 -1
  14. data/Rakefile +43 -33
  15. data/Steepfile +1 -0
  16. data/config.yml +426 -24
  17. data/core/array.rbs +307 -227
  18. data/core/basic_object.rbs +9 -8
  19. data/core/binding.rbs +0 -2
  20. data/core/builtin.rbs +2 -2
  21. data/core/class.rbs +6 -5
  22. data/core/comparable.rbs +55 -34
  23. data/core/complex.rbs +104 -78
  24. data/core/dir.rbs +61 -49
  25. data/core/encoding.rbs +12 -15
  26. data/core/enumerable.rbs +179 -87
  27. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  28. data/core/enumerator.rbs +65 -2
  29. data/core/errno.rbs +11 -2
  30. data/core/errors.rbs +58 -29
  31. data/core/exception.rbs +13 -13
  32. data/core/fiber.rbs +74 -54
  33. data/core/file.rbs +280 -177
  34. data/core/file_test.rbs +3 -3
  35. data/core/float.rbs +257 -92
  36. data/core/gc.rbs +425 -281
  37. data/core/hash.rbs +1045 -739
  38. data/core/integer.rbs +135 -137
  39. data/core/io/buffer.rbs +53 -42
  40. data/core/io/wait.rbs +13 -35
  41. data/core/io.rbs +192 -144
  42. data/core/kernel.rbs +216 -155
  43. data/core/marshal.rbs +4 -4
  44. data/core/match_data.rbs +15 -13
  45. data/core/math.rbs +107 -66
  46. data/core/method.rbs +69 -33
  47. data/core/module.rbs +244 -106
  48. data/core/nil_class.rbs +7 -6
  49. data/core/numeric.rbs +74 -63
  50. data/core/object.rbs +9 -11
  51. data/core/object_space.rbs +30 -23
  52. data/core/pathname.rbs +1322 -0
  53. data/core/proc.rbs +95 -58
  54. data/core/process.rbs +222 -202
  55. data/core/ractor.rbs +371 -515
  56. data/core/random.rbs +21 -3
  57. data/core/range.rbs +159 -57
  58. data/core/rational.rbs +60 -89
  59. data/core/rbs/unnamed/argf.rbs +60 -53
  60. data/core/rbs/unnamed/env_class.rbs +19 -14
  61. data/core/rbs/unnamed/main_class.rbs +123 -0
  62. data/core/rbs/unnamed/random.rbs +11 -118
  63. data/core/regexp.rbs +258 -214
  64. data/core/ruby.rbs +53 -0
  65. data/core/ruby_vm.rbs +38 -34
  66. data/core/rubygems/config_file.rbs +5 -5
  67. data/core/rubygems/errors.rbs +4 -71
  68. data/core/rubygems/requirement.rbs +5 -5
  69. data/core/rubygems/rubygems.rbs +16 -82
  70. data/core/rubygems/version.rbs +2 -3
  71. data/core/set.rbs +490 -360
  72. data/core/signal.rbs +26 -16
  73. data/core/string.rbs +3234 -1285
  74. data/core/struct.rbs +27 -26
  75. data/core/symbol.rbs +41 -34
  76. data/core/thread.rbs +135 -67
  77. data/core/time.rbs +81 -50
  78. data/core/trace_point.rbs +41 -35
  79. data/core/true_class.rbs +2 -2
  80. data/core/unbound_method.rbs +24 -16
  81. data/core/warning.rbs +7 -7
  82. data/docs/aliases.md +79 -0
  83. data/docs/collection.md +3 -3
  84. data/docs/config.md +171 -0
  85. data/docs/encoding.md +56 -0
  86. data/docs/gem.md +0 -1
  87. data/docs/inline.md +576 -0
  88. data/docs/sigs.md +3 -3
  89. data/docs/syntax.md +46 -16
  90. data/docs/type_fingerprint.md +21 -0
  91. data/exe/rbs +1 -1
  92. data/ext/rbs_extension/ast_translation.c +544 -116
  93. data/ext/rbs_extension/ast_translation.h +3 -0
  94. data/ext/rbs_extension/class_constants.c +16 -2
  95. data/ext/rbs_extension/class_constants.h +8 -0
  96. data/ext/rbs_extension/extconf.rb +5 -1
  97. data/ext/rbs_extension/legacy_location.c +33 -56
  98. data/ext/rbs_extension/legacy_location.h +37 -0
  99. data/ext/rbs_extension/main.c +44 -35
  100. data/include/rbs/ast.h +448 -173
  101. data/include/rbs/defines.h +27 -0
  102. data/include/rbs/lexer.h +30 -11
  103. data/include/rbs/location.h +25 -44
  104. data/include/rbs/parser.h +6 -6
  105. data/include/rbs/string.h +0 -2
  106. data/include/rbs/util/rbs_allocator.h +34 -13
  107. data/include/rbs/util/rbs_assert.h +12 -1
  108. data/include/rbs/util/rbs_constant_pool.h +0 -3
  109. data/include/rbs/util/rbs_encoding.h +2 -0
  110. data/include/rbs/util/rbs_unescape.h +2 -1
  111. data/include/rbs.h +8 -0
  112. data/lib/rbs/ast/annotation.rb +1 -1
  113. data/lib/rbs/ast/comment.rb +1 -1
  114. data/lib/rbs/ast/declarations.rb +10 -10
  115. data/lib/rbs/ast/members.rb +14 -14
  116. data/lib/rbs/ast/ruby/annotations.rb +293 -3
  117. data/lib/rbs/ast/ruby/comment_block.rb +24 -0
  118. data/lib/rbs/ast/ruby/declarations.rb +198 -3
  119. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
  120. data/lib/rbs/ast/ruby/members.rb +532 -22
  121. data/lib/rbs/ast/type_param.rb +24 -4
  122. data/lib/rbs/buffer.rb +20 -15
  123. data/lib/rbs/cli/diff.rb +16 -15
  124. data/lib/rbs/cli/validate.rb +38 -106
  125. data/lib/rbs/cli.rb +52 -19
  126. data/lib/rbs/collection/config/lockfile_generator.rb +14 -2
  127. data/lib/rbs/collection/sources/git.rb +1 -0
  128. data/lib/rbs/definition.rb +1 -1
  129. data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
  130. data/lib/rbs/definition_builder/method_builder.rb +20 -0
  131. data/lib/rbs/definition_builder.rb +147 -25
  132. data/lib/rbs/diff.rb +7 -1
  133. data/lib/rbs/environment.rb +227 -74
  134. data/lib/rbs/environment_loader.rb +0 -6
  135. data/lib/rbs/errors.rb +27 -18
  136. data/lib/rbs/inline_parser.rb +342 -6
  137. data/lib/rbs/location_aux.rb +1 -1
  138. data/lib/rbs/locator.rb +5 -1
  139. data/lib/rbs/method_type.rb +5 -3
  140. data/lib/rbs/parser_aux.rb +20 -7
  141. data/lib/rbs/prototype/helpers.rb +57 -0
  142. data/lib/rbs/prototype/rb.rb +3 -28
  143. data/lib/rbs/prototype/rbi.rb +3 -20
  144. data/lib/rbs/prototype/runtime.rb +8 -0
  145. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  146. data/lib/rbs/resolver/type_name_resolver.rb +116 -38
  147. data/lib/rbs/subtractor.rb +3 -1
  148. data/lib/rbs/test/type_check.rb +19 -2
  149. data/lib/rbs/type_name.rb +1 -1
  150. data/lib/rbs/types.rb +88 -78
  151. data/lib/rbs/unit_test/type_assertions.rb +35 -8
  152. data/lib/rbs/validator.rb +2 -2
  153. data/lib/rbs/version.rb +1 -1
  154. data/lib/rbs.rb +1 -2
  155. data/lib/rdoc/discover.rb +1 -1
  156. data/lib/rdoc_plugin/parser.rb +1 -1
  157. data/rbs.gemspec +4 -3
  158. data/rust/.gitignore +1 -0
  159. data/rust/Cargo.lock +378 -0
  160. data/rust/Cargo.toml +7 -0
  161. data/rust/ruby-rbs/Cargo.toml +22 -0
  162. data/rust/ruby-rbs/build.rs +764 -0
  163. data/rust/ruby-rbs/examples/locations.rs +60 -0
  164. data/rust/ruby-rbs/src/lib.rs +1 -0
  165. data/rust/ruby-rbs/src/node/mod.rs +742 -0
  166. data/rust/ruby-rbs/tests/sanity.rs +47 -0
  167. data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
  168. data/rust/ruby-rbs-sys/Cargo.toml +23 -0
  169. data/rust/ruby-rbs-sys/build.rs +204 -0
  170. data/rust/ruby-rbs-sys/src/lib.rs +50 -0
  171. data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
  172. data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
  173. data/rust/ruby-rbs-sys/wrapper.h +1 -0
  174. data/schema/typeParam.json +17 -1
  175. data/sig/ast/ruby/annotations.rbs +315 -4
  176. data/sig/ast/ruby/comment_block.rbs +8 -0
  177. data/sig/ast/ruby/declarations.rbs +102 -4
  178. data/sig/ast/ruby/members.rbs +108 -2
  179. data/sig/cli/diff.rbs +5 -11
  180. data/sig/cli/validate.rbs +12 -8
  181. data/sig/cli.rbs +18 -18
  182. data/sig/definition.rbs +6 -1
  183. data/sig/definition_builder.rbs +2 -0
  184. data/sig/environment.rbs +70 -12
  185. data/sig/errors.rbs +13 -14
  186. data/sig/inline_parser.rbs +39 -2
  187. data/sig/locator.rbs +0 -2
  188. data/sig/manifest.yaml +0 -1
  189. data/sig/method_builder.rbs +3 -1
  190. data/sig/parser.rbs +31 -13
  191. data/sig/prototype/helpers.rbs +2 -0
  192. data/sig/resolver/type_name_resolver.rbs +35 -7
  193. data/sig/source.rbs +3 -3
  194. data/sig/type_param.rbs +13 -8
  195. data/sig/types.rbs +6 -7
  196. data/sig/unit_test/spy.rbs +0 -8
  197. data/sig/unit_test/type_assertions.rbs +11 -0
  198. data/src/ast.c +410 -153
  199. data/src/lexer.c +1392 -1313
  200. data/src/lexer.re +3 -0
  201. data/src/lexstate.c +58 -37
  202. data/src/location.c +8 -48
  203. data/src/parser.c +977 -516
  204. data/src/string.c +0 -48
  205. data/src/util/rbs_allocator.c +89 -71
  206. data/src/util/rbs_assert.c +1 -1
  207. data/src/util/rbs_buffer.c +2 -2
  208. data/src/util/rbs_constant_pool.c +10 -14
  209. data/src/util/rbs_encoding.c +4 -8
  210. data/src/util/rbs_unescape.c +56 -20
  211. data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
  212. data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
  213. data/stdlib/cgi/0/core.rbs +9 -393
  214. data/stdlib/cgi/0/manifest.yaml +1 -0
  215. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  216. data/stdlib/coverage/0/coverage.rbs +7 -4
  217. data/stdlib/date/0/date.rbs +92 -79
  218. data/stdlib/date/0/date_time.rbs +25 -24
  219. data/stdlib/delegate/0/delegator.rbs +10 -7
  220. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  221. data/stdlib/digest/0/digest.rbs +110 -0
  222. data/stdlib/erb/0/erb.rbs +748 -347
  223. data/stdlib/etc/0/etc.rbs +55 -50
  224. data/stdlib/fileutils/0/fileutils.rbs +158 -139
  225. data/stdlib/forwardable/0/forwardable.rbs +13 -10
  226. data/stdlib/io-console/0/io-console.rbs +2 -2
  227. data/stdlib/json/0/json.rbs +217 -136
  228. data/stdlib/monitor/0/monitor.rbs +3 -3
  229. data/stdlib/net-http/0/net-http.rbs +162 -134
  230. data/stdlib/objspace/0/objspace.rbs +17 -34
  231. data/stdlib/open-uri/0/open-uri.rbs +48 -8
  232. data/stdlib/open3/0/open3.rbs +469 -10
  233. data/stdlib/openssl/0/openssl.rbs +475 -357
  234. data/stdlib/optparse/0/optparse.rbs +26 -17
  235. data/stdlib/pathname/0/pathname.rbs +11 -1381
  236. data/stdlib/pp/0/pp.rbs +9 -8
  237. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  238. data/stdlib/pstore/0/pstore.rbs +35 -30
  239. data/stdlib/psych/0/psych.rbs +65 -12
  240. data/stdlib/psych/0/store.rbs +2 -4
  241. data/stdlib/pty/0/pty.rbs +9 -6
  242. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  243. data/stdlib/rdoc/0/code_object.rbs +2 -1
  244. data/stdlib/rdoc/0/parser.rbs +1 -1
  245. data/stdlib/rdoc/0/rdoc.rbs +1 -1
  246. data/stdlib/rdoc/0/store.rbs +1 -1
  247. data/stdlib/resolv/0/resolv.rbs +25 -68
  248. data/stdlib/ripper/0/ripper.rbs +22 -19
  249. data/stdlib/securerandom/0/manifest.yaml +2 -0
  250. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  251. data/stdlib/shellwords/0/shellwords.rbs +2 -2
  252. data/stdlib/singleton/0/singleton.rbs +3 -0
  253. data/stdlib/socket/0/addrinfo.rbs +7 -7
  254. data/stdlib/socket/0/basic_socket.rbs +3 -3
  255. data/stdlib/socket/0/ip_socket.rbs +10 -8
  256. data/stdlib/socket/0/socket.rbs +23 -10
  257. data/stdlib/socket/0/tcp_server.rbs +1 -1
  258. data/stdlib/socket/0/tcp_socket.rbs +11 -3
  259. data/stdlib/socket/0/udp_socket.rbs +1 -1
  260. data/stdlib/socket/0/unix_server.rbs +1 -1
  261. data/stdlib/stringio/0/stringio.rbs +1177 -85
  262. data/stdlib/strscan/0/string_scanner.rbs +27 -25
  263. data/stdlib/tempfile/0/tempfile.rbs +25 -21
  264. data/stdlib/time/0/time.rbs +8 -6
  265. data/stdlib/timeout/0/timeout.rbs +63 -7
  266. data/stdlib/tsort/0/cyclic.rbs +3 -0
  267. data/stdlib/tsort/0/tsort.rbs +7 -6
  268. data/stdlib/uri/0/common.rbs +42 -20
  269. data/stdlib/uri/0/file.rbs +3 -3
  270. data/stdlib/uri/0/generic.rbs +26 -18
  271. data/stdlib/uri/0/http.rbs +2 -2
  272. data/stdlib/uri/0/ldap.rbs +2 -2
  273. data/stdlib/uri/0/mailto.rbs +3 -3
  274. data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
  275. data/stdlib/zlib/0/deflate.rbs +4 -3
  276. data/stdlib/zlib/0/gzip_reader.rbs +6 -6
  277. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  278. data/stdlib/zlib/0/inflate.rbs +1 -1
  279. data/stdlib/zlib/0/need_dict.rbs +1 -1
  280. data/stdlib/zlib/0/zstream.rbs +1 -0
  281. metadata +50 -6
@@ -29,34 +29,21 @@
29
29
  # * uuid
30
30
  #
31
31
  # These methods are usable as class methods of SecureRandom such as
32
- # `SecureRandom.hex`.
32
+ # <code>SecureRandom.hex</code>.
33
33
  #
34
34
  # If a secure random number generator is not available, `NotImplementedError` is
35
35
  # raised.
36
36
  #
37
37
  module SecureRandom
38
- extend Random::Formatter
39
-
40
38
  # <!--
41
39
  # rdoc-file=lib/securerandom.rb
42
- # - alphanumeric(n = nil, chars: ALPHANUMERIC)
40
+ # - bytes(n)
43
41
  # -->
44
- # Compatibility methods for Ruby 3.2, we can remove this after dropping to
45
- # support Ruby 3.2
42
+ # Returns a random binary string containing `size` bytes.
46
43
  #
47
- def self.alphanumeric: (?Integer?) -> String
48
-
49
- def self.base64: (?Integer?) -> String
50
-
51
- def self.hex: (?Integer?) -> String
52
-
53
- def self.random_bytes: (?Integer?) -> String
54
-
55
- def self.random_number: () -> Float
56
- | (Integer) -> Integer
57
- | (Numeric) -> Numeric
58
-
59
- def self.urlsafe_base64: (?Integer?, ?bool?) -> String
44
+ # See Random.bytes
45
+ #
46
+ def self.bytes: (Integer) -> String
60
47
 
61
- def self.uuid: () -> String
48
+ extend Random::Formatter
62
49
  end
@@ -4,8 +4,8 @@
4
4
  # This module manipulates strings according to the word parsing rules of the
5
5
  # UNIX Bourne shell.
6
6
  #
7
- # The `shellwords()` function was originally a port of shellwords.pl, but
8
- # modified to conform to [the Shell & Utilities volume of the IEEE Std
7
+ # The <code>shellwords()</code> function was originally a port of shellwords.pl,
8
+ # but modified to conform to [the Shell & Utilities volume of the IEEE Std
9
9
  # 1003.1-2008, 2016
10
10
  # Edition](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.ht
11
11
  # ml)
@@ -128,4 +128,7 @@ module Singleton
128
128
  end
129
129
  end
130
130
 
131
+ # <!-- rdoc-file=lib/singleton.rb -->
132
+ # The version string
133
+ #
131
134
  Singleton::VERSION: String
@@ -634,13 +634,13 @@ class Addrinfo
634
634
  # sockaddr as generated by Socket.sockaddr_in or Socket.unpack_sockaddr_un.
635
635
  #
636
636
  # sockaddr examples:
637
- # * `["AF_INET", 46102, "localhost.localdomain", "127.0.0.1"]`
638
- # * `["AF_INET6", 42304, "ip6-localhost", "::1"]`
639
- # * `["AF_UNIX", "/tmp/sock"]`
640
- # * `Socket.sockaddr_in("smtp", "2001:DB8::1")`
641
- # * `Socket.sockaddr_in(80, "172.18.22.42")`
642
- # * `Socket.sockaddr_in(80, "www.ruby-lang.org")`
643
- # * `Socket.sockaddr_un("/tmp/sock")`
637
+ # * <code>["AF_INET", 46102, "localhost.localdomain", "127.0.0.1"]</code>
638
+ # * <code>["AF_INET6", 42304, "ip6-localhost", "::1"]</code>
639
+ # * <code>["AF_UNIX", "/tmp/sock"]</code>
640
+ # * <code>Socket.sockaddr_in("smtp", "2001:DB8::1")</code>
641
+ # * <code>Socket.sockaddr_in(80, "172.18.22.42")</code>
642
+ # * <code>Socket.sockaddr_in(80, "www.ruby-lang.org")</code>
643
+ # * <code>Socket.sockaddr_un("/tmp/sock")</code>
644
644
  #
645
645
  # In an AF_INET/AF_INET6 sockaddr array, the 4th element, numeric IP address, is
646
646
  # used to construct socket address in the Addrinfo instance. If the 3rd element,
@@ -325,7 +325,7 @@ class BasicSocket < IO
325
325
  #
326
326
  # By specifying a keyword argument *exception* to `false`, you can indicate that
327
327
  # recv_nonblock should not raise an IO::WaitReadable exception, but return the
328
- # symbol `:wait_readable` instead.
328
+ # symbol <code>:wait_readable</code> instead.
329
329
  #
330
330
  # ### See
331
331
  # * Socket#recvfrom
@@ -399,7 +399,7 @@ class BasicSocket < IO
399
399
  #
400
400
  # By specifying a keyword argument *exception* to `false`, you can indicate that
401
401
  # recvmsg_nonblock should not raise an IO::WaitReadable exception, but return
402
- # the symbol `:wait_readable` instead.
402
+ # the symbol <code>:wait_readable</code> instead.
403
403
  #
404
404
  def recvmsg_nonblock: (?Integer dlen, ?Integer flags, ?Integer clen, ?exception: boolish, ?scm_rights: boolish) -> ([ String, Addrinfo, Integer?, Array[Socket::AncillaryData] ] | :wait_readable)
405
405
 
@@ -487,7 +487,7 @@ class BasicSocket < IO
487
487
  #
488
488
  # By specifying a keyword argument *exception* to `false`, you can indicate that
489
489
  # sendmsg_nonblock should not raise an IO::WaitWritable exception, but return
490
- # the symbol `:wait_writable` instead.
490
+ # the symbol <code>:wait_writable</code> instead.
491
491
  #
492
492
  def sendmsg_nonblock: (String mesg, ?Integer flags, ?Addrinfo | String dest_sockaddr, *Socket::AncillaryData controls, ?exception: boolish) -> (Integer | :wait_writable)
493
493
 
@@ -22,10 +22,11 @@ class IPSocket < BasicSocket
22
22
  # Returns the local address as an array which contains address_family, port,
23
23
  # hostname and numeric_address.
24
24
  #
25
- # If `reverse_lookup` is `true` or `:hostname`, hostname is obtained from
26
- # numeric_address using reverse lookup. Or if it is `false`, or `:numeric`,
27
- # hostname is the same as numeric_address. Or if it is `nil` or omitted, obeys
28
- # to `ipsocket.do_not_reverse_lookup`. See `Socket.getaddrinfo` also.
25
+ # If `reverse_lookup` is `true` or <code>:hostname</code>, hostname is obtained
26
+ # from numeric_address using reverse lookup. Or if it is `false`, or
27
+ # <code>:numeric</code>, hostname is the same as numeric_address. Or if it is
28
+ # `nil` or omitted, obeys to <code>ipsocket.do_not_reverse_lookup</code>. See
29
+ # <code>Socket.getaddrinfo</code> also.
29
30
  #
30
31
  # TCPSocket.open("www.ruby-lang.org", 80) {|sock|
31
32
  # p sock.addr #=> ["AF_INET", 49429, "hal", "192.168.0.128"]
@@ -53,10 +54,11 @@ class IPSocket < BasicSocket
53
54
  # hostname and numeric_address. It is defined for connection oriented socket
54
55
  # such as TCPSocket.
55
56
  #
56
- # If `reverse_lookup` is `true` or `:hostname`, hostname is obtained from
57
- # numeric_address using reverse lookup. Or if it is `false`, or `:numeric`,
58
- # hostname is the same as numeric_address. Or if it is `nil` or omitted, obeys
59
- # to `ipsocket.do_not_reverse_lookup`. See `Socket.getaddrinfo` also.
57
+ # If `reverse_lookup` is `true` or <code>:hostname</code>, hostname is obtained
58
+ # from numeric_address using reverse lookup. Or if it is `false`, or
59
+ # <code>:numeric</code>, hostname is the same as numeric_address. Or if it is
60
+ # `nil` or omitted, obeys to <code>ipsocket.do_not_reverse_lookup</code>. See
61
+ # <code>Socket.getaddrinfo</code> also.
60
62
  #
61
63
  # TCPSocket.open("www.ruby-lang.org", 80) {|sock|
62
64
  # p sock.peeraddr #=> ["AF_INET", 80, "carbon.ruby-lang.org", "221.186.184.68"]
@@ -16,20 +16,21 @@
16
16
  #
17
17
  # Sockets have their own vocabulary:
18
18
  #
19
- # **domain:** The family of protocols:
19
+ # <strong>domain:</strong> The family of protocols:
20
20
  # * Socket::PF_INET
21
21
  # * Socket::PF_INET6
22
22
  # * Socket::PF_UNIX
23
23
  # * etc.
24
24
  #
25
- # **type:** The type of communications between the two endpoints, typically
25
+ # <strong>type:</strong> The type of communications between the two endpoints,
26
+ # typically
26
27
  # * Socket::SOCK_STREAM
27
28
  # * Socket::SOCK_DGRAM.
28
29
  #
29
- # **protocol:** Typically *zero*. This may be used to identify a variant of a
30
- # protocol.
30
+ # <strong>protocol:</strong> Typically *zero*. This may be used to identify a
31
+ # variant of a protocol.
31
32
  #
32
- # **hostname:** The identifier of a network interface:
33
+ # <strong>hostname:</strong> The identifier of a network interface:
33
34
  # * a string (hostname, IPv4 or IPv6 address or `broadcast` which specifies a
34
35
  # broadcast address)
35
36
  # * a zero-length string which specifies INADDR_ANY
@@ -484,10 +485,17 @@ class Socket < BasicSocket
484
485
  # The `connect_timeout` specifies the timeout in seconds from the start of
485
486
  # the connection attempt to the last candidate.
486
487
  # By default, all connection attempts continue until the timeout occurs.
487
- # When `fast_fallback:false` is explicitly specified,
488
+ # When <code>fast_fallback:false</code> is explicitly specified,
488
489
  # a timeout is set for each connection attempt and any connection attempt
489
490
  # that exceeds its timeout will be canceled.
490
491
  #
492
+ # :open_timeout
493
+ # : Specifies the timeout in seconds from the start of the method execution.
494
+ # If this timeout is reached while there are still addresses that have not
495
+ # yet been attempted for connection, no further attempts will be made.
496
+ # If this option is specified together with other timeout options, an
497
+ # `ArgumentError` will be raised.
498
+ #
491
499
  # :fast_fallback
492
500
  # : Enables the Happy Eyeballs Version 2 algorithm (enabled by default).
493
501
  #
@@ -504,7 +512,9 @@ class Socket < BasicSocket
504
512
  # }
505
513
  #
506
514
  def self.tcp: (String host, Integer port, ?String local_host, ?Integer local_port, ?resolv_timeout: Time::_Timeout, ?connect_timeout: Time::_Timeout) -> instance
507
- | (String host, Integer port, ?String local_host, ?Integer local_port, ?resolv_timeout: Time::_Timeout, ?connect_timeout: Time::_Timeout) { (instance) -> void } -> void
515
+ | (String host, Integer port, ?String local_host, ?Integer local_port, ?open_timeout: Time::_Timeout) -> instance
516
+ | [T] (String host, Integer port, ?String local_host, ?Integer local_port, ?resolv_timeout: Time::_Timeout, ?connect_timeout: Time::_Timeout) { (instance) -> T } -> T
517
+ | [T] (String host, Integer port, ?String local_host, ?Integer local_port, ?open_timeout: Time::_Timeout) { (instance) -> T } -> T
508
518
 
509
519
  # <!--
510
520
  # rdoc-file=ext/socket/lib/socket.rb
@@ -836,7 +846,7 @@ class Socket < BasicSocket
836
846
  #
837
847
  # By specifying a keyword argument *exception* to `false`, you can indicate that
838
848
  # accept_nonblock should not raise an IO::WaitReadable exception, but return the
839
- # symbol `:wait_readable` instead.
849
+ # symbol <code>:wait_readable</code> instead.
840
850
  #
841
851
  # ### See
842
852
  # * Socket#accept
@@ -1090,7 +1100,7 @@ class Socket < BasicSocket
1090
1100
  #
1091
1101
  # By specifying a keyword argument *exception* to `false`, you can indicate that
1092
1102
  # connect_nonblock should not raise an IO::WaitWritable exception, but return
1093
- # the symbol `:wait_writable` instead.
1103
+ # the symbol <code>:wait_writable</code> instead.
1094
1104
  #
1095
1105
  # ### See
1096
1106
  # * Socket#connect
@@ -1348,7 +1358,7 @@ class Socket < BasicSocket
1348
1358
  #
1349
1359
  # By specifying a keyword argument *exception* to `false`, you can indicate that
1350
1360
  # recvfrom_nonblock should not raise an IO::WaitReadable exception, but return
1351
- # the symbol `:wait_readable` instead.
1361
+ # the symbol <code>:wait_readable</code> instead.
1352
1362
  #
1353
1363
  # ### See
1354
1364
  # * Socket#recvfrom
@@ -3769,6 +3779,9 @@ class Socket::Ifaddr
3769
3779
  # -->
3770
3780
  # Returns the flags of *ifaddr*.
3771
3781
  #
3782
+ # The value is bitwise-or of Socket::IFF_* constants such as
3783
+ # Socket::IFF_LOOPBACK.
3784
+ #
3772
3785
  def flags: () -> Integer
3773
3786
 
3774
3787
  # <!--
@@ -72,7 +72,7 @@ class TCPServer < TCPSocket
72
72
  #
73
73
  # By specifying a keyword argument *exception* to `false`, you can indicate that
74
74
  # accept_nonblock should not raise an IO::WaitReadable exception, but return the
75
- # symbol `:wait_readable` instead.
75
+ # symbol <code>:wait_readable</code> instead.
76
76
  #
77
77
  # ### See
78
78
  # * TCPServer#accept
@@ -38,7 +38,7 @@ class TCPSocket < IPSocket
38
38
 
39
39
  # <!--
40
40
  # rdoc-file=ext/socket/tcpsocket.c
41
- # - TCPSocket.new(remote_host, remote_port, local_host=nil, local_port=nil, resolv_timeout: nil, connect_timeout: nil, fast_fallback: true)
41
+ # - TCPSocket.new(remote_host, remote_port, local_host=nil, local_port=nil, resolv_timeout: nil, connect_timeout: nil, open_timeout: nil, fast_fallback: true)
42
42
  # -->
43
43
  # Opens a TCP connection to `remote_host` on `remote_port`. If `local_host` and
44
44
  # `local_port` are specified, then those parameters are used on the local end to
@@ -68,12 +68,20 @@ class TCPSocket < IPSocket
68
68
  # The `connect_timeout` specifies the timeout in seconds from the start of
69
69
  # the connection attempt to the last candidate.
70
70
  # By default, all connection attempts continue until the timeout occurs.
71
- # When `fast_fallback:false` is explicitly specified,
71
+ # When <code>fast_fallback:false</code> is explicitly specified,
72
72
  # a timeout is set for each connection attempt and any connection attempt
73
73
  # that exceeds its timeout will be canceled.
74
74
  #
75
+ # :open_timeout
76
+ # : Specifies the timeout in seconds from the start of the method execution.
77
+ # If this timeout is reached while there are still addresses that have not
78
+ # yet been attempted for connection, no further attempts will be made.
79
+ # If this option is specified together with other timeout options, an
80
+ # `ArgumentError` will be raised.
81
+ #
75
82
  # :fast_fallback
76
83
  # : Enables the Happy Eyeballs Version 2 algorithm (enabled by default).
77
84
  #
78
- def initialize: (String remote_host, Integer remote_port, ?String local_host, ?Integer local_port) -> untyped
85
+ def initialize: (String remote_host, Integer remote_port, ?String local_host, ?Integer local_port, ?fast_fallback: boolish, ?resolv_timeout: Integer, ?connect_timeout: Integer) -> void
86
+ | (String remote_host, Integer remote_port, ?String local_host, ?Integer local_port, ?fast_fallback: boolish, ?open_timeout: Integer) -> void
79
87
  end
@@ -81,7 +81,7 @@ class UDPSocket < IPSocket
81
81
  #
82
82
  # By specifying a keyword argument *exception* to `false`, you can indicate that
83
83
  # recvfrom_nonblock should not raise an IO::WaitReadable exception, but return
84
- # the symbol `:wait_readable` instead.
84
+ # the symbol <code>:wait_readable</code> instead.
85
85
  #
86
86
  # ### See
87
87
  # * Socket#recvfrom
@@ -50,7 +50,7 @@ class UNIXServer < UNIXSocket
50
50
  #
51
51
  # By specifying a keyword argument *exception* to `false`, you can indicate that
52
52
  # accept_nonblock should not raise an IO::WaitReadable exception, but return the
53
- # symbol `:wait_readable` instead.
53
+ # symbol <code>:wait_readable</code> instead.
54
54
  #
55
55
  # ### See
56
56
  # * UNIXServer#accept