rbs 4.0.0.dev.4 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +14 -14
  3. data/.github/workflows/bundle-update.yml +60 -0
  4. data/.github/workflows/c-check.yml +18 -11
  5. data/.github/workflows/comments.yml +5 -3
  6. data/.github/workflows/dependabot.yml +2 -2
  7. data/.github/workflows/ruby.yml +27 -34
  8. data/.github/workflows/rust.yml +95 -0
  9. data/.github/workflows/typecheck.yml +2 -2
  10. data/.github/workflows/windows.yml +2 -2
  11. data/.rubocop.yml +1 -1
  12. data/CHANGELOG.md +323 -0
  13. data/README.md +1 -1
  14. data/Rakefile +43 -33
  15. data/Steepfile +1 -0
  16. data/config.yml +426 -24
  17. data/core/array.rbs +307 -227
  18. data/core/basic_object.rbs +9 -8
  19. data/core/binding.rbs +0 -2
  20. data/core/builtin.rbs +2 -2
  21. data/core/class.rbs +6 -5
  22. data/core/comparable.rbs +55 -34
  23. data/core/complex.rbs +104 -78
  24. data/core/dir.rbs +61 -49
  25. data/core/encoding.rbs +12 -15
  26. data/core/enumerable.rbs +179 -87
  27. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  28. data/core/enumerator.rbs +65 -2
  29. data/core/errno.rbs +11 -2
  30. data/core/errors.rbs +58 -29
  31. data/core/exception.rbs +13 -13
  32. data/core/fiber.rbs +74 -54
  33. data/core/file.rbs +280 -177
  34. data/core/file_test.rbs +3 -3
  35. data/core/float.rbs +257 -92
  36. data/core/gc.rbs +425 -281
  37. data/core/hash.rbs +1045 -739
  38. data/core/integer.rbs +135 -137
  39. data/core/io/buffer.rbs +53 -42
  40. data/core/io/wait.rbs +13 -35
  41. data/core/io.rbs +192 -144
  42. data/core/kernel.rbs +216 -155
  43. data/core/marshal.rbs +4 -4
  44. data/core/match_data.rbs +15 -13
  45. data/core/math.rbs +107 -66
  46. data/core/method.rbs +69 -33
  47. data/core/module.rbs +244 -106
  48. data/core/nil_class.rbs +7 -6
  49. data/core/numeric.rbs +74 -63
  50. data/core/object.rbs +9 -11
  51. data/core/object_space.rbs +30 -23
  52. data/core/pathname.rbs +1322 -0
  53. data/core/proc.rbs +95 -58
  54. data/core/process.rbs +222 -202
  55. data/core/ractor.rbs +371 -515
  56. data/core/random.rbs +21 -3
  57. data/core/range.rbs +159 -57
  58. data/core/rational.rbs +60 -89
  59. data/core/rbs/unnamed/argf.rbs +60 -53
  60. data/core/rbs/unnamed/env_class.rbs +19 -14
  61. data/core/rbs/unnamed/main_class.rbs +123 -0
  62. data/core/rbs/unnamed/random.rbs +11 -118
  63. data/core/regexp.rbs +258 -214
  64. data/core/ruby.rbs +53 -0
  65. data/core/ruby_vm.rbs +38 -34
  66. data/core/rubygems/config_file.rbs +5 -5
  67. data/core/rubygems/errors.rbs +4 -71
  68. data/core/rubygems/requirement.rbs +5 -5
  69. data/core/rubygems/rubygems.rbs +16 -82
  70. data/core/rubygems/version.rbs +2 -3
  71. data/core/set.rbs +490 -360
  72. data/core/signal.rbs +26 -16
  73. data/core/string.rbs +3234 -1285
  74. data/core/struct.rbs +27 -26
  75. data/core/symbol.rbs +41 -34
  76. data/core/thread.rbs +135 -67
  77. data/core/time.rbs +81 -50
  78. data/core/trace_point.rbs +41 -35
  79. data/core/true_class.rbs +2 -2
  80. data/core/unbound_method.rbs +24 -16
  81. data/core/warning.rbs +7 -7
  82. data/docs/aliases.md +79 -0
  83. data/docs/collection.md +3 -3
  84. data/docs/config.md +171 -0
  85. data/docs/encoding.md +56 -0
  86. data/docs/gem.md +0 -1
  87. data/docs/inline.md +576 -0
  88. data/docs/sigs.md +3 -3
  89. data/docs/syntax.md +46 -16
  90. data/docs/type_fingerprint.md +21 -0
  91. data/exe/rbs +1 -1
  92. data/ext/rbs_extension/ast_translation.c +544 -116
  93. data/ext/rbs_extension/ast_translation.h +3 -0
  94. data/ext/rbs_extension/class_constants.c +16 -2
  95. data/ext/rbs_extension/class_constants.h +8 -0
  96. data/ext/rbs_extension/extconf.rb +5 -1
  97. data/ext/rbs_extension/legacy_location.c +33 -56
  98. data/ext/rbs_extension/legacy_location.h +37 -0
  99. data/ext/rbs_extension/main.c +44 -35
  100. data/include/rbs/ast.h +448 -173
  101. data/include/rbs/defines.h +27 -0
  102. data/include/rbs/lexer.h +30 -11
  103. data/include/rbs/location.h +25 -44
  104. data/include/rbs/parser.h +6 -6
  105. data/include/rbs/string.h +0 -2
  106. data/include/rbs/util/rbs_allocator.h +34 -13
  107. data/include/rbs/util/rbs_assert.h +12 -1
  108. data/include/rbs/util/rbs_constant_pool.h +0 -3
  109. data/include/rbs/util/rbs_encoding.h +2 -0
  110. data/include/rbs/util/rbs_unescape.h +2 -1
  111. data/include/rbs.h +8 -0
  112. data/lib/rbs/ast/annotation.rb +1 -1
  113. data/lib/rbs/ast/comment.rb +1 -1
  114. data/lib/rbs/ast/declarations.rb +10 -10
  115. data/lib/rbs/ast/members.rb +14 -14
  116. data/lib/rbs/ast/ruby/annotations.rb +293 -3
  117. data/lib/rbs/ast/ruby/comment_block.rb +24 -0
  118. data/lib/rbs/ast/ruby/declarations.rb +198 -3
  119. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
  120. data/lib/rbs/ast/ruby/members.rb +532 -22
  121. data/lib/rbs/ast/type_param.rb +24 -4
  122. data/lib/rbs/buffer.rb +20 -15
  123. data/lib/rbs/cli/diff.rb +16 -15
  124. data/lib/rbs/cli/validate.rb +38 -106
  125. data/lib/rbs/cli.rb +52 -19
  126. data/lib/rbs/collection/config/lockfile_generator.rb +14 -2
  127. data/lib/rbs/collection/sources/git.rb +1 -0
  128. data/lib/rbs/definition.rb +1 -1
  129. data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
  130. data/lib/rbs/definition_builder/method_builder.rb +20 -0
  131. data/lib/rbs/definition_builder.rb +147 -25
  132. data/lib/rbs/diff.rb +7 -1
  133. data/lib/rbs/environment.rb +227 -74
  134. data/lib/rbs/environment_loader.rb +0 -6
  135. data/lib/rbs/errors.rb +27 -18
  136. data/lib/rbs/inline_parser.rb +342 -6
  137. data/lib/rbs/location_aux.rb +1 -1
  138. data/lib/rbs/locator.rb +5 -1
  139. data/lib/rbs/method_type.rb +5 -3
  140. data/lib/rbs/parser_aux.rb +20 -7
  141. data/lib/rbs/prototype/helpers.rb +57 -0
  142. data/lib/rbs/prototype/rb.rb +3 -28
  143. data/lib/rbs/prototype/rbi.rb +3 -20
  144. data/lib/rbs/prototype/runtime.rb +8 -0
  145. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  146. data/lib/rbs/resolver/type_name_resolver.rb +116 -38
  147. data/lib/rbs/subtractor.rb +3 -1
  148. data/lib/rbs/test/type_check.rb +19 -2
  149. data/lib/rbs/type_name.rb +1 -1
  150. data/lib/rbs/types.rb +88 -78
  151. data/lib/rbs/unit_test/type_assertions.rb +35 -8
  152. data/lib/rbs/validator.rb +2 -2
  153. data/lib/rbs/version.rb +1 -1
  154. data/lib/rbs.rb +1 -2
  155. data/lib/rdoc/discover.rb +1 -1
  156. data/lib/rdoc_plugin/parser.rb +1 -1
  157. data/rbs.gemspec +4 -3
  158. data/rust/.gitignore +1 -0
  159. data/rust/Cargo.lock +378 -0
  160. data/rust/Cargo.toml +7 -0
  161. data/rust/ruby-rbs/Cargo.toml +22 -0
  162. data/rust/ruby-rbs/build.rs +764 -0
  163. data/rust/ruby-rbs/examples/locations.rs +60 -0
  164. data/rust/ruby-rbs/src/lib.rs +1 -0
  165. data/rust/ruby-rbs/src/node/mod.rs +742 -0
  166. data/rust/ruby-rbs/tests/sanity.rs +47 -0
  167. data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
  168. data/rust/ruby-rbs-sys/Cargo.toml +23 -0
  169. data/rust/ruby-rbs-sys/build.rs +204 -0
  170. data/rust/ruby-rbs-sys/src/lib.rs +50 -0
  171. data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
  172. data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
  173. data/rust/ruby-rbs-sys/wrapper.h +1 -0
  174. data/schema/typeParam.json +17 -1
  175. data/sig/ast/ruby/annotations.rbs +315 -4
  176. data/sig/ast/ruby/comment_block.rbs +8 -0
  177. data/sig/ast/ruby/declarations.rbs +102 -4
  178. data/sig/ast/ruby/members.rbs +108 -2
  179. data/sig/cli/diff.rbs +5 -11
  180. data/sig/cli/validate.rbs +12 -8
  181. data/sig/cli.rbs +18 -18
  182. data/sig/definition.rbs +6 -1
  183. data/sig/definition_builder.rbs +2 -0
  184. data/sig/environment.rbs +70 -12
  185. data/sig/errors.rbs +13 -14
  186. data/sig/inline_parser.rbs +39 -2
  187. data/sig/locator.rbs +0 -2
  188. data/sig/manifest.yaml +0 -1
  189. data/sig/method_builder.rbs +3 -1
  190. data/sig/parser.rbs +31 -13
  191. data/sig/prototype/helpers.rbs +2 -0
  192. data/sig/resolver/type_name_resolver.rbs +35 -7
  193. data/sig/source.rbs +3 -3
  194. data/sig/type_param.rbs +13 -8
  195. data/sig/types.rbs +6 -7
  196. data/sig/unit_test/spy.rbs +0 -8
  197. data/sig/unit_test/type_assertions.rbs +11 -0
  198. data/src/ast.c +410 -153
  199. data/src/lexer.c +1392 -1313
  200. data/src/lexer.re +3 -0
  201. data/src/lexstate.c +58 -37
  202. data/src/location.c +8 -48
  203. data/src/parser.c +977 -516
  204. data/src/string.c +0 -48
  205. data/src/util/rbs_allocator.c +89 -71
  206. data/src/util/rbs_assert.c +1 -1
  207. data/src/util/rbs_buffer.c +2 -2
  208. data/src/util/rbs_constant_pool.c +10 -14
  209. data/src/util/rbs_encoding.c +4 -8
  210. data/src/util/rbs_unescape.c +56 -20
  211. data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
  212. data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
  213. data/stdlib/cgi/0/core.rbs +9 -393
  214. data/stdlib/cgi/0/manifest.yaml +1 -0
  215. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  216. data/stdlib/coverage/0/coverage.rbs +7 -4
  217. data/stdlib/date/0/date.rbs +92 -79
  218. data/stdlib/date/0/date_time.rbs +25 -24
  219. data/stdlib/delegate/0/delegator.rbs +10 -7
  220. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  221. data/stdlib/digest/0/digest.rbs +110 -0
  222. data/stdlib/erb/0/erb.rbs +748 -347
  223. data/stdlib/etc/0/etc.rbs +55 -50
  224. data/stdlib/fileutils/0/fileutils.rbs +158 -139
  225. data/stdlib/forwardable/0/forwardable.rbs +13 -10
  226. data/stdlib/io-console/0/io-console.rbs +2 -2
  227. data/stdlib/json/0/json.rbs +217 -136
  228. data/stdlib/monitor/0/monitor.rbs +3 -3
  229. data/stdlib/net-http/0/net-http.rbs +162 -134
  230. data/stdlib/objspace/0/objspace.rbs +17 -34
  231. data/stdlib/open-uri/0/open-uri.rbs +48 -8
  232. data/stdlib/open3/0/open3.rbs +469 -10
  233. data/stdlib/openssl/0/openssl.rbs +475 -357
  234. data/stdlib/optparse/0/optparse.rbs +26 -17
  235. data/stdlib/pathname/0/pathname.rbs +11 -1381
  236. data/stdlib/pp/0/pp.rbs +9 -8
  237. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  238. data/stdlib/pstore/0/pstore.rbs +35 -30
  239. data/stdlib/psych/0/psych.rbs +65 -12
  240. data/stdlib/psych/0/store.rbs +2 -4
  241. data/stdlib/pty/0/pty.rbs +9 -6
  242. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  243. data/stdlib/rdoc/0/code_object.rbs +2 -1
  244. data/stdlib/rdoc/0/parser.rbs +1 -1
  245. data/stdlib/rdoc/0/rdoc.rbs +1 -1
  246. data/stdlib/rdoc/0/store.rbs +1 -1
  247. data/stdlib/resolv/0/resolv.rbs +25 -68
  248. data/stdlib/ripper/0/ripper.rbs +22 -19
  249. data/stdlib/securerandom/0/manifest.yaml +2 -0
  250. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  251. data/stdlib/shellwords/0/shellwords.rbs +2 -2
  252. data/stdlib/singleton/0/singleton.rbs +3 -0
  253. data/stdlib/socket/0/addrinfo.rbs +7 -7
  254. data/stdlib/socket/0/basic_socket.rbs +3 -3
  255. data/stdlib/socket/0/ip_socket.rbs +10 -8
  256. data/stdlib/socket/0/socket.rbs +23 -10
  257. data/stdlib/socket/0/tcp_server.rbs +1 -1
  258. data/stdlib/socket/0/tcp_socket.rbs +11 -3
  259. data/stdlib/socket/0/udp_socket.rbs +1 -1
  260. data/stdlib/socket/0/unix_server.rbs +1 -1
  261. data/stdlib/stringio/0/stringio.rbs +1177 -85
  262. data/stdlib/strscan/0/string_scanner.rbs +27 -25
  263. data/stdlib/tempfile/0/tempfile.rbs +25 -21
  264. data/stdlib/time/0/time.rbs +8 -6
  265. data/stdlib/timeout/0/timeout.rbs +63 -7
  266. data/stdlib/tsort/0/cyclic.rbs +3 -0
  267. data/stdlib/tsort/0/tsort.rbs +7 -6
  268. data/stdlib/uri/0/common.rbs +42 -20
  269. data/stdlib/uri/0/file.rbs +3 -3
  270. data/stdlib/uri/0/generic.rbs +26 -18
  271. data/stdlib/uri/0/http.rbs +2 -2
  272. data/stdlib/uri/0/ldap.rbs +2 -2
  273. data/stdlib/uri/0/mailto.rbs +3 -3
  274. data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
  275. data/stdlib/zlib/0/deflate.rbs +4 -3
  276. data/stdlib/zlib/0/gzip_reader.rbs +6 -6
  277. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  278. data/stdlib/zlib/0/inflate.rbs +1 -1
  279. data/stdlib/zlib/0/need_dict.rbs +1 -1
  280. data/stdlib/zlib/0/zstream.rbs +1 -0
  281. metadata +50 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2d6c17a1d8371e7d529d224fcf5654f338e078e576275c214754573bb852a3f1
