rbs 4.1.0-java

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 (569) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.dockerignore +37 -0
  5. data/.github/dependabot.yml +24 -0
  6. data/.github/workflows/bundle-update.yml +63 -0
  7. data/.github/workflows/c-check.yml +66 -0
  8. data/.github/workflows/comments.yml +37 -0
  9. data/.github/workflows/dependabot.yml +30 -0
  10. data/.github/workflows/jruby.yml +79 -0
  11. data/.github/workflows/milestone.yml +91 -0
  12. data/.github/workflows/ruby.yml +158 -0
  13. data/.github/workflows/rust.yml +186 -0
  14. data/.github/workflows/truffleruby.yml +54 -0
  15. data/.github/workflows/typecheck.yml +39 -0
  16. data/.github/workflows/wasm.yml +55 -0
  17. data/.github/workflows/windows.yml +49 -0
  18. data/.gitignore +39 -0
  19. data/.rubocop.yml +72 -0
  20. data/BSDL +22 -0
  21. data/CHANGELOG.md +2380 -0
  22. data/COPYING +56 -0
  23. data/Dockerfile.jruby +53 -0
  24. data/README.md +240 -0
  25. data/Rakefile +856 -0
  26. data/Steepfile +55 -0
  27. data/config.yml +913 -0
  28. data/core/array.rbs +4205 -0
  29. data/core/basic_object.rbs +376 -0
  30. data/core/binding.rbs +148 -0
  31. data/core/builtin.rbs +278 -0
  32. data/core/class.rbs +223 -0
  33. data/core/comparable.rbs +192 -0
  34. data/core/complex.rbs +812 -0
  35. data/core/constants.rbs +96 -0
  36. data/core/data.rbs +415 -0
  37. data/core/dir.rbs +993 -0
  38. data/core/encoding.rbs +1368 -0
  39. data/core/enumerable.rbs +2506 -0
  40. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  41. data/core/enumerator/product.rbs +92 -0
  42. data/core/enumerator.rbs +705 -0
  43. data/core/env.rbs +6 -0
  44. data/core/errno.rbs +682 -0
  45. data/core/errors.rbs +789 -0
  46. data/core/exception.rbs +485 -0
  47. data/core/false_class.rbs +82 -0
  48. data/core/fiber.rbs +570 -0
  49. data/core/fiber_error.rbs +11 -0
  50. data/core/file.rbs +2045 -0
  51. data/core/file_constants.rbs +463 -0
  52. data/core/file_stat.rbs +534 -0
  53. data/core/file_test.rbs +331 -0
  54. data/core/float.rbs +1292 -0
  55. data/core/gc.rbs +788 -0
  56. data/core/global_variables.rbs +184 -0
  57. data/core/hash.rbs +2183 -0
  58. data/core/integer.rbs +1374 -0
  59. data/core/io/buffer.rbs +995 -0
  60. data/core/io/wait.rbs +48 -0
  61. data/core/io.rbs +3472 -0
  62. data/core/kernel.rbs +3172 -0
  63. data/core/marshal.rbs +207 -0
  64. data/core/match_data.rbs +637 -0
  65. data/core/math.rbs +770 -0
  66. data/core/method.rbs +422 -0
  67. data/core/module.rbs +1856 -0
  68. data/core/nil_class.rbs +210 -0
  69. data/core/numeric.rbs +832 -0
  70. data/core/object.rbs +108 -0
  71. data/core/object_space/weak_key_map.rbs +166 -0
  72. data/core/object_space.rbs +197 -0
  73. data/core/pathname.rbs +1312 -0
  74. data/core/proc.rbs +905 -0
  75. data/core/process.rbs +2316 -0
  76. data/core/ractor.rbs +914 -0
  77. data/core/random.rbs +255 -0
  78. data/core/range.rbs +1209 -0
  79. data/core/rational.rbs +502 -0
  80. data/core/rb_config.rbs +88 -0
  81. data/core/rbs/ops.rbs +154 -0
  82. data/core/rbs/unnamed/argf.rbs +1236 -0
  83. data/core/rbs/unnamed/env_class.rbs +1214 -0
  84. data/core/rbs/unnamed/main_class.rbs +123 -0
  85. data/core/rbs/unnamed/random.rbs +186 -0
  86. data/core/refinement.rbs +59 -0
  87. data/core/regexp.rbs +1974 -0
  88. data/core/ruby.rbs +53 -0
  89. data/core/ruby_vm.rbs +809 -0
  90. data/core/rubygems/basic_specification.rbs +6 -0
  91. data/core/rubygems/config_file.rbs +38 -0
  92. data/core/rubygems/dependency_installer.rbs +6 -0
  93. data/core/rubygems/errors.rbs +112 -0
  94. data/core/rubygems/installer.rbs +15 -0
  95. data/core/rubygems/path_support.rbs +6 -0
  96. data/core/rubygems/platform.rbs +7 -0
  97. data/core/rubygems/request_set.rbs +49 -0
  98. data/core/rubygems/requirement.rbs +138 -0
  99. data/core/rubygems/rubygems.rbs +1108 -0
  100. data/core/rubygems/source_list.rbs +15 -0
  101. data/core/rubygems/specification.rbs +31 -0
  102. data/core/rubygems/stream_ui.rbs +5 -0
  103. data/core/rubygems/uninstaller.rbs +10 -0
  104. data/core/rubygems/version.rbs +133 -0
  105. data/core/set.rbs +751 -0
  106. data/core/signal.rbs +110 -0
  107. data/core/string.rbs +5532 -0
  108. data/core/struct.rbs +668 -0
  109. data/core/symbol.rbs +482 -0
  110. data/core/thread.rbs +1821 -0
  111. data/core/thread_group.rbs +79 -0
  112. data/core/time.rbs +1793 -0
  113. data/core/trace_point.rbs +483 -0
  114. data/core/true_class.rbs +98 -0
  115. data/core/unbound_method.rbs +337 -0
  116. data/core/warning.rbs +87 -0
  117. data/docs/CONTRIBUTING.md +107 -0
  118. data/docs/aliases.md +79 -0
  119. data/docs/architecture.md +110 -0
  120. data/docs/collection.md +192 -0
  121. data/docs/config.md +171 -0
  122. data/docs/data_and_struct.md +86 -0
  123. data/docs/encoding.md +56 -0
  124. data/docs/gem.md +56 -0
  125. data/docs/inline.md +634 -0
  126. data/docs/rbs_by_example.md +309 -0
  127. data/docs/release.md +69 -0
  128. data/docs/repo.md +125 -0
  129. data/docs/rust.md +96 -0
  130. data/docs/sigs.md +167 -0
  131. data/docs/stdlib.md +147 -0
  132. data/docs/syntax.md +940 -0
  133. data/docs/tools.md +17 -0
  134. data/docs/type_fingerprint.md +21 -0
  135. data/docs/wasm_serialization.md +80 -0
  136. data/exe/rbs +7 -0
  137. data/ext/rbs_extension/ast_translation.c +1855 -0
  138. data/ext/rbs_extension/ast_translation.h +41 -0
  139. data/ext/rbs_extension/class_constants.c +187 -0
  140. data/ext/rbs_extension/class_constants.h +104 -0
  141. data/ext/rbs_extension/compat.h +10 -0
  142. data/ext/rbs_extension/extconf.rb +40 -0
  143. data/ext/rbs_extension/legacy_location.c +299 -0
  144. data/ext/rbs_extension/legacy_location.h +82 -0
  145. data/ext/rbs_extension/main.c +613 -0
  146. data/ext/rbs_extension/rbs_extension.h +16 -0
  147. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  148. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  149. data/goodcheck.yml +91 -0
  150. data/include/rbs/ast.h +1047 -0
  151. data/include/rbs/defines.h +99 -0
  152. data/include/rbs/lexer.h +207 -0
  153. data/include/rbs/location.h +40 -0
  154. data/include/rbs/parser.h +153 -0
  155. data/include/rbs/serialize.h +39 -0
  156. data/include/rbs/string.h +47 -0
  157. data/include/rbs/util/rbs_allocator.h +59 -0
  158. data/include/rbs/util/rbs_assert.h +20 -0
  159. data/include/rbs/util/rbs_buffer.h +83 -0
  160. data/include/rbs/util/rbs_constant_pool.h +155 -0
  161. data/include/rbs/util/rbs_encoding.h +282 -0
  162. data/include/rbs/util/rbs_unescape.h +24 -0
  163. data/include/rbs.h +14 -0
  164. data/lib/rbs/ancestor_graph.rb +92 -0
  165. data/lib/rbs/annotate/annotations.rb +199 -0
  166. data/lib/rbs/annotate/formatter.rb +82 -0
  167. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  168. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  169. data/lib/rbs/annotate.rb +8 -0
  170. data/lib/rbs/ast/annotation.rb +29 -0
  171. data/lib/rbs/ast/comment.rb +29 -0
  172. data/lib/rbs/ast/declarations.rb +472 -0
  173. data/lib/rbs/ast/directives.rb +49 -0
  174. data/lib/rbs/ast/members.rb +451 -0
  175. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  176. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  177. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  178. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  179. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  180. data/lib/rbs/ast/ruby/members.rb +762 -0
  181. data/lib/rbs/ast/type_param.rb +235 -0
  182. data/lib/rbs/ast/visitor.rb +137 -0
  183. data/lib/rbs/buffer.rb +189 -0
  184. data/lib/rbs/builtin_names.rb +58 -0
  185. data/lib/rbs/cli/colored_io.rb +48 -0
  186. data/lib/rbs/cli/diff.rb +84 -0
  187. data/lib/rbs/cli/validate.rb +294 -0
  188. data/lib/rbs/cli.rb +1253 -0
  189. data/lib/rbs/collection/cleaner.rb +38 -0
  190. data/lib/rbs/collection/config/lockfile.rb +92 -0
  191. data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  192. data/lib/rbs/collection/config.rb +81 -0
  193. data/lib/rbs/collection/installer.rb +32 -0
  194. data/lib/rbs/collection/sources/base.rb +14 -0
  195. data/lib/rbs/collection/sources/git.rb +265 -0
  196. data/lib/rbs/collection/sources/local.rb +81 -0
  197. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  198. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  199. data/lib/rbs/collection/sources.rb +38 -0
  200. data/lib/rbs/collection.rb +16 -0
  201. data/lib/rbs/constant.rb +28 -0
  202. data/lib/rbs/definition.rb +415 -0
  203. data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
  204. data/lib/rbs/definition_builder/method_builder.rb +295 -0
  205. data/lib/rbs/definition_builder.rb +1054 -0
  206. data/lib/rbs/diff.rb +131 -0
  207. data/lib/rbs/environment/class_entry.rb +69 -0
  208. data/lib/rbs/environment/module_entry.rb +66 -0
  209. data/lib/rbs/environment/use_map.rb +77 -0
  210. data/lib/rbs/environment.rb +1028 -0
  211. data/lib/rbs/environment_loader.rb +167 -0
  212. data/lib/rbs/environment_walker.rb +155 -0
  213. data/lib/rbs/errors.rb +634 -0
  214. data/lib/rbs/factory.rb +18 -0
  215. data/lib/rbs/file_finder.rb +28 -0
  216. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  217. data/lib/rbs/inline_parser.rb +568 -0
  218. data/lib/rbs/location_aux.rb +170 -0
  219. data/lib/rbs/locator.rb +247 -0
  220. data/lib/rbs/method_type.rb +145 -0
  221. data/lib/rbs/namespace.rb +154 -0
  222. data/lib/rbs/parser/lex_result.rb +15 -0
  223. data/lib/rbs/parser/token.rb +23 -0
  224. data/lib/rbs/parser_aux.rb +144 -0
  225. data/lib/rbs/prototype/helpers.rb +197 -0
  226. data/lib/rbs/prototype/node_usage.rb +99 -0
  227. data/lib/rbs/prototype/rb.rb +816 -0
  228. data/lib/rbs/prototype/rbi.rb +793 -0
  229. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  230. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  231. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  232. data/lib/rbs/prototype/runtime.rb +680 -0
  233. data/lib/rbs/repository.rb +127 -0
  234. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  235. data/lib/rbs/resolver/type_name_resolver.rb +167 -0
  236. data/lib/rbs/rewriter.rb +70 -0
  237. data/lib/rbs/sorter.rb +198 -0
  238. data/lib/rbs/source.rb +99 -0
  239. data/lib/rbs/substitution.rb +83 -0
  240. data/lib/rbs/subtractor.rb +204 -0
  241. data/lib/rbs/test/errors.rb +80 -0
  242. data/lib/rbs/test/guaranteed.rb +30 -0
  243. data/lib/rbs/test/hook.rb +212 -0
  244. data/lib/rbs/test/observer.rb +19 -0
  245. data/lib/rbs/test/setup.rb +84 -0
  246. data/lib/rbs/test/setup_helper.rb +50 -0
  247. data/lib/rbs/test/tester.rb +167 -0
  248. data/lib/rbs/test/type_check.rb +457 -0
  249. data/lib/rbs/test.rb +112 -0
  250. data/lib/rbs/type_alias_dependency.rb +100 -0
  251. data/lib/rbs/type_alias_regularity.rb +126 -0
  252. data/lib/rbs/type_name.rb +122 -0
  253. data/lib/rbs/types.rb +1604 -0
  254. data/lib/rbs/unit_test/convertibles.rb +177 -0
  255. data/lib/rbs/unit_test/spy.rb +138 -0
  256. data/lib/rbs/unit_test/type_assertions.rb +383 -0
  257. data/lib/rbs/unit_test/with_aliases.rb +145 -0
  258. data/lib/rbs/unit_test.rb +6 -0
  259. data/lib/rbs/validator.rb +186 -0
  260. data/lib/rbs/variance_calculator.rb +189 -0
  261. data/lib/rbs/vendorer.rb +71 -0
  262. data/lib/rbs/version.rb +5 -0
  263. data/lib/rbs/wasm/deserializer.rb +213 -0
  264. data/lib/rbs/wasm/location.rb +61 -0
  265. data/lib/rbs/wasm/parser.rb +137 -0
  266. data/lib/rbs/wasm/rbs_parser.wasm +0 -0
  267. data/lib/rbs/wasm/runtime.rb +196 -0
  268. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  269. data/lib/rbs/writer.rb +424 -0
  270. data/lib/rbs.rb +117 -0
  271. data/lib/rbs_jars.rb +39 -0
  272. data/lib/rdoc/discover.rb +20 -0
  273. data/lib/rdoc_plugin/parser.rb +168 -0
  274. data/rbs.gemspec +81 -0
  275. data/schema/annotation.json +14 -0
  276. data/schema/comment.json +26 -0
  277. data/schema/decls.json +326 -0
  278. data/schema/function.json +87 -0
  279. data/schema/location.json +56 -0
  280. data/schema/members.json +266 -0
  281. data/schema/methodType.json +50 -0
  282. data/schema/typeParam.json +52 -0
  283. data/schema/types.json +317 -0
  284. data/sig/ancestor_builder.rbs +163 -0
  285. data/sig/ancestor_graph.rbs +60 -0
  286. data/sig/annotate/annotations.rbs +102 -0
  287. data/sig/annotate/formatter.rbs +24 -0
  288. data/sig/annotate/rdoc_annotater.rbs +85 -0
  289. data/sig/annotate/rdoc_source.rbs +32 -0
  290. data/sig/annotation.rbs +27 -0
  291. data/sig/ast/ruby/annotations.rbs +470 -0
  292. data/sig/ast/ruby/comment_block.rbs +127 -0
  293. data/sig/ast/ruby/declarations.rbs +158 -0
  294. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  295. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  296. data/sig/ast/ruby/members.rbs +198 -0
  297. data/sig/buffer.rbs +108 -0
  298. data/sig/builtin_names.rbs +44 -0
  299. data/sig/cli/colored_io.rbs +15 -0
  300. data/sig/cli/diff.rbs +15 -0
  301. data/sig/cli/validate.rbs +47 -0
  302. data/sig/cli.rbs +89 -0
  303. data/sig/collection/cleaner.rbs +13 -0
  304. data/sig/collection/config/lockfile.rbs +74 -0
  305. data/sig/collection/config/lockfile_generator.rbs +68 -0
  306. data/sig/collection/config.rbs +46 -0
  307. data/sig/collection/installer.rbs +17 -0
  308. data/sig/collection/sources.rbs +214 -0
  309. data/sig/collection.rbs +4 -0
  310. data/sig/comment.rbs +26 -0
  311. data/sig/constant.rbs +21 -0
  312. data/sig/declarations.rbs +274 -0
  313. data/sig/definition.rbs +232 -0
  314. data/sig/definition_builder.rbs +181 -0
  315. data/sig/diff.rbs +28 -0
  316. data/sig/directives.rbs +77 -0
  317. data/sig/environment/class_entry.rbs +50 -0
  318. data/sig/environment/module_entry.rbs +50 -0
  319. data/sig/environment.rbs +286 -0
  320. data/sig/environment_loader.rbs +111 -0
  321. data/sig/environment_walker.rbs +65 -0
  322. data/sig/errors.rbs +408 -0
  323. data/sig/factory.rbs +5 -0
  324. data/sig/file_finder.rbs +28 -0
  325. data/sig/inline_parser/comment_association.rbs +71 -0
  326. data/sig/inline_parser.rbs +126 -0
  327. data/sig/location.rbs +135 -0
  328. data/sig/locator.rbs +56 -0
  329. data/sig/manifest.yaml +5 -0
  330. data/sig/members.rbs +258 -0
  331. data/sig/method_builder.rbs +89 -0
  332. data/sig/method_types.rbs +58 -0
  333. data/sig/namespace.rbs +161 -0
  334. data/sig/parser.rbs +164 -0
  335. data/sig/prototype/helpers.rbs +29 -0
  336. data/sig/prototype/node_usage.rbs +20 -0
  337. data/sig/prototype/rb.rbs +96 -0
  338. data/sig/prototype/rbi.rbs +104 -0
  339. data/sig/prototype/runtime.rbs +182 -0
  340. data/sig/rbs.rbs +21 -0
  341. data/sig/rdoc/rbs.rbs +67 -0
  342. data/sig/repository.rbs +85 -0
  343. data/sig/resolver/constant_resolver.rbs +92 -0
  344. data/sig/resolver/context.rbs +34 -0
  345. data/sig/resolver/type_name_resolver.rbs +61 -0
  346. data/sig/rewriter.rbs +45 -0
  347. data/sig/shims/bundler.rbs +38 -0
  348. data/sig/shims/enumerable.rbs +5 -0
  349. data/sig/shims/rubygems.rbs +19 -0
  350. data/sig/sorter.rbs +41 -0
  351. data/sig/source.rbs +48 -0
  352. data/sig/substitution.rbs +48 -0
  353. data/sig/subtractor.rbs +37 -0
  354. data/sig/test/errors.rbs +52 -0
  355. data/sig/test/guranteed.rbs +9 -0
  356. data/sig/test/type_check.rbs +19 -0
  357. data/sig/test.rbs +82 -0
  358. data/sig/type_alias_dependency.rbs +53 -0
  359. data/sig/type_alias_regularity.rbs +98 -0
  360. data/sig/type_param.rbs +115 -0
  361. data/sig/typename.rbs +89 -0
  362. data/sig/types.rbs +578 -0
  363. data/sig/unit_test/convertibles.rbs +154 -0
  364. data/sig/unit_test/spy.rbs +22 -0
  365. data/sig/unit_test/type_assertions.rbs +211 -0
  366. data/sig/unit_test/with_aliases.rbs +136 -0
  367. data/sig/use_map.rbs +35 -0
  368. data/sig/util.rbs +9 -0
  369. data/sig/validator.rbs +63 -0
  370. data/sig/variance_calculator.rbs +87 -0
  371. data/sig/vendorer.rbs +51 -0
  372. data/sig/version.rbs +3 -0
  373. data/sig/visitor.rbs +47 -0
  374. data/sig/wasm/deserializer.rbs +66 -0
  375. data/sig/wasm/serialization_schema.rbs +13 -0
  376. data/sig/writer.rbs +127 -0
  377. data/src/ast.c +1628 -0
  378. data/src/lexer.c +3221 -0
  379. data/src/lexer.re +155 -0
  380. data/src/lexstate.c +221 -0
  381. data/src/location.c +31 -0
  382. data/src/parser.c +4255 -0
  383. data/src/serialize.c +958 -0
  384. data/src/string.c +41 -0
  385. data/src/util/rbs_allocator.c +171 -0
  386. data/src/util/rbs_assert.c +19 -0
  387. data/src/util/rbs_buffer.c +54 -0
  388. data/src/util/rbs_constant_pool.c +268 -0
  389. data/src/util/rbs_encoding.c +21308 -0
  390. data/src/util/rbs_unescape.c +167 -0
  391. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  392. data/stdlib/abbrev/0/array.rbs +26 -0
  393. data/stdlib/base64/0/base64.rbs +355 -0
  394. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  395. data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  396. data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  397. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  398. data/stdlib/cgi/0/core.rbs +911 -0
  399. data/stdlib/cgi/0/manifest.yaml +4 -0
  400. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  401. data/stdlib/coverage/0/coverage.rbs +266 -0
  402. data/stdlib/csv/0/csv.rbs +3776 -0
  403. data/stdlib/csv/0/manifest.yaml +3 -0
  404. data/stdlib/date/0/date.rbs +1598 -0
  405. data/stdlib/date/0/date_time.rbs +617 -0
  406. data/stdlib/date/0/time.rbs +26 -0
  407. data/stdlib/dbm/0/dbm.rbs +421 -0
  408. data/stdlib/delegate/0/delegator.rbs +188 -0
  409. data/stdlib/delegate/0/kernel.rbs +47 -0
  410. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  411. data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  412. data/stdlib/digest/0/digest.rbs +693 -0
  413. data/stdlib/erb/0/erb.rbs +933 -0
  414. data/stdlib/etc/0/etc.rbs +884 -0
  415. data/stdlib/fileutils/0/fileutils.rbs +1753 -0
  416. data/stdlib/find/0/find.rbs +49 -0
  417. data/stdlib/forwardable/0/forwardable.rbs +271 -0
  418. data/stdlib/io-console/0/io-console.rbs +414 -0
  419. data/stdlib/ipaddr/0/ipaddr.rbs +431 -0
  420. data/stdlib/json/0/json.rbs +1963 -0
  421. data/stdlib/kconv/0/kconv.rbs +166 -0
  422. data/stdlib/logger/0/formatter.rbs +45 -0
  423. data/stdlib/logger/0/log_device.rbs +100 -0
  424. data/stdlib/logger/0/logger.rbs +796 -0
  425. data/stdlib/logger/0/manifest.yaml +2 -0
  426. data/stdlib/logger/0/period.rbs +17 -0
  427. data/stdlib/logger/0/severity.rbs +34 -0
  428. data/stdlib/minitest/0/kernel.rbs +42 -0
  429. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  430. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  431. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  432. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  433. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  434. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  435. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  436. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  437. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  438. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  439. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  440. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  441. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  442. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  443. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  444. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  445. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  446. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  447. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  448. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  449. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  450. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  451. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  452. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  453. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  454. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  455. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  456. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  457. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  458. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  459. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  460. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  461. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  462. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  463. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  464. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  465. data/stdlib/minitest/0/minitest.rbs +115 -0
  466. data/stdlib/monitor/0/monitor.rbs +363 -0
  467. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  468. data/stdlib/net-http/0/manifest.yaml +3 -0
  469. data/stdlib/net-http/0/net-http.rbs +5580 -0
  470. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  471. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  472. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  473. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  474. data/stdlib/nkf/0/nkf.rbs +402 -0
  475. data/stdlib/objspace/0/objspace.rbs +470 -0
  476. data/stdlib/observable/0/observable.rbs +217 -0
  477. data/stdlib/open-uri/0/manifest.yaml +4 -0
  478. data/stdlib/open-uri/0/open-uri.rbs +433 -0
  479. data/stdlib/open3/0/open3.rbs +606 -0
  480. data/stdlib/openssl/0/manifest.yaml +3 -0
  481. data/stdlib/openssl/0/openssl.rbs +12237 -0
  482. data/stdlib/optparse/0/optparse.rbs +1734 -0
  483. data/stdlib/pathname/0/pathname.rbs +36 -0
  484. data/stdlib/pp/0/manifest.yaml +2 -0
  485. data/stdlib/pp/0/pp.rbs +301 -0
  486. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  487. data/stdlib/pstore/0/pstore.rbs +608 -0
  488. data/stdlib/psych/0/core_ext.rbs +12 -0
  489. data/stdlib/psych/0/dbm.rbs +237 -0
  490. data/stdlib/psych/0/manifest.yaml +3 -0
  491. data/stdlib/psych/0/psych.rbs +455 -0
  492. data/stdlib/psych/0/store.rbs +57 -0
  493. data/stdlib/pty/0/pty.rbs +240 -0
  494. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  495. data/stdlib/rdoc/0/code_object.rbs +52 -0
  496. data/stdlib/rdoc/0/comment.rbs +61 -0
  497. data/stdlib/rdoc/0/context.rbs +153 -0
  498. data/stdlib/rdoc/0/markup.rbs +117 -0
  499. data/stdlib/rdoc/0/options.rbs +76 -0
  500. data/stdlib/rdoc/0/parser.rbs +56 -0
  501. data/stdlib/rdoc/0/rdoc.rbs +393 -0
  502. data/stdlib/rdoc/0/ri.rbs +17 -0
  503. data/stdlib/rdoc/0/store.rbs +48 -0
  504. data/stdlib/rdoc/0/top_level.rbs +97 -0
  505. data/stdlib/resolv/0/manifest.yaml +3 -0
  506. data/stdlib/resolv/0/resolv.rbs +1787 -0
  507. data/stdlib/ripper/0/ripper.rbs +1654 -0
  508. data/stdlib/securerandom/0/manifest.yaml +2 -0
  509. data/stdlib/securerandom/0/securerandom.rbs +49 -0
  510. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  511. data/stdlib/singleton/0/singleton.rbs +134 -0
  512. data/stdlib/socket/0/addrinfo.rbs +666 -0
  513. data/stdlib/socket/0/basic_socket.rbs +590 -0
  514. data/stdlib/socket/0/constants.rbs +2295 -0
  515. data/stdlib/socket/0/ip_socket.rbs +94 -0
  516. data/stdlib/socket/0/socket.rbs +4170 -0
  517. data/stdlib/socket/0/socket_error.rbs +5 -0
  518. data/stdlib/socket/0/tcp_server.rbs +192 -0
  519. data/stdlib/socket/0/tcp_socket.rbs +87 -0
  520. data/stdlib/socket/0/udp_socket.rbs +133 -0
  521. data/stdlib/socket/0/unix_server.rbs +169 -0
  522. data/stdlib/socket/0/unix_socket.rbs +172 -0
  523. data/stdlib/stringio/0/stringio.rbs +1681 -0
  524. data/stdlib/strscan/0/string_scanner.rbs +1648 -0
  525. data/stdlib/tempfile/0/manifest.yaml +3 -0
  526. data/stdlib/tempfile/0/tempfile.rbs +483 -0
  527. data/stdlib/time/0/time.rbs +434 -0
  528. data/stdlib/timeout/0/timeout.rbs +132 -0
  529. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  530. data/stdlib/tsort/0/cyclic.rbs +8 -0
  531. data/stdlib/tsort/0/interfaces.rbs +20 -0
  532. data/stdlib/tsort/0/tsort.rbs +410 -0
  533. data/stdlib/uri/0/common.rbs +621 -0
  534. data/stdlib/uri/0/file.rbs +118 -0
  535. data/stdlib/uri/0/ftp.rbs +13 -0
  536. data/stdlib/uri/0/generic.rbs +1111 -0
  537. data/stdlib/uri/0/http.rbs +104 -0
  538. data/stdlib/uri/0/https.rbs +14 -0
  539. data/stdlib/uri/0/ldap.rbs +230 -0
  540. data/stdlib/uri/0/ldaps.rbs +14 -0
  541. data/stdlib/uri/0/mailto.rbs +92 -0
  542. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  543. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  544. data/stdlib/uri/0/ws.rbs +13 -0
  545. data/stdlib/uri/0/wss.rbs +9 -0
  546. data/stdlib/yaml/0/manifest.yaml +2 -0
  547. data/stdlib/yaml/0/yaml.rbs +1 -0
  548. data/stdlib/zlib/0/buf_error.rbs +10 -0
  549. data/stdlib/zlib/0/data_error.rbs +10 -0
  550. data/stdlib/zlib/0/deflate.rbs +211 -0
  551. data/stdlib/zlib/0/error.rbs +20 -0
  552. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  553. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  554. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  555. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  556. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  557. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  558. data/stdlib/zlib/0/gzip_writer.rbs +168 -0
  559. data/stdlib/zlib/0/inflate.rbs +180 -0
  560. data/stdlib/zlib/0/mem_error.rbs +10 -0
  561. data/stdlib/zlib/0/need_dict.rbs +13 -0
  562. data/stdlib/zlib/0/stream_end.rbs +11 -0
  563. data/stdlib/zlib/0/stream_error.rbs +11 -0
  564. data/stdlib/zlib/0/version_error.rbs +11 -0
  565. data/stdlib/zlib/0/zlib.rbs +449 -0
  566. data/stdlib/zlib/0/zstream.rbs +200 -0
  567. data/wasm/README.md +60 -0
  568. data/wasm/rbs_wasm.c +423 -0
  569. metadata +671 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 73bc36eb78f102ec2cd1dc04bea1907352b7295ebac31bce88aae673db9b5b18
