rbs 2.8.4 → 3.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (434) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +12 -4
  3. data/.github/workflows/comments.yml +11 -11
  4. data/.github/workflows/dependabot.yml +30 -0
  5. data/.github/workflows/ruby.yml +40 -49
  6. data/.github/workflows/typecheck.yml +36 -0
  7. data/.github/workflows/windows.yml +28 -0
  8. data/.gitignore +1 -0
  9. data/.rubocop.yml +42 -2
  10. data/CHANGELOG.md +845 -1
  11. data/README.md +64 -4
  12. data/Rakefile +198 -18
  13. data/Steepfile +11 -11
  14. data/config.yml +311 -0
  15. data/core/array.rbs +2189 -1914
  16. data/core/basic_object.rbs +59 -84
  17. data/core/binding.rbs +7 -69
  18. data/core/builtin.rbs +210 -11
  19. data/core/class.rbs +37 -0
  20. data/core/comparable.rbs +23 -25
  21. data/core/complex.rbs +449 -227
  22. data/core/constants.rbs +29 -21
  23. data/core/data.rbs +415 -0
  24. data/core/dir.rbs +698 -415
  25. data/core/encoding.rbs +468 -843
  26. data/core/enumerable.rbs +495 -455
  27. data/core/enumerator/product.rbs +92 -0
  28. data/core/enumerator.rbs +106 -9
  29. data/core/env.rbs +1 -1
  30. data/core/errno.rbs +506 -605
  31. data/core/errors.rbs +15 -17
  32. data/core/exception.rbs +361 -145
  33. data/core/false_class.rbs +39 -26
  34. data/core/fiber.rbs +121 -14
  35. data/core/file.rbs +1262 -320
  36. data/core/file_test.rbs +62 -45
  37. data/core/float.rbs +187 -208
  38. data/core/gc.rbs +446 -196
  39. data/core/global_variables.rbs +29 -29
  40. data/core/hash.rbs +242 -349
  41. data/core/integer.rbs +246 -308
  42. data/core/io/buffer.rbs +373 -122
  43. data/core/io/wait.rbs +29 -17
  44. data/core/io.rbs +1881 -1518
  45. data/core/kernel.rbs +2116 -1538
  46. data/core/marshal.rbs +24 -14
  47. data/core/match_data.rbs +413 -166
  48. data/core/math.rbs +531 -291
  49. data/core/method.rbs +101 -32
  50. data/core/module.rbs +228 -64
  51. data/core/nil_class.rbs +106 -47
  52. data/core/numeric.rbs +206 -292
  53. data/core/object.rbs +73 -1168
  54. data/core/object_space/weak_key_map.rbs +166 -0
  55. data/core/object_space.rbs +5 -3
  56. data/core/proc.rbs +280 -39
  57. data/core/process.rbs +1318 -658
  58. data/core/ractor.rbs +200 -134
  59. data/core/random.rbs +21 -4
  60. data/core/range.rbs +309 -153
  61. data/core/rational.rbs +4 -12
  62. data/core/rb_config.rbs +64 -43
  63. data/core/rbs/unnamed/argf.rbs +411 -147
  64. data/core/rbs/unnamed/env_class.rbs +137 -253
  65. data/core/rbs/unnamed/random.rbs +49 -26
  66. data/core/refinement.rbs +16 -1
  67. data/core/regexp.rbs +1568 -862
  68. data/core/ruby_vm.rbs +719 -7
  69. data/core/rubygems/config_file.rbs +3 -0
  70. data/core/rubygems/errors.rbs +69 -6
  71. data/core/rubygems/rubygems.rbs +71 -17
  72. data/core/rubygems/version.rbs +11 -7
  73. data/{stdlib/set/0 → core}/set.rbs +80 -91
  74. data/core/signal.rbs +14 -8
  75. data/core/string.rbs +1732 -1607
  76. data/core/struct.rbs +467 -95
  77. data/core/symbol.rbs +215 -245
  78. data/core/thread.rbs +133 -89
  79. data/core/thread_group.rbs +9 -9
  80. data/core/time.rbs +1141 -841
  81. data/core/trace_point.rbs +181 -121
  82. data/core/true_class.rbs +58 -32
  83. data/core/unbound_method.rbs +103 -30
  84. data/core/warning.rbs +50 -5
  85. data/docs/CONTRIBUTING.md +1 -1
  86. data/docs/architecture.md +110 -0
  87. data/docs/collection.md +59 -5
  88. data/docs/data_and_struct.md +86 -0
  89. data/docs/gem.md +57 -0
  90. data/docs/rbs_by_example.md +16 -35
  91. data/docs/repo.md +1 -1
  92. data/docs/sigs.md +7 -7
  93. data/docs/stdlib.md +63 -5
  94. data/docs/syntax.md +255 -61
  95. data/docs/tools.md +1 -0
  96. data/ext/rbs_extension/extconf.rb +10 -0
  97. data/ext/rbs_extension/lexer.c +1741 -1548
  98. data/ext/rbs_extension/lexer.h +11 -1
  99. data/ext/rbs_extension/lexer.re +12 -6
  100. data/ext/rbs_extension/lexstate.c +26 -3
  101. data/ext/rbs_extension/location.c +119 -111
  102. data/ext/rbs_extension/location.h +32 -7
  103. data/ext/rbs_extension/main.c +3 -0
  104. data/ext/rbs_extension/parser.c +883 -481
  105. data/ext/rbs_extension/parserstate.c +65 -25
  106. data/ext/rbs_extension/parserstate.h +13 -3
  107. data/ext/rbs_extension/rbs_extension.h +1 -10
  108. data/ext/rbs_extension/unescape.c +7 -47
  109. data/goodcheck.yml +2 -2
  110. data/{ext/rbs_extension → include/rbs}/constants.h +26 -15
  111. data/include/rbs/ruby_objs.h +72 -0
  112. data/include/rbs.h +7 -0
  113. data/lib/rbs/annotate/annotations.rb +3 -3
  114. data/lib/rbs/annotate/formatter.rb +13 -3
  115. data/lib/rbs/annotate/rdoc_annotator.rb +1 -1
  116. data/lib/rbs/annotate/rdoc_source.rb +12 -3
  117. data/lib/rbs/ast/declarations.rb +85 -2
  118. data/lib/rbs/ast/directives.rb +39 -0
  119. data/lib/rbs/ast/members.rb +49 -15
  120. data/lib/rbs/ast/type_param.rb +104 -15
  121. data/lib/rbs/ast/visitor.rb +137 -0
  122. data/lib/rbs/buffer.rb +5 -0
  123. data/lib/rbs/cli/colored_io.rb +48 -0
  124. data/lib/rbs/cli/diff.rb +83 -0
  125. data/lib/rbs/cli/validate.rb +356 -0
  126. data/lib/rbs/cli.rb +253 -143
  127. data/lib/rbs/collection/cleaner.rb +8 -1
  128. data/lib/rbs/collection/config/lockfile.rb +92 -0
  129. data/lib/rbs/collection/config/lockfile_generator.rb +154 -65
  130. data/lib/rbs/collection/config.rb +19 -46
  131. data/lib/rbs/collection/installer.rb +12 -13
  132. data/lib/rbs/collection/sources/base.rb +2 -2
  133. data/lib/rbs/collection/sources/git.rb +146 -69
  134. data/lib/rbs/collection/sources/local.rb +81 -0
  135. data/lib/rbs/collection/sources/rubygems.rb +10 -12
  136. data/lib/rbs/collection/sources/stdlib.rb +14 -13
  137. data/lib/rbs/collection/sources.rb +15 -2
  138. data/lib/rbs/collection.rb +2 -1
  139. data/lib/rbs/definition.rb +13 -16
  140. data/lib/rbs/definition_builder/ancestor_builder.rb +100 -24
  141. data/lib/rbs/definition_builder/method_builder.rb +4 -4
  142. data/lib/rbs/definition_builder.rb +489 -584
  143. data/lib/rbs/diff.rb +125 -0
  144. data/lib/rbs/environment/use_map.rb +77 -0
  145. data/lib/rbs/environment.rb +406 -105
  146. data/lib/rbs/environment_loader.rb +48 -44
  147. data/lib/rbs/environment_walker.rb +1 -1
  148. data/lib/rbs/errors.rb +175 -56
  149. data/lib/rbs/file_finder.rb +28 -0
  150. data/lib/rbs/location_aux.rb +8 -7
  151. data/lib/rbs/locator.rb +37 -15
  152. data/lib/rbs/method_type.rb +23 -0
  153. data/lib/rbs/namespace.rb +1 -0
  154. data/lib/rbs/parser/lex_result.rb +15 -0
  155. data/lib/rbs/parser/token.rb +23 -0
  156. data/lib/rbs/parser_aux.rb +22 -13
  157. data/lib/rbs/prototype/helpers.rb +48 -22
  158. data/lib/rbs/prototype/node_usage.rb +99 -0
  159. data/lib/rbs/prototype/rb.rb +125 -31
  160. data/lib/rbs/prototype/rbi.rb +49 -36
  161. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  162. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  163. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  164. data/lib/rbs/prototype/runtime.rb +273 -159
  165. data/lib/rbs/resolver/constant_resolver.rb +24 -8
  166. data/lib/rbs/resolver/type_name_resolver.rb +41 -7
  167. data/lib/rbs/sorter.rb +153 -123
  168. data/lib/rbs/substitution.rb +19 -0
  169. data/lib/rbs/subtractor.rb +201 -0
  170. data/lib/rbs/test/errors.rb +24 -11
  171. data/lib/rbs/test/guaranteed.rb +30 -0
  172. data/lib/rbs/test/hook.rb +45 -40
  173. data/lib/rbs/test/setup.rb +1 -1
  174. data/lib/rbs/test/tester.rb +1 -1
  175. data/lib/rbs/test/type_check.rb +120 -23
  176. data/lib/rbs/test.rb +6 -3
  177. data/lib/rbs/type_alias_dependency.rb +13 -3
  178. data/lib/rbs/type_alias_regularity.rb +21 -14
  179. data/lib/rbs/type_name.rb +18 -13
  180. data/lib/rbs/types.rb +352 -18
  181. data/lib/rbs/unit_test/convertibles.rb +176 -0
  182. data/lib/rbs/unit_test/spy.rb +136 -0
  183. data/lib/rbs/unit_test/type_assertions.rb +341 -0
  184. data/lib/rbs/unit_test/with_aliases.rb +143 -0
  185. data/lib/rbs/unit_test.rb +6 -0
  186. data/lib/rbs/validator.rb +55 -30
  187. data/lib/rbs/variance_calculator.rb +26 -23
  188. data/lib/rbs/vendorer.rb +3 -3
  189. data/lib/rbs/version.rb +1 -1
  190. data/lib/rbs/writer.rb +69 -22
  191. data/lib/rbs.rb +7 -2
  192. data/lib/rdoc/discover.rb +1 -1
  193. data/lib/rdoc_plugin/parser.rb +5 -5
  194. data/rbs.gemspec +12 -2
  195. data/schema/decls.json +1 -1
  196. data/schema/members.json +15 -10
  197. data/sig/ancestor_builder.rbs +4 -0
  198. data/sig/ancestor_graph.rbs +22 -2
  199. data/sig/annotate/formatter.rbs +2 -2
  200. data/sig/annotate/rdoc_annotater.rbs +1 -1
  201. data/sig/cli/colored_io.rbs +15 -0
  202. data/sig/cli/diff.rbs +21 -0
  203. data/sig/cli/validate.rbs +43 -0
  204. data/sig/cli.rbs +4 -0
  205. data/sig/collection/config/lockfile.rbs +74 -0
  206. data/sig/collection/config/lockfile_generator.rbs +66 -0
  207. data/sig/collection/config.rbs +5 -48
  208. data/sig/collection/installer.rbs +1 -1
  209. data/sig/collection/sources.rbs +105 -33
  210. data/sig/constant.rbs +1 -1
  211. data/sig/declarations.rbs +42 -3
  212. data/sig/definition.rbs +26 -10
  213. data/sig/definition_builder.rbs +103 -81
  214. data/sig/diff.rbs +28 -0
  215. data/sig/directives.rbs +61 -0
  216. data/sig/environment.rbs +175 -29
  217. data/sig/environment_loader.rbs +20 -18
  218. data/sig/errors.rbs +123 -2
  219. data/sig/file_finder.rbs +28 -0
  220. data/sig/location.rbs +0 -3
  221. data/sig/locator.rbs +14 -2
  222. data/sig/manifest.yaml +0 -1
  223. data/sig/members.rbs +32 -9
  224. data/sig/method_types.rbs +10 -4
  225. data/sig/namespace.rbs +2 -3
  226. data/sig/parser.rbs +55 -16
  227. data/sig/prototype/helpers.rbs +4 -0
  228. data/sig/prototype/node_usage.rbs +20 -0
  229. data/sig/prototype/rb.rbs +10 -2
  230. data/sig/prototype/rbi.rbs +2 -0
  231. data/sig/prototype/runtime.rbs +182 -0
  232. data/sig/rbs.rbs +1 -1
  233. data/sig/rdoc/rbs.rbs +4 -0
  234. data/sig/repository.rbs +7 -5
  235. data/sig/resolver/constant_resolver.rbs +3 -4
  236. data/sig/resolver/context.rbs +1 -1
  237. data/sig/resolver/type_name_resolver.rbs +5 -1
  238. data/sig/shims/bundler.rbs +38 -0
  239. data/sig/shims/rubygems.rbs +19 -0
  240. data/sig/sorter.rbs +23 -5
  241. data/sig/substitution.rbs +6 -0
  242. data/sig/subtractor.rbs +37 -0
  243. data/sig/test/errors.rbs +52 -0
  244. data/sig/test/guranteed.rbs +9 -0
  245. data/sig/test/type_check.rbs +19 -0
  246. data/sig/test.rbs +82 -0
  247. data/sig/type_alias_dependency.rbs +31 -0
  248. data/sig/type_alias_regularity.rbs +12 -6
  249. data/sig/type_param.rbs +45 -9
  250. data/sig/typename.rbs +8 -5
  251. data/sig/types.rbs +119 -12
  252. data/sig/unit_test/convertibles.rbs +154 -0
  253. data/sig/unit_test/spy.rbs +28 -0
  254. data/sig/unit_test/type_assertions.rbs +194 -0
  255. data/sig/unit_test/with_aliases.rbs +136 -0
  256. data/sig/use_map.rbs +35 -0
  257. data/sig/validator.rbs +12 -5
  258. data/sig/variance_calculator.rbs +3 -1
  259. data/sig/vendorer.rbs +1 -1
  260. data/sig/visitor.rbs +47 -0
  261. data/sig/writer.rbs +6 -2
  262. data/src/constants.c +153 -0
  263. data/src/ruby_objs.c +793 -0
  264. data/stdlib/base64/0/base64.rbs +298 -45
  265. data/stdlib/benchmark/0/benchmark.rbs +12 -3
  266. data/stdlib/bigdecimal/0/big_decimal.rbs +62 -198
  267. data/stdlib/cgi/0/core.rbs +68 -15
  268. data/stdlib/cgi/0/manifest.yaml +1 -0
  269. data/stdlib/coverage/0/coverage.rbs +50 -11
  270. data/stdlib/csv/0/csv.rbs +90 -119
  271. data/stdlib/csv/0/manifest.yaml +1 -0
  272. data/stdlib/date/0/date.rbs +806 -735
  273. data/stdlib/date/0/date_time.rbs +70 -211
  274. data/stdlib/dbm/0/dbm.rbs +0 -2
  275. data/stdlib/delegate/0/delegator.rbs +184 -0
  276. data/stdlib/delegate/0/kernel.rbs +47 -0
  277. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  278. data/stdlib/did_you_mean/0/did_you_mean.rbs +3 -8
  279. data/stdlib/digest/0/digest.rbs +48 -35
  280. data/stdlib/erb/0/erb.rbs +15 -39
  281. data/stdlib/etc/0/etc.rbs +174 -54
  282. data/stdlib/fileutils/0/fileutils.rbs +1234 -385
  283. data/stdlib/forwardable/0/forwardable.rbs +4 -4
  284. data/stdlib/io-console/0/io-console.rbs +82 -17
  285. data/stdlib/ipaddr/0/ipaddr.rbs +11 -6
  286. data/stdlib/json/0/json.rbs +434 -151
  287. data/stdlib/kconv/0/kconv.rbs +166 -0
  288. data/stdlib/logger/0/formatter.rbs +0 -2
  289. data/stdlib/logger/0/log_device.rbs +1 -3
  290. data/stdlib/logger/0/logger.rbs +465 -328
  291. data/stdlib/minitest/0/kernel.rbs +2 -2
  292. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +4 -1
  293. data/stdlib/minitest/0/minitest/assertion.rbs +1 -0
  294. data/stdlib/minitest/0/minitest/assertions.rbs +58 -13
  295. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +7 -0
  296. data/stdlib/minitest/0/minitest/bench_spec.rbs +8 -8
  297. data/stdlib/minitest/0/minitest/benchmark.rbs +17 -16
  298. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  299. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  300. data/stdlib/minitest/0/minitest/mock.rbs +9 -5
  301. data/stdlib/minitest/0/minitest/parallel/executor.rbs +4 -0
  302. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +0 -1
  303. data/stdlib/minitest/0/minitest/pride_io.rbs +8 -0
  304. data/stdlib/minitest/0/minitest/pride_lol.rbs +2 -0
  305. data/stdlib/minitest/0/minitest/progress_reporter.rbs +1 -1
  306. data/stdlib/minitest/0/minitest/reportable.rbs +2 -0
  307. data/stdlib/minitest/0/minitest/runnable.rbs +33 -1
  308. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +1 -1
  309. data/stdlib/minitest/0/minitest/spec/dsl.rbs +10 -6
  310. data/stdlib/minitest/0/minitest/spec.rbs +1 -1
  311. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +5 -0
  312. data/stdlib/minitest/0/minitest/summary_reporter.rbs +0 -7
  313. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +7 -7
  314. data/stdlib/minitest/0/minitest/test.rbs +7 -14
  315. data/stdlib/minitest/0/minitest/unexpected_error.rbs +2 -0
  316. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  317. data/stdlib/minitest/0/minitest/unit.rbs +1 -2
  318. data/stdlib/minitest/0/minitest.rbs +41 -892
  319. data/stdlib/monitor/0/monitor.rbs +91 -10
  320. data/stdlib/mutex_m/0/mutex_m.rbs +0 -2
  321. data/stdlib/net-http/0/manifest.yaml +1 -1
  322. data/stdlib/net-http/0/net-http.rbs +3858 -964
  323. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  324. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  325. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  326. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  327. data/stdlib/nkf/0/nkf.rbs +35 -5
  328. data/stdlib/objspace/0/objspace.rbs +40 -18
  329. data/stdlib/observable/0/observable.rbs +217 -0
  330. data/stdlib/open-uri/0/manifest.yaml +4 -0
  331. data/stdlib/open-uri/0/open-uri.rbs +393 -0
  332. data/stdlib/open3/0/open3.rbs +147 -0
  333. data/stdlib/openssl/0/manifest.yaml +1 -0
  334. data/stdlib/openssl/0/openssl.rbs +681 -316
  335. data/stdlib/optparse/0/optparse.rbs +100 -65
  336. data/stdlib/pathname/0/pathname.rbs +24 -15
  337. data/stdlib/pp/0/manifest.yaml +2 -0
  338. data/stdlib/pp/0/pp.rbs +300 -0
  339. data/stdlib/prettyprint/0/prettyprint.rbs +2 -6
  340. data/stdlib/pstore/0/pstore.rbs +370 -156
  341. data/stdlib/psych/0/core_ext.rbs +12 -0
  342. data/stdlib/{yaml → psych}/0/dbm.rbs +3 -3
  343. data/stdlib/psych/0/manifest.yaml +3 -0
  344. data/stdlib/psych/0/psych.rbs +402 -0
  345. data/stdlib/{yaml → psych}/0/store.rbs +2 -2
  346. data/stdlib/pty/0/pty.rbs +63 -11
  347. data/stdlib/rdoc/0/code_object.rbs +51 -0
  348. data/stdlib/rdoc/0/comment.rbs +59 -0
  349. data/stdlib/rdoc/0/context.rbs +153 -0
  350. data/stdlib/rdoc/0/markup.rbs +117 -0
  351. data/stdlib/rdoc/0/parser.rbs +56 -0
  352. data/stdlib/rdoc/0/rdoc.rbs +13 -380
  353. data/stdlib/rdoc/0/ri.rbs +17 -0
  354. data/stdlib/rdoc/0/store.rbs +48 -0
  355. data/stdlib/rdoc/0/top_level.rbs +97 -0
  356. data/stdlib/resolv/0/resolv.rbs +16 -79
  357. data/stdlib/ripper/0/ripper.rbs +1648 -0
  358. data/stdlib/securerandom/0/securerandom.rbs +7 -2
  359. data/stdlib/shellwords/0/shellwords.rbs +11 -12
  360. data/stdlib/singleton/0/singleton.rbs +0 -3
  361. data/stdlib/socket/0/addrinfo.rbs +13 -18
  362. data/stdlib/socket/0/basic_socket.rbs +5 -10
  363. data/stdlib/socket/0/ip_socket.rbs +0 -2
  364. data/stdlib/socket/0/socket.rbs +77 -46
  365. data/stdlib/socket/0/tcp_server.rbs +0 -5
  366. data/stdlib/socket/0/tcp_socket.rbs +36 -3
  367. data/stdlib/socket/0/udp_socket.rbs +4 -5
  368. data/stdlib/socket/0/unix_server.rbs +0 -5
  369. data/stdlib/socket/0/unix_socket.rbs +2 -4
  370. data/{core/string_io.rbs → stdlib/stringio/0/stringio.rbs} +188 -107
  371. data/stdlib/strscan/0/string_scanner.rbs +1269 -425
  372. data/stdlib/tempfile/0/tempfile.rbs +224 -61
  373. data/stdlib/time/0/time.rbs +48 -35
  374. data/stdlib/timeout/0/timeout.rbs +17 -8
  375. data/stdlib/tmpdir/0/tmpdir.rbs +10 -3
  376. data/stdlib/tsort/0/tsort.rbs +0 -4
  377. data/stdlib/uri/0/common.rbs +271 -144
  378. data/stdlib/uri/0/file.rbs +5 -0
  379. data/stdlib/uri/0/ftp.rbs +1 -1
  380. data/stdlib/uri/0/generic.rbs +26 -22
  381. data/stdlib/uri/0/http.rbs +4 -4
  382. data/stdlib/uri/0/ldap.rbs +1 -1
  383. data/stdlib/uri/0/mailto.rbs +84 -0
  384. data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
  385. data/stdlib/yaml/0/manifest.yaml +1 -2
  386. data/stdlib/yaml/0/yaml.rbs +1 -199
  387. data/stdlib/zlib/0/buf_error.rbs +10 -0
  388. data/stdlib/zlib/0/data_error.rbs +10 -0
  389. data/stdlib/zlib/0/deflate.rbs +210 -0
  390. data/stdlib/zlib/0/error.rbs +20 -0
  391. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  392. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  393. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  394. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  395. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  396. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  397. data/stdlib/zlib/0/gzip_writer.rbs +166 -0
  398. data/stdlib/zlib/0/inflate.rbs +180 -0
  399. data/stdlib/zlib/0/mem_error.rbs +10 -0
  400. data/stdlib/zlib/0/need_dict.rbs +13 -0
  401. data/stdlib/zlib/0/stream_end.rbs +11 -0
  402. data/stdlib/zlib/0/stream_error.rbs +11 -0
  403. data/stdlib/zlib/0/version_error.rbs +11 -0
  404. data/stdlib/zlib/0/zlib.rbs +1 -3
  405. data/stdlib/zlib/0/zstream.rbs +200 -0
  406. data/templates/include/rbs/constants.h.erb +20 -0
  407. data/templates/include/rbs/ruby_objs.h.erb +10 -0
  408. data/templates/src/constants.c.erb +36 -0
  409. data/templates/src/ruby_objs.c.erb +27 -0
  410. data/templates/template.rb +122 -0
  411. metadata +136 -36
  412. data/Gemfile +0 -33
  413. data/Gemfile.lock +0 -118
  414. data/core/deprecated.rbs +0 -9
  415. data/ext/rbs_extension/constants.c +0 -135
  416. data/ext/rbs_extension/ruby_objs.c +0 -525
  417. data/ext/rbs_extension/ruby_objs.h +0 -43
  418. data/lib/rbs/constant_table.rb +0 -167
  419. data/lib/rbs/parser_compat/lexer_error.rb +0 -6
  420. data/lib/rbs/parser_compat/located_value.rb +0 -7
  421. data/lib/rbs/parser_compat/semantics_error.rb +0 -6
  422. data/lib/rbs/parser_compat/syntax_error.rb +0 -6
  423. data/lib/rbs/test/spy.rb +0 -6
  424. data/lib/rbs/type_name_resolver.rb +0 -67
  425. data/sig/constant_table.rbs +0 -30
  426. data/sig/shims/abstract_syntax_tree.rbs +0 -25
  427. data/sig/shims/pp.rbs +0 -3
  428. data/sig/shims/ripper.rbs +0 -8
  429. data/sig/shims.rbs +0 -69
  430. data/sig/type_name_resolver.rbs +0 -26
  431. data/stdlib/minitest/0/manifest.yaml +0 -2
  432. data/stdlib/prime/0/integer-extension.rbs +0 -41
  433. data/stdlib/prime/0/manifest.yaml +0 -2
  434. data/stdlib/prime/0/prime.rbs +0 -372