4
- data.tar.gz: 181a52dc722b34752019e38fcbf1b7b001cbdc3fd0ff3ceadeeefeb2813a5a5d
3
+ metadata.gz: 690d197a18a87b38b5346aa388ce159c6309062882bfe0042f081a0c6c145f32
4
+ data.tar.gz: 8302d00f402a1997f0ad749e684da8a7717115a0d51d60b9aa006a5988345df5
5
5
  SHA512:
6
- metadata.gz: bee9898c24cd2cfe577fd693a60daa364c0769f815f684170e123fa7f2dc7932799fbf9b99aba19e83a17d373c8eedf5007e3934338b1ecd052a85c2f7ad986b
7
- data.tar.gz: 5cd52e73fbbd3680d049a3c116da321d6e98825121216d33cd365737bd5405e1bb32dd3f3d33842a7a5db7ca9442c27a107682430cbafbce78dbfc0dc24be06e
6
+ metadata.gz: aa8baf772365041ba474bbbd1c5ac55ae09bffc31fe57ae307e1778fdd115afbf9c2b940e59019e40026e76afdd77a30321229e46d88a953f9a7c90a7bf1c383
7
+ data.tar.gz: a701db27b244f861abcf394ff0ab57e54ad064697df540e564e4fda4b1242e9316f5453e2a14bb7548e8b063df39c0775bf76d13f7b8fde833c2c7e4e9758b65
@@ -1,20 +1,20 @@
1
1
  version: 2
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
3
+ # - package-ecosystem: bundler
4
+ # directory: "/"
5
+ # schedule:
6
+ # interval: daily
7
+ # open-pull-requests-limit: 3
8
+ # allow:
9
+ # - dependency-type: all
10
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
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
18
 