4
+ data.tar.gz: fedab63f16f6a0f216e1c2a254d7534a9b7348e6fe0286c6452c6c6ed801bc5d
5
+ SHA512:
6
+ metadata.gz: fed0da3de5067f20a2f5e43a3986911edfbe7900d569373b85a112b6c0eef0a26bf9118ab9d48dcfaaba62055262232bf7c9a33b73839403d4d2f279a205503d
7
+ data.tar.gz: b176cc620376e1fef7f8535f30d3ab3440014b514eee7fef69b65845d0668f21c5cfc158cc011b18b87d3077a9273437be5d4aa17ea272c4f15b49b2629be7b7
data/.clang-format ADDED
@@ -0,0 +1,75 @@
1
+ ---
2
+ Language: Cpp
3
+
4
+ # Indentation
5
+ UseTab: Never
6
+ IndentWidth: 4
7
+ BreakBeforeBraces: Attach
8
+ IndentCaseLabels: false
9
+ NamespaceIndentation: None
10
+ ContinuationIndentWidth: 4
11
+ IndentPPDirectives: None
12
+ IndentWrappedFunctionNames: false
13
+ AccessModifierOffset: -2
14
+
15
+ # Alignment
16
+ AlignAfterOpenBracket: BlockIndent
17
+ AlignConsecutiveAssignments: false
18
+ AlignConsecutiveDeclarations: false
19
+ AlignConsecutiveMacros: false
20
+ AlignEscapedNewlines: Left
21
+ AlignOperands: false
22
+ AlignTrailingComments: true
23
+ DerivePointerAlignment: false
24
+ PointerAlignment: Right
25
+
26
+ # Function calls formatting
27
+ BinPackArguments: false
28
+ BinPackParameters: false
29
+ AllowAllArgumentsOnNextLine: false
30
+ ExperimentalAutoDetectBinPacking: false
31
+ PenaltyBreakBeforeFirstCallParameter: 1
32
+ AlwaysBreakAfterDefinitionReturnType: None
33
+
34
+ # Wrapping and Breaking
35
+ ColumnLimit: 0
36
+ AllowShortBlocksOnASingleLine: Never
37
+ AllowShortCaseLabelsOnASingleLine: false
38
+ AllowShortFunctionsOnASingleLine: All
39
+ AllowShortIfStatementsOnASingleLine: Always
40
+ AllowShortLoopsOnASingleLine: false
41
+ AlwaysBreakAfterReturnType: None
42
+ AlwaysBreakBeforeMultilineStrings: false
43
+ AlwaysBreakTemplateDeclarations: No
44
+ BreakBeforeBinaryOperators: None
45
+ BreakBeforeTernaryOperators: false
46
+ BreakConstructorInitializers: BeforeColon
47
+ BreakInheritanceList: BeforeColon
48
+ BreakStringLiterals: false
49
+ CompactNamespaces: false
50
+ ConstructorInitializerAllOnOneLineOrOnePerLine: false
51
+ Cpp11BracedListStyle: false
52
+ ReflowComments: false
53
+ SortIncludes: Never
54
+ InsertNewlineAtEOF: true
55
+
56
+ # Spaces
57
+ SpaceAfterCStyleCast: true
58
+ SpaceAfterLogicalNot: false
59
+ SpaceAfterTemplateKeyword: true
60
+ SpaceBeforeAssignmentOperators: true
61
+ SpaceBeforeCpp11BracedList: true
62
+ SpaceBeforeCtorInitializerColon: true
63
+ SpaceBeforeInheritanceColon: true
64
+ SpaceBeforeParens: ControlStatements
65
+ SpaceBeforeRangeBasedForLoopColon: true
66
+ SpaceBeforeSquareBrackets: false
67
+ SpaceInEmptyBlock: false
68
+ SpaceInEmptyParentheses: false
69
+ SpacesBeforeTrailingComments: 1
70
+ SpacesInAngles: false
71
+ SpacesInCStyleCastParentheses: false
72
+ SpacesInConditionalStatement: false
73
+ SpacesInContainerLiterals: true
74
+ SpacesInParentheses: false
75
+ SpacesInSquareBrackets: false
data/.clangd ADDED
@@ -0,0 +1,2 @@
1
+ CompileFlags:
2
+ CompilationDatabase: ext/rbs_extension
data/.dockerignore ADDED
@@ -0,0 +1,37 @@
1
+ # Keep the build context small. .git is intentionally NOT ignored: rbs.gemspec
2
+ # builds its file list with `git ls-files`.
3
+ #
4
+ # Safe to ignore here: untracked/generated paths, and tracked paths the gemspec
5
+ # already rejects (so `gem build` does not expect them on disk). Do NOT ignore a
6
+ # tracked path the gemspec ships — `gem build` would fail with "... are not
7
+ # files". .vscode/ and benchmark/ are tracked but rejected by the gemspec.
8
+ .vscode/
9
+ benchmark/
10
+
11
+ # Editor / tooling / worktree copies (untracked; each is a full repo clone)
12
+ .claude/
13
+ trees/
14
+ .devcontainer/
15
+ .idea/
16
+ .ruby-lsp/
17
+ .yardoc/
18
+ doc/
19
+ datasets/
20
+ tmp/
21
+
22
+ # Build artifact — rebuilt inside the image by `rake wasm:jruby_setup`
23
+ lib/rbs/wasm/*.wasm
24
+ *.gem
25
+ ext/**/*.o
26
+ ext/**/*.so
27
+ ext/**/*.bundle
28
+ *.log
29
+
30
+ # Local scratch / experiment files
31
+ flamegraph.html
32
+ gc.html
33
+ foo.rbs
34
+ sorted.json
35
+ string.json
36
+ Gemfile-*
37
+ gemfiles/
@@ -0,0 +1,24 @@
1
+ version: 2
2
+ updates:
3
+ # - package-ecosystem: bundler
4
+ # directory: "/"
5
+ # schedule:
6
+ # interval: daily
7
+ # open-pull-requests-limit: 3
8
+ # allow:
9
+ # - dependency-type: all
10
+
11
+ # - package-ecosystem: bundler
12
+ # directory: "/steep"
13
+ # schedule:
14
+ # interval: daily
15
+ # open-pull-requests-limit: 3
16
+ # allow:
17
+ # - dependency-type: all
18
+
19
+ - package-ecosystem: 'github-actions'
20
+ directory: '/'
21
+ schedule:
22
+ interval: 'weekly'
23
+ labels:
24
+ - 'no-milestone'
@@ -0,0 +1,63 @@
1
+ name: Scheduled Bundle Update PR
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 0 * * 2'
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ bundle-update:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout repository
14
+ uses: actions/checkout@v7
15
+
16
+ - name: Set up Ruby
17
+ uses: ruby/setup-ruby@v1
18
+ with:
19
+ ruby-version: '4.0'
20
+
21
+ - name: Set up git
22
+ run: |
23
+ git config --global user.name "github-actions[bot]"
24
+ git config --global user.email "github-actions[bot]@users.noreply.github.com"
25
+
26
+ - name: Switch branch
27
+ run: |
28
+ git switch -c bundle-update-$(date +'%Y%m%d')-$(uuidgen | cut -c1-8)
29
+
30
+ - name: Install bundler
31
+ run: gem install bundler
32
+
33
+ - name: Run bundle update
34
+ run: |
35
+ bundle lock --update
36
+ bundle lock --update --gemfile=steep/Gemfile
37
+ git add Gemfile.lock steep/Gemfile.lock
38
+
39
+ if git diff --cached --exit-code; then
40
+ echo "No changes to commit, exiting."
41
+ exit 0
42
+ fi
43
+
44
+ git commit -m "bundle update"
45
+ echo "has_update=true" >> $GITHUB_ENV
46
+
47
+ - name: Push branch
48
+ if: env.has_update == 'true'
49
+ run: git push origin HEAD
50
+
51
+ - name: Create Pull Request
52
+ if: env.has_update == 'true'
53
+ env:
54
+ GH_TOKEN: ${{ secrets.DEPENDABOT_MERGE_GH_TOKEN }}
55
+ run: |
56
+ gh pr create \
57
+ --title "bundle update ($(date +'%Y-%m-%d'))" \
58
+ --body "Automated weekly bundle update" \
59
+ --head "$(git rev-parse --abbrev-ref HEAD)" \
60
+ --base "${{ github.event.repository.default_branch }}" \
61
+ --label "no-milestone"
62
+
63
+ gh pr merge --auto --merge "$(git rev-parse --abbrev-ref HEAD)"
@@ -0,0 +1,66 @@
1
+ name: C Code Generation and Formatting Check
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request: {}
8
+ merge_group: {}
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ format-check:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v7
18
+ - uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: "4.0"
21
+ bundler-cache: none
22
+ - name: Set working directory as safe
23
+ run: git config --global --add safe.directory $(pwd)
24
+ - name: Install dependencies
25
+ run: |
26
+ sudo apt-get update
27
+ sudo apt-get install -y libdb-dev curl autoconf automake m4 libtool
28
+ - name: Install clang-format from LLVM
29
+ run: |
30
+ # The codename must match the `runs-on` image: `ubuntu-latest` is 24.04 (noble).
31
+ wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key \
32
+ | sudo gpg --dearmor -o /usr/share/keyrings/llvm-archive-keyring.gpg
33
+ # Written directly rather than through `apt-add-repository`, which cannot
34
+ # parse `[signed-by=...]` inside a one-line `deb` shortcut.
35
+ echo "deb [signed-by=/usr/share/keyrings/llvm-archive-keyring.gpg] http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main" \
36
+ | sudo tee /etc/apt/sources.list.d/llvm.list
37
+ sudo apt-get update
38
+ sudo apt-get install -y clang-format-20
39
+ sudo ln -sf /usr/bin/clang-format-20 /usr/local/bin/clang-format
40
+ clang-format --version
41
+ - name: Count processors
42
+ run: nproc
43
+ - name: Install Re2c
44
+ run: |
45
+ cd /tmp
46
+ curl -L https://github.com/skvadrik/re2c/archive/refs/tags/4.5.1.tar.gz > re2c-4.5.1.tar.gz
47
+ tar xf re2c-4.5.1.tar.gz
48
+ cd re2c-4.5.1
49
+ cmake --preset=linux-gcc-release-ootree-skeleton-fast
50
+ cmake --build --preset=linux-gcc-release-ootree-skeleton-fast --parallel="$(nproc)"
51
+ sudo ln -sf "$(pwd)"/.build/linux-gcc-release-ootree-skeleton-fast/re2c /usr/local/bin/re2c
52
+ re2c --version
53
+ - name: Update rubygems & bundler
54
+ run: |
55
+ ruby -v
56
+ gem update --system
57
+ - name: install erb
58
+ run: gem install erb
59
+ - name: bin/setup
60
+ run: |
61
+ bin/setup
62
+ - name: Check C code generation and formatting
63
+ run: |
64
+ clang-format --version
65
+ bundle exec rake lexer templates compile confirm_lexer confirm_templates
66
+ bundle exec rake format:c_check
@@ -0,0 +1,37 @@
1
+ name: RBS Comments
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request: {}
8
+ merge_group: {}
9
+
10
+ jobs:
11
+ comments:
12
+ runs-on: "ubuntu-latest"
13
+ # env:
14
+ # RUBY_COMMIT: v4.0.0-preview2
15
+ steps:
16
+ - uses: actions/checkout@v7
17
+ - uses: ruby/setup-ruby@v1
18
+ with:
19
+ ruby-version: "4.0.6"
20
+ bundler: none
21
+ - name: Install dependencies
22
+ run: |
23
+ sudo apt-get update
24
+ sudo apt-get install -y libdb-dev curl
25
+ - name: Update rubygems & bundler
26
+ run: |
27
+ ruby -v
28
+ gem update --system
29
+ - name: install erb
30
+ run: gem install erb
31
+ - name: bin/setup
32
+ run: |
33
+ bin/setup
34
+ - name: Check if `rake annotate` has been executed
35
+ run: |
36
+ git config --global --add safe.directory `pwd`
37
+ bundle exec rake annotate confirm_annotation
@@ -0,0 +1,30 @@
1
+ name: Merge dependabot PRs automatically
2
+ on: pull_request_target
3
+
4
+ permissions:
5
+ pull-requests: write
6
+ contents: write
7
+
8
+ env:
9
+ blocker_files: rbs.gemspec Gemfile steep/Gemfile
10
+
11
+ jobs:
12
+ dependabot:
13
+ runs-on: ubuntu-latest
14
+ if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}
15
+ steps:
16
+ - name: Dependabot metadata
17
+ uses: dependabot/fetch-metadata@25dd0e34f4fe68f24cc83900b1fe3fe149efef98 # v3.1.0
18
+ id: metadata
19
+ - name: Checkout repository
20
+ uses: actions/checkout@v7
21
+ with:
22
+ fetch-depth: 0
23
+ - name: Abort if blocker files are changed
24
+ run: git diff --exit-code ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} ${{ env.blocker_files }}
25
+ - name: Enable auto-merge for Dependabot PRs
26
+ run: gh pr merge --auto --merge "$PR_URL"
27
+ if: ${{ steps.metadata.outputs.update-type == 'version-update:semver-minor' || steps.metadata.outputs.update-type == 'version-update:semver-patch' }}
28
+ env:
29
+ PR_URL: ${{github.event.pull_request.html_url}}
30
+ GH_TOKEN: ${{secrets.DEPENDABOT_MERGE_GH_TOKEN}}
@@ -0,0 +1,79 @@
1
+ name: JRuby
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request:
8
+ paths:
9
+ - ".github/workflows/jruby.yml"
10
+ - "include/**"
11
+ - "src/**"
12
+ - "wasm/**"
13
+ - "lib/**"
14
+ - "sig/**"
15
+ - "core/**"
16
+ - "stdlib/**"
17
+ - "test/**"
18
+ - "Rakefile"
19
+ - "rbs.gemspec"
20
+ # `merge_group` has no `paths` filter, so this runs on every queue entry.
21
+ merge_group: {}
22
+
23
+ permissions:
24
+ contents: read
25
+
26
+ env:
27
+ # Keep in sync with .github/workflows/wasm.yml.
28
+ WASI_SDK_VERSION: "33"
29
+ WASI_SDK_RELEASE: "33.0"
30
+
31
+ jobs:
32
+ test:
33
+ name: jruby
34
+ runs-on: ubuntu-latest
35
+ steps:
36
+ - uses: actions/checkout@v7
37
+ - run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
38
+
39
+ # Build the .wasm and fetch the Chicory jars with CRuby + the WASI SDK,
40
+ # then run RBS itself on JRuby against those artifacts.
41
+ - name: Set up Ruby (to assemble the WebAssembly runtime)
42
+ uses: ruby/setup-ruby@v1
43
+ with:
44
+ ruby-version: ruby
45
+ bundler: none
46
+ - name: Update rubygems & bundler
47
+ run: gem update --system
48
+ - name: Install gems
49
+ run: |
50
+ bundle config set --local without libs:profilers
51
+ bundle install --jobs 4 --retry 3
52
+ - name: Install the WASI SDK
53
+ run: |
54
+ url="https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_RELEASE}-x86_64-linux.tar.gz"
55
+ mkdir -p "$HOME/wasi-sdk"
56
+ curl -sSL "$url" | tar xz --strip-components=1 -C "$HOME/wasi-sdk"
57
+ echo "WASI_SDK_PATH=$HOME/wasi-sdk" >> "$GITHUB_ENV"
58
+ - name: Build rbs_parser.wasm
59
+ run: bundle exec rake wasm:jruby_setup
60
+
61
+ - name: Set up JRuby
62
+ uses: ruby/setup-ruby@v1
63
+ with:
64
+ ruby-version: jruby
65
+ bundler: none
66
+ - name: Install runtime and test gems
67
+ # rdoc 8.0.0 added a runtime dependency on rbs, which pulls the released
68
+ # C-extension rbs gem and fails to build on JRuby. Pin rdoc below 8 until
69
+ # a -java rbs gem is published.
70
+ run: |
71
+ gem install prism rake rake-compiler test-unit rspec minitest json-schema pry --no-document
72
+ gem install rdoc -v "< 8" --no-document
73
+ # jar-dependencies resolves through the JVM, so download the Chicory/ASM
74
+ # jars into ~/.m2 here on JRuby (jar-dependencies is not available in the
75
+ # CRuby step above).
76
+ - name: Download the Chicory and ASM jars
77
+ run: jruby -S rake wasm:install_jars
78
+ - name: Run the test suite on JRuby
79
+ run: jruby -S rake test
@@ -0,0 +1,91 @@
1
+ name: Check milestone
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, edited, labeled, unlabeled, milestoned, demilestoned, synchronize]
6
+ merge_group: {}
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ check:
13
+ runs-on: ubuntu-latest
14
+
15
+ steps:
16
+ # The milestone is a property of the pull request, so there is nothing to
17
+ # check once it enters the merge queue. This job still has to run there
18
+ # because `check` is a required status check -- it just reports success
19
+ # without doing anything.
20
+ - uses: actions/checkout@v7
21
+ if: github.event_name == 'pull_request'
22
+
23
+ - name: Extract RBS::Version
24
+ id: version
25
+ if: github.event_name == 'pull_request'
26
+ run: |
27
+ # Extract version string from lib/rbs/version.rb
28
+ version=$(ruby -e 'load "lib/rbs/version.rb"; print RBS::VERSION')
29
+ echo "version=$version" >> "$GITHUB_OUTPUT"
30
+
31
+ # Parse major.minor.patch
32
+ IFS='.' read -r major minor patch _rest <<< "$version"
33
+ echo "major=$major" >> "$GITHUB_OUTPUT"
34
+ echo "minor=$minor" >> "$GITHUB_OUTPUT"
35
+ echo "patch=$patch" >> "$GITHUB_OUTPUT"
36
+
37
+ echo "RBS::VERSION = $version (major=$major, minor=$minor, patch=$patch)"
38
+
39
+ - name: Check milestone
40
+ if: github.event_name == 'pull_request'
41
+ uses: actions/github-script@v9
42
+ with:
43
+ script: |
44
+ const pr = context.payload.pull_request;
45
+ const milestone = pr.milestone;
46
+ const labels = pr.labels.map(l => l.name);
47
+
48
+ const version = '${{ steps.version.outputs.version }}';
49
+ const major = '${{ steps.version.outputs.major }}';
50
+ const minor = '${{ steps.version.outputs.minor }}';
51
+ const patch = parseInt('${{ steps.version.outputs.patch }}', 10);
52
+
53
+ if (!milestone) {
54
+ if (labels.includes('no-milestone')) {
55
+ core.info('No milestone set, but no-milestone label is present — OK');
56
+ return;
57
+ }
58
+ core.setFailed(
59
+ 'No milestone set. Add a milestone or add the "no-milestone" label.'
60
+ );
61
+ return;
62
+ }
63
+
64
+ if (labels.includes('no-milestone')) {
65
+ core.setFailed(
66
+ 'Milestone is set but "no-milestone" label is present. Remove the label or the milestone.'
67
+ );
68
+ return;
69
+ }
70
+
71
+ const milestoneName = milestone.title;
72
+ core.info(`Milestone: "${milestoneName}", RBS::VERSION: ${version}`);
73
+
74
+ // Expected milestone based on version:
75
+ // patch == 0 → "RBS major.minor" (e.g. "RBS 4.0")
76
+ // patch >= 1 → "RBS major.minor.x" (e.g. "RBS 4.0.x")
77
+ let expectedMilestone;
78
+ if (patch === 0) {
79
+ expectedMilestone = `RBS ${major}.${minor}`;
80
+ } else {
81
+ expectedMilestone = `RBS ${major}.${minor}.x`;
82
+ }
83
+
84
+ if (milestoneName !== expectedMilestone) {
85
+ core.setFailed(
86
+ `Milestone "${milestoneName}" does not match RBS::VERSION ${version}. ` +
87
+ `Expected milestone: "${expectedMilestone}"`
88
+ );
89
+ } else {
90
+ core.info(`Milestone "${milestoneName}" matches RBS::VERSION ${version}`);
91
+ }
@@ -0,0 +1,158 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request: {}
8
+ merge_group: {}
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ test:
15
+ runs-on: "ubuntu-latest"
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ ruby: ['3.3', '3.4', '4.0', head]
20
+ rubyopt: [""]
21
+ job:
22
+ - test
23
+ include:
24
+ - ruby: head
25
+ job: stdlib_test rubocop
26
+ - ruby: "4.0"
27
+ job: stdlib_test
28
+ - ruby: "4.0"
29
+ job: test
30
+ rubyopt: "--enable-frozen-string-literal"
31
+ - ruby: "4.0"
32
+ job: stdlib_test
33
+ rubyopt: "--enable-frozen-string-literal"
34
+ - ruby: "4.0"
35
+ job: rubocop validate test_doc build test_generate_stdlib raap
36
+ - ruby: "4.0"
37
+ job: typecheck_test
38
+ - ruby: asan-release
39
+ job: test
40
+ env:
41
+ RANDOMIZE_STDLIB_TEST_ORDER: "true"
42
+ steps:
43
+ - uses: actions/checkout@v7
44
+ - uses: ruby/setup-ruby@v1
45
+ with:
46
+ ruby-version: ${{ matrix.ruby }}
47
+ bundler: none
48
+ - name: Set working directory as safe
49
+ run: git config --global --add safe.directory $(pwd)
50
+ - name: Install dependencies
51
+ run: |
52
+ sudo apt-get update
53
+ sudo apt-get install -y libdb-dev curl autoconf automake m4 libtool python3
54
+ - name: Update rubygems & bundler
55
+ run: |
56
+ ruby -v
57
+ gem update --system
58
+ - name: install erb
59
+ run: gem install erb
60
+ - name: bundle config set with
61
+ run: |
62
+ echo "NO_MINITEST=true" >> $GITHUB_ENV
63
+ bundle config set --local without 'minitest'
64
+ if: ${{ contains(matrix.ruby, 'head') }}
65
+ - name: bundle config set force_ruby_platform true if head
66
+ if: ${{ contains(matrix.ruby, 'head') }}
67
+ run: |
68
+ bundle config set force_ruby_platform true
69
+ - name: Ignore Gemfile.lock's BUNDLED WITH on ruby-head
70
+ if: ${{ contains(matrix.ruby, 'head') }}
71
+ run: bundle config set --local version system
72
+ - name: Skip installing type checkers
73
+ if: ${{ ! contains(matrix.job, 'typecheck_test') }}
74
+ run: |
75
+ bundle config set without 'typecheck_test'
76
+ - name: bin/setup
77
+ run: |
78
+ bin/setup
79
+ - name: Configure ASAN options
80
+ if: ${{ contains(matrix.ruby, 'asan') }}
81
+ run: |
82
+ echo "ASAN_OPTIONS=abort_on_error=1" >> $GITHUB_ENV
83
+ - name: Run test
84
+ run: |
85
+ bundle exec rake ${{ matrix.job }}
86
+ C99_compile:
87
+ runs-on: macos-latest
88
+ strategy:
89
+ fail-fast: false
90
+ matrix:
91
+ ruby: ['4.0', head]
92
+ steps:
93
+ - uses: actions/checkout@v7
94
+ - name: Install dependencies
95
+ run: |
96
+ brew install ruby-build
97
+ - uses: ruby/setup-ruby@v1
98
+ with:
99
+ ruby-version: ${{ matrix.ruby }}
100
+ bundler: none
101
+ - name: Set working directory as safe
102
+ run: git config --global --add safe.directory $(pwd)
103
+ - name: Update rubygems & bundler
104
+ run: |
105
+ ruby -v
106
+ gem update --system
107
+ - name: install erb
108
+ run: gem install erb
109
+ - name: clang version
110
+ run: clang --version
111
+ - name: bundle config set force_ruby_platform true if head
112
+ if: ${{ contains(matrix.ruby, 'head') }}
113
+ run: |
114
+ bundle config set force_ruby_platform true
115
+ - name: Ignore Gemfile.lock's BUNDLED WITH on ruby-head
116
+ if: ${{ contains(matrix.ruby, 'head') }}
117
+ run: bundle config set --local version system
118
+ - name: bin/setup
119
+ run: |
120
+ bin/setup
121
+ - run: bundle exec rake clean compile_c99
122
+
123
+ clang_compile:
124
+ runs-on: macos-latest
125
+ strategy:
126
+ fail-fast: false
127
+ matrix:
128
+ ruby: ['4.0', head]
129
+ steps:
130
+ - uses: actions/checkout@v7
131
+ - name: Install dependencies
132
+ run: |
133
+ brew install ruby-build
134
+ - uses: ruby/setup-ruby@v1
135
+ with:
136
+ ruby-version: ${{ matrix.ruby }}
137
+ bundler: none
138
+ - name: Set working directory as safe
139
+ run: git config --global --add safe.directory $(pwd)
140
+ - name: Update rubygems & bundler
141
+ run: |
142
+ ruby -v
143
+ gem update --system
144
+ - name: install erb
145
+ run: gem install erb
146
+ - name: clang version
147
+ run: clang --version
148
+ - name: bundle config set force_ruby_platform true if head
149
+ if: ${{ contains(matrix.ruby, 'head') }}
150
+ run: |
151
+ bundle config set force_ruby_platform true
152
+ - name: Ignore Gemfile.lock's BUNDLED WITH on ruby-head
153
+ if: ${{ contains(matrix.ruby, 'head') }}
154
+ run: bundle config set --local version system
155
+ - name: bin/setup
156
+ run: |
157
+ bin/setup
158
+ - run: bundle exec rake clean compile