@@ -14,7 +14,6 @@
14
14
  # * /dev/urandom
15
15
  # * Win32
16
16
  #
17
- #
18
17
  # SecureRandom is extended by the Random::Formatter module which defines the
19
18
  # following methods:
20
19
  #
@@ -29,7 +28,6 @@
29
28
  # * urlsafe_base64
30
29
  # * uuid
31
30
  #
32
- #
33
31
  # These methods are usable as class methods of SecureRandom such as
34
32
  # `SecureRandom.hex`.
35
33
  #
@@ -39,6 +37,13 @@
39
37
  module SecureRandom
40
38
  extend Random::Formatter
41
39
 
40
+ # <!--
41
+ # rdoc-file=lib/securerandom.rb
42
+ # - alphanumeric(n = nil, chars: ALPHANUMERIC)
43
+ # -->
44
+ # Compatibility methods for Ruby 3.2, we can remove this after dropping to
45
+ # support Ruby 3.2
46
+ #
42
47
  def self.alphanumeric: (?Integer?) -> String
43
48
 
44
49
  def self.base64: (?Integer?) -> String
@@ -4,9 +4,11 @@
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 modified
8
- # to conform to the Shell & Utilities volume of the IEEE Std 1003.1-2008, 2016
9
- # Edition [1].
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
9
+ # 1003.1-2008, 2016
10
+ # Edition](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.ht
11
+ # ml)
10
12
  #