19
19
  - package-ecosystem: 'github-actions'
20
20
  directory: '/'
@@ -0,0 +1,60 @@
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@v6
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 }}"
@@ -2,6 +2,8 @@ name: C Code Generation and Formatting Check
2
2
 
3
3
  on:
4
4
  push:
5
+ branches:
6
+ - master
5
7
  pull_request: {}
6
8
  merge_group: {}
7
9
 
@@ -9,10 +11,10 @@ jobs:
9
11
  format-check:
10
12
  runs-on: ubuntu-latest
11
13
  steps:
12
- - uses: actions/checkout@v4
14
+ - uses: actions/checkout@v6
13
15
  - uses: ruby/setup-ruby@v1
14
16
  with:
15
- ruby-version: "3.4"
17
+ ruby-version: "4.0"
16
18
  bundler-cache: none
17
19
  - name: Set working directory as safe
18
20
  run: git config --global --add safe.directory $(pwd)
@@ -23,24 +25,29 @@ jobs:
23
25
  - name: Install clang-format from LLVM
24
26
  run: |
25
27
  wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
26
- sudo apt-add-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy main"
28
+ sudo apt-add-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main"
27
29
  sudo apt-get update
28
- sudo apt-get install -y clang-format
30
+ sudo apt-get install -y clang-format-20
31
+ sudo ln -sf /usr/bin/clang-format-20 /usr/local/bin/clang-format
29
32
  clang-format --version
