rbs 4.0.0.dev.4 → 4.1.0.pre.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.clang-format +1 -0
- data/.github/dependabot.yml +16 -14
- data/.github/workflows/bundle-update.yml +63 -0
- data/.github/workflows/c-check.yml +21 -11
- data/.github/workflows/comments.yml +5 -3
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/jruby.yml +67 -0
- data/.github/workflows/milestone.yml +83 -0
- data/.github/workflows/ruby.yml +63 -24
- data/.github/workflows/rust.yml +184 -0
- data/.github/workflows/truffleruby.yml +54 -0
- data/.github/workflows/typecheck.yml +5 -2
- data/.github/workflows/wasm.yml +53 -0
- data/.github/workflows/windows.yml +8 -2
- data/.gitignore +11 -0
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +357 -0
- data/README.md +4 -4
- data/Rakefile +365 -33
- data/Steepfile +8 -0
- data/config.yml +450 -24
- data/core/array.rbs +443 -363
- data/core/basic_object.rbs +9 -8
- data/core/binding.rbs +0 -2
- data/core/builtin.rbs +9 -8
- data/core/class.rbs +11 -8
- data/core/comparable.rbs +55 -34
- data/core/complex.rbs +104 -78
- data/core/dir.rbs +61 -49
- data/core/encoding.rbs +12 -15
- data/core/enumerable.rbs +288 -196
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator/product.rbs +5 -5
- data/core/enumerator.rbs +91 -28
- data/core/errno.rbs +11 -2
- data/core/errors.rbs +58 -29
- data/core/exception.rbs +13 -13
- data/core/fiber.rbs +74 -54
- data/core/file.rbs +260 -1151
- data/core/file_constants.rbs +463 -0
- data/core/file_stat.rbs +534 -0
- data/core/file_test.rbs +3 -3
- data/core/float.rbs +257 -92
- data/core/gc.rbs +425 -281
- data/core/hash.rbs +1151 -829
- data/core/integer.rbs +156 -195
- data/core/io/buffer.rbs +53 -42
- data/core/io/wait.rbs +13 -35
- data/core/io.rbs +216 -150
- data/core/kernel.rbs +239 -163
- data/core/marshal.rbs +4 -4
- data/core/match_data.rbs +15 -13
- data/core/math.rbs +107 -66
- data/core/method.rbs +69 -33
- data/core/module.rbs +302 -150
- data/core/nil_class.rbs +7 -6
- data/core/numeric.rbs +77 -63
- data/core/object.rbs +9 -11
- data/core/object_space/weak_key_map.rbs +7 -7
- data/core/object_space.rbs +30 -23
- data/core/pathname.rbs +1322 -0
- data/core/proc.rbs +95 -58
- data/core/process.rbs +222 -202
- data/core/ractor.rbs +371 -515
- data/core/random.rbs +21 -3
- data/core/range.rbs +181 -79
- data/core/rational.rbs +60 -89
- data/core/rbs/ops.rbs +154 -0
- data/core/rbs/unnamed/argf.rbs +63 -56
- data/core/rbs/unnamed/env_class.rbs +19 -14
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +11 -118
- data/core/regexp.rbs +258 -214
- data/core/ruby.rbs +53 -0
- data/core/ruby_vm.rbs +78 -34
- data/core/rubygems/config_file.rbs +5 -5
- data/core/rubygems/errors.rbs +4 -71
- data/core/rubygems/requirement.rbs +5 -5
- data/core/rubygems/rubygems.rbs +16 -82
- data/core/rubygems/version.rbs +2 -3
- data/core/set.rbs +493 -363
- data/core/signal.rbs +26 -16
- data/core/string.rbs +3234 -1285
- data/core/struct.rbs +43 -42
- data/core/symbol.rbs +41 -34
- data/core/thread.rbs +141 -73
- data/core/time.rbs +81 -50
- data/core/trace_point.rbs +41 -35
- data/core/true_class.rbs +2 -2
- data/core/unbound_method.rbs +24 -16
- data/core/warning.rbs +7 -7
- data/docs/CONTRIBUTING.md +2 -1
- data/docs/aliases.md +79 -0
- data/docs/collection.md +3 -3
- data/docs/config.md +171 -0
- data/docs/encoding.md +56 -0
- data/docs/gem.md +0 -1
- data/docs/inline.md +634 -0
- data/docs/rbs_by_example.md +20 -20
- data/docs/rust.md +96 -0
- data/docs/sigs.md +3 -3
- data/docs/syntax.md +48 -18
- data/docs/type_fingerprint.md +21 -0
- data/docs/wasm_serialization.md +80 -0
- data/exe/rbs +1 -1
- data/ext/rbs_extension/ast_translation.c +1441 -671
- data/ext/rbs_extension/ast_translation.h +7 -0
- data/ext/rbs_extension/class_constants.c +18 -2
- data/ext/rbs_extension/class_constants.h +9 -0
- data/ext/rbs_extension/extconf.rb +6 -1
- data/ext/rbs_extension/legacy_location.c +33 -56
- data/ext/rbs_extension/legacy_location.h +37 -0
- data/ext/rbs_extension/main.c +183 -39
- data/include/rbs/ast.h +597 -297
- data/include/rbs/defines.h +40 -0
- data/include/rbs/lexer.h +31 -11
- data/include/rbs/location.h +25 -44
- data/include/rbs/parser.h +6 -6
- data/include/rbs/serialize.h +39 -0
- data/include/rbs/string.h +0 -2
- data/include/rbs/util/rbs_allocator.h +34 -13
- data/include/rbs/util/rbs_assert.h +12 -1
- data/include/rbs/util/rbs_constant_pool.h +0 -3
- data/include/rbs/util/rbs_encoding.h +2 -0
- data/include/rbs/util/rbs_unescape.h +2 -1
- data/include/rbs.h +8 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +27 -31
- data/lib/rbs/ast/annotation.rb +1 -1
- data/lib/rbs/ast/comment.rb +1 -1
- data/lib/rbs/ast/declarations.rb +10 -10
- data/lib/rbs/ast/members.rb +14 -14
- data/lib/rbs/ast/ruby/annotations.rb +335 -3
- data/lib/rbs/ast/ruby/comment_block.rb +30 -4
- data/lib/rbs/ast/ruby/declarations.rb +209 -4
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +1 -1
- data/lib/rbs/ast/ruby/members.rb +571 -22
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +66 -24
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +38 -106
- data/lib/rbs/cli.rb +55 -24
- data/lib/rbs/collection/config/lockfile_generator.rb +28 -3
- data/lib/rbs/collection/sources/git.rb +7 -0
- data/lib/rbs/definition.rb +1 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
- data/lib/rbs/definition_builder/method_builder.rb +32 -6
- data/lib/rbs/definition_builder.rb +147 -25
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment.rb +235 -75
- data/lib/rbs/environment_loader.rb +0 -6
- data/lib/rbs/errors.rb +27 -18
- data/lib/rbs/inline_parser.rb +377 -15
- data/lib/rbs/location_aux.rb +1 -1
- data/lib/rbs/locator.rb +5 -1
- data/lib/rbs/method_type.rb +5 -3
- data/lib/rbs/namespace.rb +47 -11
- data/lib/rbs/parser_aux.rb +20 -7
- data/lib/rbs/prototype/helpers.rb +57 -0
- data/lib/rbs/prototype/rb.rb +3 -28
- data/lib/rbs/prototype/rbi.rb +3 -20
- data/lib/rbs/prototype/runtime.rb +10 -0
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +120 -44
- data/lib/rbs/rewriter.rb +70 -0
- data/lib/rbs/subtractor.rb +3 -1
- data/lib/rbs/test/type_check.rb +25 -3
- data/lib/rbs/type_name.rb +34 -14
- data/lib/rbs/types.rb +88 -78
- data/lib/rbs/unit_test/type_assertions.rb +44 -8
- data/lib/rbs/validator.rb +2 -2
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/wasm/deserializer.rb +213 -0
- data/lib/rbs/wasm/location.rb +61 -0
- data/lib/rbs/wasm/parser.rb +137 -0
- data/lib/rbs/wasm/runtime.rb +217 -0
- data/lib/rbs/wasm/serialization_schema.rb +110 -0
- data/lib/rbs.rb +13 -2
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +1 -1
- data/rbs.gemspec +24 -6
- data/schema/typeParam.json +17 -1
- data/sig/annotate/rdoc_annotater.rbs +12 -9
- data/sig/ast/ruby/annotations.rbs +364 -4
- data/sig/ast/ruby/comment_block.rbs +8 -0
- data/sig/ast/ruby/declarations.rbs +102 -4
- data/sig/ast/ruby/members.rbs +128 -2
- data/sig/buffer.rbs +19 -1
- data/sig/cli/diff.rbs +5 -11
- data/sig/cli/validate.rbs +12 -8
- data/sig/cli.rbs +18 -18
- data/sig/collection/config/lockfile_generator.rbs +2 -0
- data/sig/definition.rbs +6 -1
- data/sig/definition_builder.rbs +2 -0
- data/sig/environment.rbs +70 -12
- data/sig/errors.rbs +13 -14
- data/sig/inline_parser.rbs +41 -2
- data/sig/locator.rbs +0 -2
- data/sig/manifest.yaml +0 -2
- data/sig/method_builder.rbs +3 -1
- data/sig/namespace.rbs +20 -0
- data/sig/parser.rbs +41 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/resolver/type_name_resolver.rbs +36 -10
- data/sig/rewriter.rbs +45 -0
- data/sig/source.rbs +3 -3
- data/sig/type_param.rbs +13 -8
- data/sig/typename.rbs +15 -0
- data/sig/types.rbs +6 -7
- data/sig/unit_test/spy.rbs +0 -8
- data/sig/unit_test/type_assertions.rbs +15 -0
- data/sig/wasm/deserializer.rbs +66 -0
- data/sig/wasm/serialization_schema.rbs +13 -0
- data/src/ast.c +443 -162
- data/src/lexer.c +1415 -1313
- data/src/lexer.re +4 -0
- data/src/lexstate.c +63 -37
- data/src/location.c +7 -47
- data/src/parser.c +1032 -521
- data/src/serialize.c +958 -0
- data/src/string.c +0 -48
- data/src/util/rbs_allocator.c +89 -74
- data/src/util/rbs_assert.c +1 -1
- data/src/util/rbs_buffer.c +2 -2
- data/src/util/rbs_constant_pool.c +10 -14
- data/src/util/rbs_encoding.c +4 -8
- data/src/util/rbs_unescape.c +56 -20
- data/stdlib/abbrev/0/array.rbs +1 -1
- data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
- data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
- data/stdlib/cgi/0/core.rbs +9 -393
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/cgi-escape/0/escape.rbs +171 -0
- data/stdlib/coverage/0/coverage.rbs +7 -4
- data/stdlib/csv/0/csv.rbs +5 -5
- data/stdlib/date/0/date.rbs +92 -79
- data/stdlib/date/0/date_time.rbs +25 -24
- data/stdlib/delegate/0/delegator.rbs +10 -7
- data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
- data/stdlib/digest/0/digest.rbs +111 -1
- data/stdlib/erb/0/erb.rbs +748 -347
- data/stdlib/etc/0/etc.rbs +73 -54
- data/stdlib/fileutils/0/fileutils.rbs +179 -160
- data/stdlib/forwardable/0/forwardable.rbs +13 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/json/0/json.rbs +223 -142
- data/stdlib/monitor/0/monitor.rbs +3 -3
- data/stdlib/net-http/0/net-http.rbs +162 -134
- data/stdlib/objspace/0/objspace.rbs +17 -34
- data/stdlib/open-uri/0/open-uri.rbs +48 -8
- data/stdlib/open3/0/open3.rbs +469 -10
- data/stdlib/openssl/0/openssl.rbs +482 -364
- data/stdlib/optparse/0/optparse.rbs +26 -17
- data/stdlib/pathname/0/pathname.rbs +11 -1381
- data/stdlib/pp/0/pp.rbs +9 -8
- data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
- data/stdlib/pstore/0/pstore.rbs +35 -30
- data/stdlib/psych/0/psych.rbs +65 -12
- data/stdlib/psych/0/store.rbs +2 -4
- data/stdlib/pty/0/pty.rbs +9 -6
- data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
- data/stdlib/rdoc/0/code_object.rbs +2 -1
- data/stdlib/rdoc/0/parser.rbs +1 -1
- data/stdlib/rdoc/0/rdoc.rbs +1 -1
- data/stdlib/rdoc/0/store.rbs +1 -1
- data/stdlib/resolv/0/resolv.rbs +26 -69
- data/stdlib/ripper/0/ripper.rbs +22 -19
- data/stdlib/securerandom/0/manifest.yaml +2 -0
- data/stdlib/securerandom/0/securerandom.rbs +7 -20
- data/stdlib/shellwords/0/shellwords.rbs +3 -3
- data/stdlib/singleton/0/singleton.rbs +3 -0
- data/stdlib/socket/0/addrinfo.rbs +7 -7
- data/stdlib/socket/0/basic_socket.rbs +3 -3
- data/stdlib/socket/0/ip_socket.rbs +10 -8
- data/stdlib/socket/0/socket.rbs +23 -10
- data/stdlib/socket/0/tcp_server.rbs +1 -1
- data/stdlib/socket/0/tcp_socket.rbs +11 -3
- data/stdlib/socket/0/udp_socket.rbs +1 -1
- data/stdlib/socket/0/unix_server.rbs +1 -1
- data/stdlib/stringio/0/stringio.rbs +1209 -95
- data/stdlib/strscan/0/string_scanner.rbs +101 -80
- data/stdlib/tempfile/0/tempfile.rbs +25 -21
- data/stdlib/time/0/time.rbs +8 -6
- data/stdlib/timeout/0/timeout.rbs +63 -7
- data/stdlib/tsort/0/cyclic.rbs +4 -1
- data/stdlib/tsort/0/interfaces.rbs +8 -8
- data/stdlib/tsort/0/tsort.rbs +16 -15
- data/stdlib/uri/0/common.rbs +42 -20
- data/stdlib/uri/0/file.rbs +3 -3
- data/stdlib/uri/0/generic.rbs +26 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/ldap.rbs +2 -2
- data/stdlib/uri/0/mailto.rbs +3 -3
- data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
- data/stdlib/zlib/0/deflate.rbs +4 -3
- data/stdlib/zlib/0/gzip_reader.rbs +8 -8
- data/stdlib/zlib/0/gzip_writer.rbs +14 -12
- data/stdlib/zlib/0/inflate.rbs +1 -1
- data/stdlib/zlib/0/need_dict.rbs +1 -1
- data/stdlib/zlib/0/zstream.rbs +1 -0
- data/wasm/README.md +59 -0
- data/wasm/rbs_wasm.c +411 -0
- metadata +56 -8
- data/.vscode/extensions.json +0 -5
- data/.vscode/settings.json +0 -19
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 125952c7d052ff2adaa683375a5e5079c4019f43ea9bc86546a4efd9eed2ed0e
|
|
4
|
+
data.tar.gz: 8df793a9e6419ec7d4d137fec60811e0eadc68e8ebe6359a149cad43deb26f6e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 254fc00d7c4bf3910796b4af6b573cf0be978b68a1db193a703a90e44e18df53b7399611d8acd40bff853e2c21fffd83468815fa24f71bdb36255b5cf164907a
|
|
7
|
+
data.tar.gz: 0b4bf3195dede912a3eee97ea770e9c99b907eea6e7e28b5492818ee64d6128dc9d0262bab70d127c2e946a3f7f77536fa4a3fa884ea576f746231abcbfd9458
|
data/.clang-format
CHANGED
data/.github/dependabot.yml
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
version: 2
|
|
2
2
|
updates:
|
|
3
|
-
- package-ecosystem: bundler
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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: '/'
|
|
21
21
|
schedule:
|
|
22
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@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 }}" \
|
|
61
|
+
--label "no-milestone"
|
|
62
|
+
|
|
63
|
+
gh pr merge --auto --merge "$(git rev-parse --abbrev-ref HEAD)"
|
|
@@ -2,17 +2,22 @@ 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
|
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
8
13
|
jobs:
|
|
9
14
|
format-check:
|
|
10
15
|
runs-on: ubuntu-latest
|
|
11
16
|
steps:
|
|
12
|
-
- uses: actions/checkout@
|
|
17
|
+
- uses: actions/checkout@v6
|
|
13
18
|
- uses: ruby/setup-ruby@v1
|
|
14
19
|
with:
|
|
15
|
-
ruby-version: "
|
|
20
|
+
ruby-version: "4.0"
|
|
16
21
|
bundler-cache: none
|
|
17
22
|
- name: Set working directory as safe
|
|
18
23
|
run: git config --global --add safe.directory $(pwd)
|
|
@@ -23,24 +28,29 @@ jobs:
|
|
|
23
28
|
- name: Install clang-format from LLVM
|
|
24
29
|
run: |
|
|
25
30
|
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"
|
|
31
|
+
sudo apt-add-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main"
|
|
27
32
|
sudo apt-get update
|
|
28
|
-
sudo apt-get install -y clang-format
|
|
33
|
+
sudo apt-get install -y clang-format-20
|
|
34
|
+
sudo ln -sf /usr/bin/clang-format-20 /usr/local/bin/clang-format
|
|
29
35
|
clang-format --version
|
|
36
|
+
- name: Count processors
|
|
37
|
+
run: nproc
|
|
30
38
|
- name: Install Re2c
|
|
31
39
|
run: |
|
|
32
40
|
cd /tmp
|
|
33
|
-
curl -L https://github.com/skvadrik/re2c/archive/refs/tags/3.
|
|
34
|
-
tar xf re2c-3.
|
|
35
|
-
cd re2c-3
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
curl -L https://github.com/skvadrik/re2c/archive/refs/tags/4.3.tar.gz > re2c-4.3.tar.gz
|
|
42
|
+
tar xf re2c-4.3.tar.gz
|
|
43
|
+
cd re2c-4.3
|
|
44
|
+
cmake --preset=linux-gcc-release-ootree-skeleton-fast
|
|
45
|
+
cmake --build --preset=linux-gcc-release-ootree-skeleton-fast --parallel="$(nproc)"
|
|
46
|
+
sudo ln -sf "$(pwd)"/.build/linux-gcc-release-ootree-skeleton-fast/re2c /usr/local/bin/re2c
|
|
47
|
+
re2c --version
|
|
40
48
|
- name: Update rubygems & bundler
|
|
41
49
|
run: |
|
|
42
50
|
ruby -v
|
|
43
51
|
gem update --system
|
|
52
|
+
- name: install erb
|
|
53
|
+
run: gem install erb
|
|
44
54
|
- name: bin/setup
|
|
45
55
|
run: |
|
|
46
56
|
bin/setup
|
|
@@ -11,12 +11,12 @@ jobs:
|
|
|
11
11
|
comments:
|
|
12
12
|
runs-on: "ubuntu-latest"
|
|
13
13
|
# env:
|
|
14
|
-
# RUBY_COMMIT:
|
|
14
|
+
# RUBY_COMMIT: v4.0.0-preview2
|
|
15
15
|
steps:
|
|
16
|
-
- uses: actions/checkout@
|
|
16
|
+
- uses: actions/checkout@v6
|
|
17
17
|
- uses: ruby/setup-ruby@v1
|
|
18
18
|
with:
|
|
19
|
-
ruby-version: "
|
|
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@
|
|
17
|
+
uses: dependabot/fetch-metadata@25dd0e34f4fe68f24cc83900b1fe3fe149efef98 # v3.1.0
|
|
18
18
|
id: metadata
|
|
19
19
|
- name: Checkout repository
|
|
20
|
-
uses: actions/checkout@
|
|
20
|
+
uses: actions/checkout@v6
|
|
21
21
|
with:
|
|
22
22
|
fetch-depth: 0
|
|
23
23
|
- name: Abort if blocker files are changed
|
|
@@ -0,0 +1,67 @@
|
|
|
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
|
+
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
|
|
24
|
+
env:
|
|
25
|
+
# Keep in sync with .github/workflows/wasm.yml.
|
|
26
|
+
WASI_SDK_VERSION: "33"
|
|
27
|
+
WASI_SDK_RELEASE: "33.0"
|
|
28
|
+
|
|
29
|
+
jobs:
|
|
30
|
+
test:
|
|
31
|
+
name: jruby
|
|
32
|
+
runs-on: ubuntu-latest
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@v6
|
|
35
|
+
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
|
|
36
|
+
|
|
37
|
+
# Build the .wasm and fetch the Chicory jars with CRuby + the WASI SDK,
|
|
38
|
+
# then run RBS itself on JRuby against those artifacts.
|
|
39
|
+
- name: Set up Ruby (to assemble the WebAssembly runtime)
|
|
40
|
+
uses: ruby/setup-ruby@v1
|
|
41
|
+
with:
|
|
42
|
+
ruby-version: ruby
|
|
43
|
+
bundler: none
|
|
44
|
+
- name: Update rubygems & bundler
|
|
45
|
+
run: gem update --system
|
|
46
|
+
- name: Install gems
|
|
47
|
+
run: |
|
|
48
|
+
bundle config set --local without libs:profilers
|
|
49
|
+
bundle install --jobs 4 --retry 3
|
|
50
|
+
- name: Install the WASI SDK
|
|
51
|
+
run: |
|
|
52
|
+
url="https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_RELEASE}-x86_64-linux.tar.gz"
|
|
53
|
+
mkdir -p "$HOME/wasi-sdk"
|
|
54
|
+
curl -sSL "$url" | tar xz --strip-components=1 -C "$HOME/wasi-sdk"
|
|
55
|
+
echo "WASI_SDK_PATH=$HOME/wasi-sdk" >> "$GITHUB_ENV"
|
|
56
|
+
- name: Assemble the JRuby runtime (rbs_parser.wasm + Chicory jars)
|
|
57
|
+
run: bundle exec rake wasm:jruby_setup
|
|
58
|
+
|
|
59
|
+
- name: Set up JRuby
|
|
60
|
+
uses: ruby/setup-ruby@v1
|
|
61
|
+
with:
|
|
62
|
+
ruby-version: jruby
|
|
63
|
+
bundler: none
|
|
64
|
+
- name: Install runtime and test gems
|
|
65
|
+
run: gem install prism rake rake-compiler test-unit rdoc rspec minitest json-schema pry --no-document
|
|
66
|
+
- name: Run the test suite on JRuby
|
|
67
|
+
run: jruby -S rake test
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
name: Check milestone
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
types: [opened, edited, labeled, unlabeled, milestoned, demilestoned, synchronize]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
check:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v6
|
|
16
|
+
|
|
17
|
+
- name: Extract RBS::Version
|
|
18
|
+
id: version
|
|
19
|
+
run: |
|
|
20
|
+
# Extract version string from lib/rbs/version.rb
|
|
21
|
+
version=$(ruby -e 'load "lib/rbs/version.rb"; print RBS::VERSION')
|
|
22
|
+
echo "version=$version" >> "$GITHUB_OUTPUT"
|
|
23
|
+
|
|
24
|
+
# Parse major.minor.patch
|
|
25
|
+
IFS='.' read -r major minor patch _rest <<< "$version"
|
|
26
|
+
echo "major=$major" >> "$GITHUB_OUTPUT"
|
|
27
|
+
echo "minor=$minor" >> "$GITHUB_OUTPUT"
|
|
28
|
+
echo "patch=$patch" >> "$GITHUB_OUTPUT"
|
|
29
|
+
|
|
30
|
+
echo "RBS::VERSION = $version (major=$major, minor=$minor, patch=$patch)"
|
|
31
|
+
|
|
32
|
+
- name: Check milestone
|
|
33
|
+
uses: actions/github-script@v9
|
|
34
|
+
with:
|
|
35
|
+
script: |
|
|
36
|
+
const pr = context.payload.pull_request;
|
|
37
|
+
const milestone = pr.milestone;
|
|
38
|
+
const labels = pr.labels.map(l => l.name);
|
|
39
|
+
|
|
40
|
+
const version = '${{ steps.version.outputs.version }}';
|
|
41
|
+
const major = '${{ steps.version.outputs.major }}';
|
|
42
|
+
const minor = '${{ steps.version.outputs.minor }}';
|
|
43
|
+
const patch = parseInt('${{ steps.version.outputs.patch }}', 10);
|
|
44
|
+
|
|
45
|
+
if (!milestone) {
|
|
46
|
+
if (labels.includes('no-milestone')) {
|
|
47
|
+
core.info('No milestone set, but no-milestone label is present — OK');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
core.setFailed(
|
|
51
|
+
'No milestone set. Add a milestone or add the "no-milestone" label.'
|
|
52
|
+
);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (labels.includes('no-milestone')) {
|
|
57
|
+
core.setFailed(
|
|
58
|
+
'Milestone is set but "no-milestone" label is present. Remove the label or the milestone.'
|
|
59
|
+
);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const milestoneName = milestone.title;
|
|
64
|
+
core.info(`Milestone: "${milestoneName}", RBS::VERSION: ${version}`);
|
|
65
|
+
|
|
66
|
+
// Expected milestone based on version:
|
|
67
|
+
// patch == 0 → "RBS major.minor" (e.g. "RBS 4.0")
|
|
68
|
+
// patch >= 1 → "RBS major.minor.x" (e.g. "RBS 4.0.x")
|
|
69
|
+
let expectedMilestone;
|
|
70
|
+
if (patch === 0) {
|
|
71
|
+
expectedMilestone = `RBS ${major}.${minor}`;
|
|
72
|
+
} else {
|
|
73
|
+
expectedMilestone = `RBS ${major}.${minor}.x`;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (milestoneName !== expectedMilestone) {
|
|
77
|
+
core.setFailed(
|
|
78
|
+
`Milestone "${milestoneName}" does not match RBS::VERSION ${version}. ` +
|
|
79
|
+
`Expected milestone: "${expectedMilestone}"`
|
|
80
|
+
);
|
|
81
|
+
} else {
|
|
82
|
+
core.info(`Milestone "${milestoneName}" matches RBS::VERSION ${version}`);
|
|
83
|
+
}
|
data/.github/workflows/ruby.yml
CHANGED
|
@@ -7,35 +7,40 @@ on:
|
|
|
7
7
|
pull_request: {}
|
|
8
8
|
merge_group: {}
|
|
9
9
|
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
10
13
|
jobs:
|
|
11
14
|
test:
|
|
12
15
|
runs-on: "ubuntu-latest"
|
|
13
16
|
strategy:
|
|
14
17
|
fail-fast: false
|
|
15
18
|
matrix:
|
|
16
|
-
ruby: ['3.
|
|
19
|
+
ruby: ['3.2', '3.3', '3.4', '4.0', head]
|
|
17
20
|
rubyopt: [""]
|
|
18
21
|
job:
|
|
19
22
|
- test
|
|
20
23
|
include:
|
|
21
24
|
- ruby: head
|
|
22
25
|
job: stdlib_test rubocop
|
|
23
|
-
- ruby: "
|
|
26
|
+
- ruby: "4.0"
|
|
24
27
|
job: stdlib_test
|
|
25
|
-
- ruby: "
|
|
28
|
+
- ruby: "4.0"
|
|
26
29
|
job: test
|
|
27
30
|
rubyopt: "--enable-frozen-string-literal"
|
|
28
|
-
- ruby: "
|
|
31
|
+
- ruby: "4.0"
|
|
29
32
|
job: stdlib_test
|
|
30
33
|
rubyopt: "--enable-frozen-string-literal"
|
|
31
|
-
- ruby: "
|
|
34
|
+
- ruby: "4.0"
|
|
32
35
|
job: rubocop validate test_doc build test_generate_stdlib raap
|
|
33
|
-
- ruby: "
|
|
36
|
+
- ruby: "4.0"
|
|
34
37
|
job: typecheck_test
|
|
38
|
+
- ruby: asan-release
|
|
39
|
+
job: test
|
|
35
40
|
env:
|
|
36
41
|
RANDOMIZE_STDLIB_TEST_ORDER: "true"
|
|
37
42
|
steps:
|
|
38
|
-
- uses: actions/checkout@
|
|
43
|
+
- uses: actions/checkout@v6
|
|
39
44
|
- uses: ruby/setup-ruby@v1
|
|
40
45
|
with:
|
|
41
46
|
ruby-version: ${{ matrix.ruby }}
|
|
@@ -50,11 +55,20 @@ jobs:
|
|
|
50
55
|
run: |
|
|
51
56
|
ruby -v
|
|
52
57
|
gem update --system
|
|
58
|
+
- name: install erb
|
|
59
|
+
run: gem install erb
|
|
53
60
|
- name: bundle config set with
|
|
54
61
|
run: |
|
|
55
62
|
echo "NO_MINITEST=true" >> $GITHUB_ENV
|
|
56
63
|
bundle config set --local without 'minitest'
|
|
57
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
|
|
58
72
|
- name: Skip installing type checkers
|
|
59
73
|
if: ${{ ! contains(matrix.job, 'typecheck_test') }}
|
|
60
74
|
run: |
|
|
@@ -62,41 +76,58 @@ jobs:
|
|
|
62
76
|
- name: bin/setup
|
|
63
77
|
run: |
|
|
64
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
|
|
65
83
|
- name: Run test
|
|
66
84
|
run: |
|
|
67
85
|
bundle exec rake ${{ matrix.job }}
|
|
68
|
-
|
|
69
|
-
runs-on:
|
|
86
|
+
C99_compile:
|
|
87
|
+
runs-on: macos-latest
|
|
88
|
+
strategy:
|
|
89
|
+
fail-fast: false
|
|
90
|
+
matrix:
|
|
91
|
+
ruby: ['4.0', head]
|
|
70
92
|
steps:
|
|
71
|
-
- uses: actions/checkout@
|
|
93
|
+
- uses: actions/checkout@v6
|
|
94
|
+
- name: Install dependencies
|
|
95
|
+
run: |
|
|
96
|
+
brew install ruby-build
|
|
72
97
|
- uses: ruby/setup-ruby@v1
|
|
73
98
|
with:
|
|
74
|
-
ruby-version:
|
|
75
|
-
bundler
|
|
99
|
+
ruby-version: ${{ matrix.ruby }}
|
|
100
|
+
bundler: none
|
|
76
101
|
- name: Set working directory as safe
|
|
77
102
|
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
103
|
- name: Update rubygems & bundler
|
|
83
104
|
run: |
|
|
84
105
|
ruby -v
|
|
85
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
|
|
86
118
|
- name: bin/setup
|
|
87
119
|
run: |
|
|
88
120
|
bin/setup
|
|
89
|
-
- run: bundle exec rake
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
C99_compile:
|
|
121
|
+
- run: bundle exec rake clean compile_c99
|
|
122
|
+
|
|
123
|
+
clang_compile:
|
|
93
124
|
runs-on: macos-latest
|
|
94
125
|
strategy:
|
|
95
126
|
fail-fast: false
|
|
96
127
|
matrix:
|
|
97
|
-
ruby: ['
|
|
128
|
+
ruby: ['4.0', head]
|
|
98
129
|
steps:
|
|
99
|
-
- uses: actions/checkout@
|
|
130
|
+
- uses: actions/checkout@v6
|
|
100
131
|
- name: Install dependencies
|
|
101
132
|
run: |
|
|
102
133
|
brew install ruby-build
|
|
@@ -110,10 +141,18 @@ jobs:
|
|
|
110
141
|
run: |
|
|
111
142
|
ruby -v
|
|
112
143
|
gem update --system
|
|
144
|
+
- name: install erb
|
|
145
|
+
run: gem install erb
|
|
113
146
|
- name: clang version
|
|
114
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
|
|
115
155
|
- name: bin/setup
|
|
116
156
|
run: |
|
|
117
157
|
bin/setup
|
|
118
|
-
- run: bundle exec rake clean
|
|
119
|
-
|
|
158
|
+
- run: bundle exec rake clean compile
|