11
13
  # ### Usage
12
14
  #
@@ -58,17 +60,9 @@
58
60
  # * Wakou Aoyama
59
61
  # * Akinori MUSHA <knu@iDaemons.org>
60
62
  #
61
- #
62
63
  # ### Contact
63
64
  # * Akinori MUSHA <knu@iDaemons.org> (current maintainer)
64
65
  #
65
- #
66
- # ### Resources
67
- #
68
- # 1: [IEEE Std 1003.1-2008, 2016 Edition, the Shell & Utilities
69
- # volume](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.htm
70
- # l)
71
- #
72
66
  module Shellwords
73
67
  # <!--
74
68
  # rdoc-file=lib/shellwords.rb
@@ -77,6 +71,8 @@ module Shellwords
77
71
  # Escapes a string so that it can be safely used in a Bourne shell command line.
78
72
  # `str` can be a non-string object that responds to `to_s`.
79
73
  #
74
+ # `str` must not contain NUL characters because of nature of `exec` system call.
75
+ #
80
76
  # Note that a resulted string should be used unquoted and is not intended for
81
77
  # use in double quotes nor in single quotes.
82
78
  #
@@ -114,7 +110,7 @@ module Shellwords
114
110
  #
115
111
  # All elements are joined into a single string with fields separated by a space,