33
+ - name: Count processors
34
+ run: nproc
30
35
  - name: Install Re2c
31
36
  run: |
32
37
  cd /tmp
33
- curl -L https://github.com/skvadrik/re2c/archive/refs/tags/3.1.tar.gz > re2c-3.1.tar.gz
34
- tar xf re2c-3.1.tar.gz
35
- cd re2c-3.1
36
- autoreconf -i -W all
37
- ./configure
38
- make
39
- sudo make install
38
+ curl -L https://github.com/skvadrik/re2c/archive/refs/tags/4.3.tar.gz > re2c-4.3.tar.gz
39
+ tar xf re2c-4.3.tar.gz
40
+ cd re2c-4.3
41
+ cmake --preset=linux-gcc-release-ootree-skeleton-fast
42
+ cmake --build --preset=linux-gcc-release-ootree-skeleton-fast --parallel="$(nproc)"
43
+ sudo ln -sf "$(pwd)"/.build/linux-gcc-release-ootree-skeleton-fast/re2c /usr/local/bin/re2c
44
+ re2c --version
40
45
  - name: Update rubygems & bundler
41
46
  run: |
42
47
  ruby -v
43
48
  gem update --system
49
+ - name: install erb
50
+ run: gem install erb
44
51
  - name: bin/setup