116
112
  # where each element is escaped for the Bourne shell and stringified using
117
- # `to_s`.
113
+ # `to_s`. See also Shellwords.shellescape.
118
114
  #
119
115
  # ary = ["There's", "a", "time", "and", "place", "for", "everything"]
120
116
  # argv = Shellwords.join(ary)
@@ -142,6 +138,9 @@ module Shellwords
142
138
  # argv = Shellwords.split('here are "two words"')
143
139
  # argv #=> ["here", "are", "two words"]
144
140
  #
141
+ # `line` must not contain NUL characters because of nature of `exec` system
142
+ # call.
143
+ #
145
144
  # Note, however, that this is not a command line parser. Shell metacharacters
146
145
  # except for the single and double quotes and backslash are not treated as such.
147
146
  #
@@ -53,7 +53,6 @@
53
53
  # * Overriding Klass#clone and Klass#dup to raise TypeErrors to prevent
54
54
  # cloning or duping.
55
55
  #
56
- #
57
56
  # ## Singleton and Marshal
58
57
  #
59
58
  # By default Singleton's #_dump(depth) returns the empty string. Marshalling by
@@ -101,8 +100,6 @@ module Singleton
101
100
  #
102
101
  def self.instance: () -> instance
103
102
 
104
- public
105
-
106
103
  # <!--
107
104
  # rdoc-file=lib/singleton.rb
108
105
  # - _dump(depth = -1)
@@ -1,3 +1,7 @@
1
+ # <!-- rdoc-file=ext/socket/raddrinfo.c -->
2
+ # The Addrinfo class maps `struct addrinfo` to ruby. This structure identifies
3
+ # an Internet host and a service.
4
+ #
1
5
  class Addrinfo
2
6
  # <!--
3
7
  # rdoc-file=ext/socket/lib/socket.rb
@@ -106,8 +110,6 @@ class Addrinfo
106
110
  #
107
111
  def self.unix: (String path, ?Symbol socktype) -> Addrinfo
108
112
 
109
- public
110
-
111
113
  # <!--
112
114
  # rdoc-file=ext/socket/raddrinfo.c
113
115
  # - addrinfo.afamily => integer
@@ -403,7 +405,7 @@ class Addrinfo
403
405
  # rdoc-file=ext/socket/raddrinfo.c
404
406
  # - ipv6_linklocal?()
405
407
  # -->
406
- # Returns true for IPv6 link local address (ff80::/10). It returns false
408
+ # Returns true for IPv6 link local address (fe80::/10). It returns false
407
409
  # otherwise.
408
410
  #
409
411
  def ipv6_linklocal?: () -> bool
@@ -474,7 +476,7 @@ class Addrinfo
474
476
  # rdoc-file=ext/socket/raddrinfo.c
475
477
  # - ipv6_sitelocal?()
476
478
  # -->
477
- # Returns true for IPv6 site local address (ffc0::/10). It returns false
479
+ # Returns true for IPv6 site local address (fec0::/10). It returns false
478
480
  # otherwise.
479
481
  #
480
482
  def ipv6_sitelocal?: () -> bool
@@ -632,20 +634,13 @@ class Addrinfo
632
634
  # sockaddr as generated by Socket.sockaddr_in or Socket.unpack_sockaddr_un.
633
635
  #
634
636
  # sockaddr examples:
635
- #
636
- # "AF_INET", 46102, "localhost.localdomain", "127.0.0.1"
637
- # :
638
- #
639
- # "AF_INET6", 42304, "ip6-localhost", "::1"
640
- # :
641
- #
642
- # "AF_UNIX", "/tmp/sock"
643
- # :
644
- # * Socket.sockaddr_in("smtp", "2001:DB8::1")
645
- # * Socket.sockaddr_in(80, "172.18.22.42")
646
- # * Socket.sockaddr_in(80, "www.ruby-lang.org")
647
- # * Socket.sockaddr_un("/tmp/sock")
648
- #
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")`
649
644
  #
650
645
  # In an AF_INET/AF_INET6 sockaddr array, the 4th element, numeric IP address, is
651
646
  # used to construct socket address in the Addrinfo instance. If the 3rd element,
@@ -41,8 +41,6 @@ class BasicSocket < IO
41
41
  #
42
42
  def self.for_fd: (Integer fileno) -> BasicSocket
43
43
 
44
- public
45
-
46
44
  # <!--
47
45
  # rdoc-file=ext/socket/basicsocket.c
48
46
  # - basicsocket.close_read => nil
@@ -84,7 +82,6 @@ class BasicSocket < IO
84
82
  # (127.0.0.1).
85
83
  # * IPv6 unspecified address (::) is replaced by IPv6 loopback address (::1).
86
84
  #
87
- #
88
85
  # If the local address is not suitable for connect, SocketError is raised. IPv4
89
86
  # and IPv6 address which port is 0 is not suitable for connect. Unix domain
90
87
  # socket which has no path is not suitable for connect.
@@ -204,7 +201,6 @@ class BasicSocket < IO
204
201
  # Socket::SO_REUSEADDR. A string or symbol of the name, possibly without
205
202
  # prefix, is also accepted.
206
203
  #
207
- #
208
204
  # ### Examples
209
205
  #
210
206
  # Some socket options are integers with boolean values, in this case #getsockopt
@@ -293,8 +289,10 @@ class BasicSocket < IO
293
289
  # is set for the underlying file descriptor. *flags* is zero or more of the
294
290
  # `MSG_` options. The result, *mesg*, is the data received.
295
291
  #
296
- # When recvfrom(2) returns 0, Socket#recv_nonblock returns an empty string as
297
- # data. The meaning depends on the socket: EOF on TCP, empty packet on UDP, etc.
292
+ # When recvfrom(2) returns 0, Socket#recv_nonblock returns nil. In most cases it
293
+ # means the connection was closed, but for UDP connections it may mean an empty
294
+ # packet was received, as the underlying API makes it impossible to distinguish
295
+ # these two cases.
298
296
  #
299
297
  # ### Parameters
300
298
  # * `maxlen` - the number of bytes to receive from the socket
@@ -302,7 +300,6 @@ class BasicSocket < IO
302
300
  # * `buf` - destination String buffer
303
301
  # * `options` - keyword hash, supporting `exception: false`
304
302
  #
305
- #
306
303
  # ### Example
307
304
  # serv = TCPServer.new("127.0.0.1", 0)
308
305
  # af, port, host, addr = serv.addr
@@ -518,10 +515,8 @@ class BasicSocket < IO
518
515
  # int is passed as for an Integer. Note that `false` must be passed, not
519
516
  # `nil`.
520
517
  # * String: the string's data and length is passed to the socket.
521
- #
522
518
  # * `socketoption` is an instance of Socket::Option
523
519
  #
524
- #
525
520
  # ### Examples
526
521
  #
527
522
  # Some socket options are integers with boolean values, in this case #setsockopt
@@ -579,7 +574,7 @@ class BasicSocket < IO
579
574
  #
580
575
  # }
581
576
  #
582
- def shutdown: (Symbol | String | Integer flags) -> void
577
+ def shutdown: (interned | Integer flags) -> void
583
578
 
584
579
  private
585
580
 
@@ -15,8 +15,6 @@ class IPSocket < BasicSocket
15
15
  #
16
16
  def self.getaddress: (String host) -> String
17
17
 
18
- public
19
-
20
18
  # <!--
21
19
  # rdoc-file=ext/socket/ipsocket.c
22
20
  # - ipsocket.addr([reverse_lookup]) => [address_family, port, hostname, numeric_address]
@@ -22,12 +22,10 @@
22
22
  # * Socket::PF_UNIX
23
23
  # * etc.
24
24
  #
25
- #
26
25
  # **type:** The type of communications between the two endpoints, typically
27
26
  # * Socket::SOCK_STREAM
28
27
  # * Socket::SOCK_DGRAM.
29
28
  #
30
- #
31
29
  # **protocol:** Typically *zero*. This may be used to identify a variant of a
32
30
  # protocol.
33
31
  #
@@ -37,7 +35,6 @@
37
35
  # * a zero-length string which specifies INADDR_ANY
38
36
  # * an integer (interpreted as binary address in host byte order).
39
37
  #
40
- #
41
38
  # ### Quick start
42
39
  #
43
40
  # Many of the classes, such as TCPSocket, UDPSocket or UNIXSocket, ease the use