45
52
  run: |
46
53
  bin/setup
@@ -11,12 +11,12 @@ jobs:
11
11
  comments:
12
12
  runs-on: "ubuntu-latest"
13
13
  # env:
14
- # RUBY_COMMIT: 1b0c46daed9186b82ab4fef1a4ab225afe582ee6
14
+ # RUBY_COMMIT: v4.0.0-preview2
15
15
  steps:
16
- - uses: actions/checkout@v4
16
+ - uses: actions/checkout@v6
17
17
  - uses: ruby/setup-ruby@v1
18
18
  with:
19
- ruby-version: "3.4.1"
19
+ ruby-version: "4.0.1"
20
20
  bundler: none
21
21
  - name: Install dependencies
22
22
  run: |
@@ -26,6 +26,8 @@ jobs:
26
26
  run: |
27
27
  ruby -v
28
28
  gem update --system
29
+ - name: install erb
30
+ run: gem install erb
29
31
  - name: bin/setup
30
32
  run: |
31
33
  bin/setup
@@ -14,10 +14,10 @@ jobs:
14
14
  if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}
15
15
  steps:
16
16
  - name: Dependabot metadata
17
- uses: dependabot/fetch-metadata@08eff52bf64351f401fb50d4972fa95b9f2c2d1b # v2.4.0
17
+ uses: dependabot/fetch-metadata@21025c705c08248db411dc16f3619e6b5f9ea21a # v2.5.0
18
18
  id: metadata
19
19
  - name: Checkout repository
20
- uses: actions/checkout@v4
20
+ uses: actions/checkout@v6
21
21
  with:
22
22
  fetch-depth: 0
23
23
  - name: Abort if blocker files are changed
@@ -13,29 +13,31 @@ jobs:
13
13
  strategy:
14
14
  fail-fast: false
15
15
  matrix:
16
- ruby: ['3.1', '3.2', '3.3', '3.4', head]
16
+ ruby: ['3.2', '3.3', '3.4', '4.0', head]
17
17
  rubyopt: [""]
18
18
  job:
19
19
  - test
20
20
  include:
21
21
  - ruby: head
22
22
  job: stdlib_test rubocop
23
- - ruby: "3.4"
23
+ - ruby: "4.0"
24
24
  job: stdlib_test
25
- - ruby: "3.4"
25
+ - ruby: "4.0"
26
26
  job: test
27
27
  rubyopt: "--enable-frozen-string-literal"
28
- - ruby: "3.4"
28
+ - ruby: "4.0"
29
29
  job: stdlib_test
30
30
  rubyopt: "--enable-frozen-string-literal"
31
- - ruby: "3.4"
31
+ - ruby: "4.0"
32
32
  job: rubocop validate test_doc build test_generate_stdlib raap
33
- - ruby: "3.4"
33
+ - ruby: "4.0"
34
34
  job: typecheck_test
35
+ - ruby: asan-release
36
+ job: test
35
37
  env:
36
38
  RANDOMIZE_STDLIB_TEST_ORDER: "true"
37
39
  steps:
38
- - uses: actions/checkout@v4
40
+ - uses: actions/checkout@v6
39
41
  - uses: ruby/setup-ruby@v1
40
42
  with:
41
43
  ruby-version: ${{ matrix.ruby }}
@@ -50,11 +52,17 @@ jobs:
50
52
  run: |
51
53
  ruby -v
52
54
  gem update --system
55
+ - name: install erb
56
+ run: gem install erb
53
57
  - name: bundle config set with
54
58
  run: |
55
59
  echo "NO_MINITEST=true" >> $GITHUB_ENV
56
60
  bundle config set --local without 'minitest'
57
61
  if: ${{ contains(matrix.ruby, 'head') }}
62
+ - name: bundle config set force_ruby_platform true if head
63
+ if: ${{ contains(matrix.ruby, 'head') }}
64
+ run: |
65
+ bundle config set force_ruby_platform true
58
66
  - name: Skip installing type checkers
59
67
  if: ${{ ! contains(matrix.job, 'typecheck_test') }}
60
68
  run: |
@@ -62,41 +70,21 @@ jobs:
62
70
  - name: bin/setup
63
71
  run: |
64
72
  bin/setup
73
+ - name: Configure ASAN options
74
+ if: ${{ contains(matrix.ruby, 'asan') }}
75
+ run: |
76
+ echo "ASAN_OPTIONS=abort_on_error=1" >> $GITHUB_ENV
65
77
  - name: Run test
66
78
  run: |
67
79
  bundle exec rake ${{ matrix.job }}
68
- valgrind:
69
- runs-on: ubuntu-latest
70
- steps:
71
- - uses: actions/checkout@v4
72
- - uses: ruby/setup-ruby@v1
73
- with:
74
- ruby-version: "3.4"
75
- bundler-cache: none
76
- - name: Set working directory as safe
77
- run: git config --global --add safe.directory $(pwd)
78
- - name: Install dependencies
79
- run: |
80
- sudo apt-get update
81
- sudo apt-get install -y libdb-dev curl autoconf automake m4 libtool python3 valgrind
82
- - name: Update rubygems & bundler
83
- run: |
84
- ruby -v
85
- gem update --system
86
- - name: bin/setup
87
- run: |
88
- bin/setup
89
- - run: bundle exec rake test:valgrind
90
- env:
91
- RUBY_FREE_AT_EXIT: 1
92
80
  C99_compile:
93
81
  runs-on: macos-latest
94
82
  strategy:
95
83
  fail-fast: false
96
84
  matrix:
97
- ruby: ['3.4', head]
85
+ ruby: ['4.0', head]
98
86
  steps:
99
- - uses: actions/checkout@v4
87
+ - uses: actions/checkout@v6
100
88
  - name: Install dependencies
101
89
  run: |
102
90
  brew install ruby-build
@@ -110,10 +98,15 @@ jobs:
110
98
  run: |
111
99
  ruby -v
112
100
  gem update --system
101
+ - name: install erb
102
+ run: gem install erb
113
103
  - name: clang version
114
104
  run: clang --version
105
+ - name: bundle config set force_ruby_platform true if head
106
+ if: ${{ contains(matrix.ruby, 'head') }}
107
+ run: |
108
+ bundle config set force_ruby_platform true
115
109
  - name: bin/setup
116
110
  run: |
117
111
  bin/setup
118
112
  - run: bundle exec rake clean compile_c99