@@ -94,10 +91,13 @@
94
91
  #
95
92
  # TCP client socket
96
93
  # : Socket.tcp, TCPSocket.open
94
+ #
97
95
  # TCP server socket
98
96
  # : Socket.tcp_server_loop, TCPServer.open
97
+ #
99
98
  # UNIX client socket
100
99
  # : Socket.unix, UNIXSocket.open
100
+ #
101
101
  # UNIX server socket
102
102
  # : Socket.unix_server_loop, UNIXServer.open
103
103
  #
@@ -108,7 +108,6 @@
108
108
  # * Sam Roberts
109
109
  # * *Programming Ruby* from The Pragmatic Bookshelf.
110
110
  #
111
- #
112
111
  # Much material in this documentation is taken with permission from *Programming
113
112
  # Ruby* from The Pragmatic Bookshelf.
114
113
  #
@@ -180,7 +179,6 @@ class Socket < BasicSocket
180
179
  # cannot be released since gethostbyname() is not thread safe.)
181
180
  # * This method uses gethostbyname() function already removed from POSIX.
182
181
  #
183
- #
184
182
  # This method obtains the host information for *address*.
185
183
  #
186
184
  # p Socket.gethostbyaddr([221,186,184,68].pack("CCCC"))
@@ -209,7 +207,6 @@ class Socket < BasicSocket
209
207
  # cannot be released since gethostbyname() is not thread safe.)
210
208
  # * This method uses gethostbyname() function already removed from POSIX.
211
209
  #
212
- #
213
210
  # This method obtains the host information for *hostname*.
214
211
  #
215
212
  # p Socket.gethostbyname("hal") #=> ["localhost", ["hal"], 2, "\x7F\x00\x00\x01"]
@@ -281,7 +278,6 @@ class Socket < BasicSocket
281
278
  # * 3-elements array such as ["AF_INET", 80, "127.0.0.1"]
282
279
  # * 4-elements array such as ["AF_INET", 80, ignored, "127.0.0.1"]
283
280
  #
284
- #
285
281
  # *flags* should be bitwise OR of Socket::NI_* constants.
286
282
  #
287
283
  # Note: The last form is compatible with IPSocket#addr and IPSocket#peeraddr.
@@ -462,15 +458,38 @@ class Socket < BasicSocket
462
458
  # -->
463
459
  # creates a new socket object connected to host:port using TCP/IP.
464
460
  #
461
+ # Starting from Ruby 3.4, this method operates according to the Happy Eyeballs
462
+ # Version 2 ([RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305))
463
+ # algorithm by default.
464
+ #
465
+ # For details on Happy Eyeballs Version 2, see
466
+ # [Socket.tcp_fast_fallback=](rdoc-ref:Socket.tcp_fast_fallback=).
467
+ #
468
+ # To make it behave the same as in Ruby 3.3 and earlier, explicitly specify the
469
+ # option fast_fallback:false. Or, setting Socket.tcp_fast_fallback=false will
470
+ # disable Happy Eyeballs Version 2 not only for this method but for all Socket
471
+ # globally.
472
+ #
465
473
  # If local_host:local_port is given, the socket is bound to it.
466
474
  #
467
475
  # The optional last argument *opts* is options represented by a hash. *opts* may
468
476
  # have following options:
469
477
  #
470
- # :connect_timeout
471
- # : specify the timeout in seconds.
472
478
  # :resolv_timeout
473
- # : specify the name resolution timeout in seconds.
479
+ # : Specifies the timeout in seconds from when the hostname resolution starts.
480
+ #
481
+ # :connect_timeout
482
+ # : This method sequentially attempts connecting to all candidate destination
483
+ # addresses.
484
+ # The `connect_timeout` specifies the timeout in seconds from the start of
485
+ # the connection attempt to the last candidate.
486
+ # By default, all connection attempts continue until the timeout occurs.
487
+ # When `fast_fallback:false` is explicitly specified,
488
+ # a timeout is set for each connection attempt and any connection attempt
489
+ # that exceeds its timeout will be canceled.
490
+ #
491
+ # :fast_fallback
492
+ # : Enables the Happy Eyeballs Version 2 algorithm (enabled by default).
474
493
  #
475
494
  #
476
495
  # If a block is given, the block is called with the socket. The value of the
@@ -484,8 +503,8 @@ class Socket < BasicSocket
484
503
  # puts sock.read
485
504
  # }
486
505
  #
487
- def self.tcp: (String host, Integer port, ?String local_host, ?Integer local_port, ?resolv_timeout: Numeric, ?connect_timeout: Numeric) -> instance
488
- | (String host, Integer port, ?String local_host, ?Integer local_port, ?resolv_timeout: Numeric, ?connect_timeout: Numeric) { (instance) -> void } -> void
506
+ 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
489
508
 
490
509
  # <!--
491
510
  # rdoc-file=ext/socket/lib/socket.rb
@@ -754,8 +773,6 @@ class Socket < BasicSocket
754
773
  #
755
774
  def self.unpack_sockaddr_un: (String path) -> String
756
775
 
757
- public
758
-
759
776
  # <!--
760
777
  # rdoc-file=ext/socket/socket.c
761
778
  # - socket.accept => [client_socket, client_addrinfo]
@@ -836,7 +853,6 @@ class Socket < BasicSocket
836
853
  # * `local_sockaddr` - the `struct` sockaddr contained in a string or an
837
854
  # Addrinfo object
838
855
  #
839
- #
840
856
  # ### Example
841
857
  # require 'socket'
842
858
  #
@@ -877,7 +893,6 @@ class Socket < BasicSocket
877
893
  # * Errno::EOPNOTSUPP - the socket type of the `socket` does not support
878
894
  # binding to an address
879
895
  #
880
- #
881
896
  # On unix-based based systems if the address family of the calling `socket` is
882
897
  # Socket::AF_UNIX the follow exceptions may be raised if the call to *bind*
883
898
  # fails:
@@ -896,7 +911,6 @@ class Socket < BasicSocket
896
911
  # *sockaddr* is not a directory
897
912
  # * Errno::EROFS - the name would reside on a read only filesystem
898
913
  #
899
- #
900
914
  # ### Windows Exceptions
901
915
  # On Windows systems the following system exceptions may be raised if the call
902
916
  # to *bind* fails:
@@ -912,7 +926,6 @@ class Socket < BasicSocket
912
926
  # * Errno::ENOBUFS - no buffer space is available
913
927
  # * Errno::ENOTSOCK - the `socket` argument does not refer to a socket
914
928
  #
915
- #
916
929
  # ### See
917
930
  # * bind manual pages on unix-based systems
918
931
  # * bind function in Microsoft's Winsock functions reference
@@ -930,7 +943,6 @@ class Socket < BasicSocket
930
943
  # * `remote_sockaddr` - the `struct` sockaddr contained in a string or
931
944
  # Addrinfo object
932
945
  #
933
- #
934
946
  # ### Example:
935
947
  # # Pull down Google's web page
936
948
  # require 'socket'
@@ -985,7 +997,6 @@ class Socket < BasicSocket
985
997
  # * Errno::ETIMEDOUT - the attempt to connect timed out before a connection
986
998
  # was made.
987
999
  #
988
- #
989
1000
  # On unix-based systems if the address family of the calling `socket` is AF_UNIX
990
1001
  # the follow exceptions may be raised if the call to *connect* fails:
991
1002
  # * Errno::EIO - an i/o error occurred while reading from or writing to the
@@ -999,7 +1010,6 @@ class Socket < BasicSocket
999
1010
  # * Errno::ENOTDIR - a component of the path prefix of the pathname in
1000
1011
  # *sockaddr* is not a directory
1001
1012
  #
1002
- #
1003
1013
  # ### Windows Exceptions
1004
1014
  # On Windows systems the following system exceptions may be raised if the call
1005
1015
  # to *connect* fails:
@@ -1032,7 +1042,6 @@ class Socket < BasicSocket
1032
1042
  # * Errno::EACCES - the attempt to connect the datagram socket to the
1033
1043
  # broadcast address failed
1034
1044
  #
1035
- #
1036
1045
  # ### See
1037
1046
  # * connect manual pages on unix-based systems
1038
1047
  # * connect function in Microsoft's Winsock functions reference
@@ -1048,7 +1057,8 @@ class Socket < BasicSocket
1048
1057
  # otherwise an exception is raised.
1049
1058
  #
1050
1059
  # ### Parameter
1051
- # # +remote_sockaddr+ - the +struct+ sockaddr contained in a string or Addrinfo object
1060
+ # * `remote_sockaddr` - the `struct` sockaddr contained in a string or
1061
+ # Addrinfo object
1052
1062
  #
1053
1063
  # ### Example:
1054
1064
  # # Pull down Google's web page
@@ -1083,7 +1093,7 @@ class Socket < BasicSocket
1083
1093
  # the symbol `:wait_writable` instead.
1084
1094
  #
1085
1095
  # ### See
1086
- # # Socket#connect
1096
+ # * Socket#connect
1087
1097
  #
1088
1098
  def connect_nonblock: (untyped addr, ?exception: untyped) -> (Integer | :wait_writable)
1089
1099
 
@@ -1106,7 +1116,6 @@ class Socket < BasicSocket
1106
1116
  # ### Parameter
1107
1117
  # * `backlog` - the maximum length of the queue for pending connections.
1108
1118
  #
1109
- #
1110
1119
  # ### Example 1
1111
1120
  # require 'socket'
1112
1121
  # include Socket::Constants
@@ -1143,7 +1152,6 @@ class Socket < BasicSocket
1143
1152
  # * Errno::ENOBUFS - insufficient resources are available in the system to
1144
1153
  # complete the call
1145
1154
  #
1146
- #
1147
1155
  # ### Windows Exceptions
1148
1156
  # On Windows systems the following system exceptions may be raised if the call
1149
1157
  # to *listen* fails:
@@ -1163,7 +1171,6 @@ class Socket < BasicSocket
1163
1171
  # * Errno::EOPNOTSUPP - the referenced `socket` is not a type that supports
1164
1172
  # the *listen* method
1165
1173
  #
1166
- #
1167
1174
  # ### See
1168
1175
  # * listen manual pages on unix-based systems
1169
1176
  # * listen function in Microsoft's Winsock functions reference
@@ -1184,7 +1191,6 @@ class Socket < BasicSocket
1184
1191
  # * `maxlen` - the maximum number of bytes to receive from the socket
1185
1192
  # * `flags` - zero or more of the `MSG_` options
1186
1193
  #
1187
- #
1188
1194
  # ### Example
1189
1195
  # # In one file, start this first
1190
1196
  # require 'socket'
@@ -1240,7 +1246,6 @@ class Socket < BasicSocket
1240
1246
  # * Errno::ETIMEDOUT - the connection timed out during connection
1241
1247
  # establishment or due to a transmission timeout on an active connection
1242
1248
  #
1243
- #
1244
1249
  # ### Windows Exceptions
1245
1250
  # On Windows systems the following system exceptions may be raised if the call
1246
1251
  # to *recvfrom* fails:
@@ -1291,9 +1296,10 @@ class Socket < BasicSocket
1291
1296
  # received. The second element, *sender_addrinfo*, contains protocol-specific
1292
1297
  # address information of the sender.
1293
1298
  #
1294
- # When recvfrom(2) returns 0, Socket#recvfrom_nonblock returns an empty string
1295
- # as data. The meaning depends on the socket: EOF on TCP, empty packet on UDP,
1296
- # etc.
1299
+ # When recvfrom(2) returns 0, Socket#recv_nonblock returns nil. In most cases it
1300
+ # means the connection was closed, but for UDP connections it may mean an empty
1301
+ # packet was received, as the underlying API makes it impossible to distinguish
1302
+ # these two cases.
1297
1303
  #
1298
1304
  # ### Parameters
1299
1305
  # * `maxlen` - the maximum number of bytes to receive from the socket
@@ -1301,7 +1307,6 @@ class Socket < BasicSocket
1301
1307
  # * `outbuf` - destination String buffer
1302
1308
  # * `opts` - keyword hash, supporting `exception: false`
1303
1309
  #
1304
- #
1305
1310
  # ### Example
1306
1311
  # # In one file, start this first
1307
1312
  # require 'socket'
@@ -1416,7 +1421,7 @@ class Socket < BasicSocket
1416
1421
  # Socket.new(:UNIX, :STREAM) # UNIX stream socket
1417
1422
  # Socket.new(:UNIX, :DGRAM) # UNIX datagram socket
1418
1423
  #
1419
- def initialize: (Symbol domain, Symbol socktype, ?Integer protocol) -> untyped
1424
+ def initialize: (Symbol | Integer domain, Symbol | Integer socktype, ?Integer protocol) -> untyped
1420
1425
  end
1421
1426
 
1422
1427
  # <!-- rdoc-file=ext/socket/constdefs.c -->
@@ -1519,8 +1524,8 @@ Socket::AF_IMPLINK: Integer
1519
1524
  #
1520
1525
  Socket::AF_INET: Integer
1521
1526
 
1522
- # <!-- rdoc-file=ext/socket/constdefs.c -->
1523
- # IPv6 protocol
1527
+ # <!-- rdoc-file=lib/ipaddr.rb -->
1528
+ # IPv6 protocol family
1524
1529
  #
1525
1530
  Socket::AF_INET6: Integer
1526
1531
 
@@ -3346,6 +3351,16 @@ Socket::SO_ERROR: Integer
3346
3351
  #
3347
3352
  Socket::SO_GET_FILTER: Integer
3348
3353
 
3354
+ # <!-- rdoc-file=ext/socket/constdefs.c -->
3355
+ # Receive the cpu attached to the socket (Linux 3.19)
3356
+ #
3357
+ Socket::SO_INCOMING_CPU: Integer
3358
+
3359
+ # <!-- rdoc-file=ext/socket/constdefs.c -->
3360
+ # Receive the napi ID attached to a RX queue (Linux 4.12)
3361
+ #
3362
+ Socket::SO_INCOMING_NAPI_ID: Integer
3363
+
3349
3364
  # <!-- rdoc-file=ext/socket/constdefs.c -->
3350
3365
  # Keep connections alive
3351
3366
  #
@@ -3481,6 +3496,11 @@ Socket::SO_REUSEADDR: Integer
3481
3496
  #
3482
3497
  Socket::SO_REUSEPORT: Integer
3483
3498
 
3499
+ # <!-- rdoc-file=ext/socket/constdefs.c -->
3500
+ # Set the routing table for this socket (OpenBSD)
3501
+ #
3502
+ Socket::SO_RTABLE: Integer
3503
+
3484
3504
  # <!-- rdoc-file=ext/socket/constdefs.c -->