119
-
@@ -0,0 +1,95 @@
1
+ name: Rust
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request:
8
+ paths:
9
+ - ".github/workflows/rust.yml"
10
+ - "rust/**"
11
+ - "include/**"
12
+ - "src/**"
13
+
14
+ env:
15
+ RUSTFLAGS: "-D warnings"
16
+
17
+ jobs:
18
+ test:
19
+ name: cargo:test
20
+ runs-on: ${{ matrix.os }}
21
+ strategy:
22
+ fail-fast: false
23
+ matrix:
24
+ os: [ubuntu-latest, macos-latest, windows-latest]
25
+ steps:
26
+ - uses: actions/checkout@v6
27
+ - name: Install Rust tools
28
+ run: |
29
+ rustup update --no-self-update stable
30
+ rustup default stable
31
+ - uses: actions/cache@v5
32
+ with:
33
+ path: |
34
+ ~/.cargo/registry
35
+ ~/.cargo/git
36
+ rust/target
37
+ key: ${{ runner.os }}-cargo-${{ hashFiles('rust/Cargo.lock') }}
38
+ restore-keys: |
39
+ ${{ runner.os }}-cargo-
40
+ - name: Run tests
41
+ run: |
42
+ cd rust
43
+ cargo test --verbose
44
+
45
+ publish-dry-run:
46
+ name: cargo:publish-dry-run
47
+ runs-on: ubuntu-latest
48
+ continue-on-error: true
49
+ steps:
50
+ - uses: actions/checkout@v6
51
+ - name: Install Rust tools
52
+ run: |
53
+ rustup update --no-self-update stable
54
+ rustup default stable
55
+ - uses: actions/cache@v5
56
+ with:
57
+ path: |
58
+ ~/.cargo/registry
59
+ ~/.cargo/git
60
+ rust/target
61
+ key: ${{ runner.os }}-cargo-${{ hashFiles('rust/Cargo.lock') }}
62
+ restore-keys: |
63
+ ${{ runner.os }}-cargo-
64
+ - name: Test publish crates
65
+ run: |
66
+ cd rust
67
+ cargo publish --dry-run
68
+
69
+ lint:
70
+ name: cargo:lint
71
+ runs-on: ubuntu-latest
72
+ steps:
73
+ - uses: actions/checkout@v6
74
+ - name: Install Rust tools
75
+ run: |
76
+ rustup update --no-self-update stable
77
+ rustup default stable
78
+ rustup component add --toolchain stable clippy rustfmt
79
+ - uses: actions/cache@v5
80
+ with:
81
+ path: |
82
+ ~/.cargo/registry
83
+ ~/.cargo/git
84
+ rust/target
85
+ key: ${{ runner.os }}-cargo-${{ hashFiles('rust/Cargo.lock') }}
86
+ restore-keys: |
87
+ ${{ runner.os }}-cargo-
88
+ - name: Check formatting
89
+ run: |
90
+ cd rust
91
+ cargo fmt --check
92
+ - name: Run clippy
93
+ run: |
94
+ cd rust
95
+ cargo clippy
@@ -13,10 +13,10 @@ jobs:
13
13
  strategy:
14
14
  fail-fast: false
15
15
  steps:
16
- - uses: actions/checkout@v4
16
+ - uses: actions/checkout@v6
17
17
  - uses: ruby/setup-ruby@v1
18
18
  with:
19
- ruby-version: "3.3"
19
+ ruby-version: "3.4"
20
20
  bundler: none
21
21
  - name: Set working directory as safe
22
22
  run: git config --global --add safe.directory $(pwd)
@@ -13,9 +13,9 @@ jobs:
13
13
  strategy:
14
14
  fail-fast: false
15
15
  matrix:
16
- ruby: ['3.2', '3.3', ucrt, mswin]
16
+ ruby: ['3.4', ucrt, mswin]
17
17
  steps:
18
- - uses: actions/checkout@v4
18
+ - uses: actions/checkout@v6
19
19
  - name: load ruby
20
20
  uses: ruby/setup-ruby@v1
21
21
  with:
data/.rubocop.yml CHANGED
@@ -3,7 +3,7 @@ plugins:
3
3
  - rubocop-on-rbs
4
4
 
5
5
  AllCops:
6
- TargetRubyVersion: 3.1
6
+ TargetRubyVersion: 3.4
7
7
  DisabledByDefault: true
8
8
  Exclude:
9
9
  - 'vendor/bundle/**/*'