3485
3505
  # Toggle cmsg for number of packets dropped (Linux 2.6.33)
3486
3506
  #
@@ -3494,6 +3514,11 @@ Socket::SO_SECURITY_ENCRYPTION_TRANSPORT: Integer
3494
3514
  #
3495
3515
  Socket::SO_SELECT_ERR_QUEUE: Integer
3496
3516
 
3517
+ # <!-- rdoc-file=ext/socket/constdefs.c -->
3518
+ # Set the associated routing table for the socket (FreeBSD)
3519
+ #
3520
+ Socket::SO_SETFIB: Integer
3521
+
3497
3522
  # <!-- rdoc-file=ext/socket/constdefs.c -->
3498
3523
  # Send buffer size
3499
3524
  #
@@ -3539,6 +3564,11 @@ Socket::SO_TYPE: Integer
3539
3564
  #
3540
3565
  Socket::SO_USELOOPBACK: Integer
3541
3566
 
3567
+ # <!-- rdoc-file=ext/socket/constdefs.c -->
3568
+ # Setting an identifier for ipfw purpose mainly
3569
+ #
3570
+ Socket::SO_USER_COOKIE: Integer
3571
+
3542
3572
  # <!-- rdoc-file=ext/socket/constdefs.c -->
3543
3573
  # Give a hint when more data is ready
3544
3574
  #
@@ -3554,6 +3584,11 @@ Socket::SO_WANTOOBFLAG: Integer
3554
3584
  #
3555
3585
  Socket::SO_WIFI_STATUS: Integer
3556
3586
 
3587
+ # <!-- rdoc-file=ext/socket/constdefs.c -->
3588
+ # Retrieve information about this socket (macOS)
3589
+ #
3590
+ Socket::TCP_CONNECTION_INFO: Integer
3591
+
3557
3592
  # <!-- rdoc-file=ext/socket/constdefs.c -->
3558
3593
  # TCP congestion control algorithm (Linux 2.6.13, glibc 2.6)
3559
3594
  #
@@ -3584,6 +3619,11 @@ Socket::TCP_FASTOPEN: Integer
3584
3619
  #
3585
3620
  Socket::TCP_INFO: Integer
3586
3621
 
3622
+ # <!-- rdoc-file=ext/socket/constdefs.c -->
3623
+ # Idle time before keepalive probes are sent (macOS)
3624
+ #
3625
+ Socket::TCP_KEEPALIVE: Integer
3626
+
3587
3627
  # <!-- rdoc-file=ext/socket/constdefs.c -->
3588
3628
  # Maximum number of keepalive probes allowed before dropping a connection (Linux
3589
3629
  # 2.4, glibc 2.2)
@@ -3696,8 +3736,6 @@ Socket::UDP_CORK: Integer
3696
3736
  # Socket::Ifaddr represents a result of getifaddrs() function.
3697
3737
  #
3698
3738
  class Socket::Ifaddr
3699
- public
3700
-
3701
3739
  # <!--
3702
3740
  # rdoc-file=ext/socket/ifaddr.c
3703
3741
  # - ifaddr.addr => addrinfo
@@ -3771,8 +3809,6 @@ end
3771
3809
  # UDP/IP address information used by Socket.udp_server_loop.
3772
3810
  #
3773
3811
  class Socket::UDPSource
3774
- public
3775
-
3776
3812
  def inspect: () -> String
3777
3813
 
3778
3814
  # <!-- rdoc-file=ext/socket/lib/socket.rb -->
@@ -3877,8 +3913,6 @@ class Socket::AncillaryData
3877
3913
  #
3878
3914
  def self.unix_rights: (IO fd) -> instance
3879
3915
 
3880
- public
3881
-
3882
3916
  # <!--
3883
3917
  # rdoc-file=ext/socket/ancdata.c
3884
3918
  # - ancillarydata.cmsg_is?(level, type) => true or false
@@ -4096,7 +4130,6 @@ class Socket::AncillaryData
4096
4130
  # * Socket::AF_UNIX, "AF_UNIX", "UNIX", :AF_UNIX, :UNIX
4097
4131
  # * etc.
4098
4132
  #
4099
- #
4100
4133
  # *cmsg_level* should be an integer, a string or a symbol.
4101
4134
  # * Socket::SOL_SOCKET, "SOL_SOCKET", "SOCKET", :SOL_SOCKET and :SOCKET
4102
4135
  # * Socket::IPPROTO_IP, "IP" and :IP
@@ -4104,7 +4137,6 @@ class Socket::AncillaryData
4104
4137
  # * Socket::IPPROTO_TCP, "TCP" and :TCP
4105
4138
  # * etc.
4106
4139
  #
4107
- #
4108
4140
  # *cmsg_type* should be an integer, a string or a symbol. If a string/symbol is
4109
4141
  # specified, it is interpreted depend on *cmsg_level*.
4110
4142
  # * Socket::SCM_RIGHTS, "SCM_RIGHTS", "RIGHTS", :SCM_RIGHTS, :RIGHTS for
@@ -4113,7 +4145,6 @@ class Socket::AncillaryData
4113
4145
  # * Socket::IPV6_PKTINFO, "PKTINFO" and :PKTINFO for IPPROTO_IPV6
4114
4146
  # * etc.
4115
4147
  #
4116
- #
4117
4148
  # *cmsg_data* should be a string.
4118
4149
  #
4119
4150
  # p Socket::AncillaryData.new(:INET, :TCP, :NODELAY, "")
@@ -4122,5 +4153,5 @@ class Socket::AncillaryData
4122
4153
  # p Socket::AncillaryData.new(:INET6, :IPV6, :PKTINFO, "")
4123
4154
  # #=> #<Socket::AncillaryData: INET6 IPV6 PKTINFO "">
4124
4155
  #
4125
- def initialize: (Symbol | String | Integer family, Symbol | String | Integer cmsg_level, Symbol | String | Integer cmsg_data, String cmsg_data) -> untyped
4156
+ def initialize: (interned | Integer family, interned | Integer cmsg_level, interned | Integer cmsg_data, String cmsg_data) -> untyped
4126
4157
  end
@@ -27,8 +27,6 @@
27
27
  # end
28
28
  #
29
29
  class TCPServer < TCPSocket
30
- public
31
-
32
30
  # <!--
33
31
  # rdoc-file=ext/socket/tcpserver.c
34
32
  # - tcpserver.accept => tcpsocket
@@ -93,7 +91,6 @@ class TCPServer < TCPSocket
93
91
  # ### Parameter
94
92
  # * `backlog` - the maximum length of the queue for pending connections.
95
93
  #
96
- #
97
94
  # ### Example 1
98
95
  # require 'socket'
99
96
  # include Socket::Constants
@@ -130,7 +127,6 @@ class TCPServer < TCPSocket
130
127
  # * Errno::ENOBUFS - insufficient resources are available in the system to
131
128
  # complete the call
132
129
  #
133
- #
134
130
  # ### Windows Exceptions
135
131
  # On Windows systems the following system exceptions may be raised if the call
136
132
  # to *listen* fails:
@@ -150,7 +146,6 @@ class TCPServer < TCPSocket
150
146
  # * Errno::EOPNOTSUPP - the referenced `socket` is not a type that supports
151
147
  # the *listen* method
152
148
  #
153
- #
154
149
  # ### See
155
150
  # * listen manual pages on unix-based systems
156
151
  # * listen function in Microsoft's Winsock functions reference