From bb0fabdeb9779f2d12720c914f9bb4c5dfd03480 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Sat, 11 Jul 2026 06:58:56 +0900 Subject: [PATCH 1/9] mkmf: warn when nmake will not handle spaces in paths String#unspace escapes whitespace with a backslash, which is a GNU make convention that nmake does not interpret, and nmake cannot express a directory containing spaces in `{dir}` inference paths in any form. Building an extension from such a path silently generates object rules that never fire. Warn at Makefile creation time instead of failing later with a confusing link error. --- lib/mkmf.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 50b348d2f97ab3..2fbb9e4f9fd683 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -2082,6 +2082,9 @@ def configuration(srcdir) verbose = with_config('verbose') ? "1" : (CONFIG['MKMF_VERBOSE'] || "0") vpath = $VPATH.dup CONFIG["hdrdir"] ||= $hdrdir + if $mswin and dir = [CONFIG["srcdir"], $extmk ? CONFIG["topdir"] : $topdir, CONFIG["hdrdir"], $arch_hdrdir].compact.find {|d| /\s/ =~ d.to_s} + warn "mkmf: nmake cannot handle spaces in paths: #{dir}" + end mk << %{ SHELL = /bin/sh From 513366cd7b2816495e6f9ecf3744b6f1e4ff815c Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 27 Jul 2026 15:05:47 +0900 Subject: [PATCH 2/9] Remove redundant to_s --- lib/mkmf.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 2fbb9e4f9fd683..40ae9d20b81680 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -2082,7 +2082,7 @@ def configuration(srcdir) verbose = with_config('verbose') ? "1" : (CONFIG['MKMF_VERBOSE'] || "0") vpath = $VPATH.dup CONFIG["hdrdir"] ||= $hdrdir - if $mswin and dir = [CONFIG["srcdir"], $extmk ? CONFIG["topdir"] : $topdir, CONFIG["hdrdir"], $arch_hdrdir].compact.find {|d| /\s/ =~ d.to_s} + if $mswin and dir = [CONFIG["srcdir"], $extmk ? CONFIG["topdir"] : $topdir, CONFIG["hdrdir"], $arch_hdrdir].compact.find {|d| /\s/ =~ d} warn "mkmf: nmake cannot handle spaces in paths: #{dir}" end mk << %{ From f8eb1fcd801527c2012d4e07fa46ee1311d71dd7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2026 02:10:58 +0000 Subject: [PATCH 3/9] Bump the github-actions group across 1 directory with 9 updates Bumps the github-actions group with 9 updates in the / directory: | Package | From | To | | --- | --- | --- | | [ruby/setup-ruby](https://github.com/ruby/setup-ruby) | `1.319.0` | `1.321.0` | | [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) | `0.6.0` | `0.6.1` | | [github/codeql-action/init](https://github.com/github/codeql-action) | `4.37.1` | `4.37.3` | | [github/codeql-action/analyze](https://github.com/github/codeql-action) | `4.37.1` | `4.37.3` | | [github/codeql-action/upload-sarif](https://github.com/github/codeql-action) | `4.37.1` | `4.37.3` | | [lewagon/wait-on-check-action](https://github.com/lewagon/wait-on-check-action) | `1.8.1` | `1.9.0` | | [actions/labeler](https://github.com/actions/labeler) | `6.2.0` | `7.0.0` | | [ossf/scorecard-action](https://github.com/ossf/scorecard-action) | `2.4.3` | `2.4.4` | | [taiki-e/install-action](https://github.com/taiki-e/install-action) | `2.84.0` | `2.85.2` | Updates `ruby/setup-ruby` from 1.319.0 to 1.321.0 - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](https://github.com/ruby/setup-ruby/compare/003a5c4d8d6321bd302e38f6f0ec593f77f06600...95ef2b042f9d7a56d8268cba8559e2842e2ad01b) Updates `zizmorcore/zizmor-action` from 0.6.0 to 0.6.1 - [Release notes](https://github.com/zizmorcore/zizmor-action/releases) - [Commits](https://github.com/zizmorcore/zizmor-action/compare/6599ee8b7a49aef6a770f63d261d214911a7ce02...6fc4b006235f201fdab3722e17240ab420d580e5) Updates `github/codeql-action/init` from 4.37.1 to 4.37.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/7188fc363630916deb702c7fdcf4e481b751f97a...e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81) Updates `github/codeql-action/analyze` from 4.37.1 to 4.37.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/7188fc363630916deb702c7fdcf4e481b751f97a...e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81) Updates `github/codeql-action/upload-sarif` from 4.37.1 to 4.37.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/7188fc363630916deb702c7fdcf4e481b751f97a...e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81) Updates `lewagon/wait-on-check-action` from 1.8.1 to 1.9.0 - [Release notes](https://github.com/lewagon/wait-on-check-action/releases) - [Changelog](https://github.com/lewagon/wait-on-check-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/lewagon/wait-on-check-action/compare/1d57e2c51a58d812d2765e036a028b6bdb5a6154...2271c86c146b96545b4e871b855e10ffa6f50773) Updates `actions/labeler` from 6.2.0 to 7.0.0 - [Release notes](https://github.com/actions/labeler/releases) - [Commits](https://github.com/actions/labeler/compare/b8dd2d9be0f68b860e7dae5dae7d772984eacd6d...bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13) Updates `ossf/scorecard-action` from 2.4.3 to 2.4.4 - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/4eaacf0543bb3f2c246792bd56e8cdeffafb205a...2d1146689b8cda280b9bc96326124645441f03bc) Updates `taiki-e/install-action` from 2.84.0 to 2.85.2 - [Release notes](https://github.com/taiki-e/install-action/releases) - [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/taiki-e/install-action/compare/a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9...41049aa56687c35e0afa74eed4f09cec4f9afabf) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.321.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions - dependency-name: zizmorcore/zizmor-action dependency-version: 0.6.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: github/codeql-action/init dependency-version: 4.37.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: github/codeql-action/analyze dependency-version: 4.37.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: github/codeql-action/upload-sarif dependency-version: 4.37.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: lewagon/wait-on-check-action dependency-version: 1.9.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions - dependency-name: actions/labeler dependency-version: 7.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: ossf/scorecard-action dependency-version: 2.4.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: taiki-e/install-action dependency-version: 2.85.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] --- .github/workflows/annocheck.yml | 2 +- .github/workflows/auto_review_pr.yml | 2 +- .github/workflows/baseruby.yml | 2 +- .github/workflows/bundled_gems.yml | 2 +- .github/workflows/check_dependencies.yml | 2 +- .github/workflows/check_misc.yml | 2 +- .github/workflows/check_sast.yml | 8 ++++---- .github/workflows/dependabot_automerge.yml | 2 +- .github/workflows/labeler.yml | 2 +- .github/workflows/modgc.yml | 2 +- .github/workflows/parse_y.yml | 2 +- .github/workflows/publish.yml | 2 +- .github/workflows/scorecards.yml | 4 ++-- .github/workflows/spec_guards.yml | 2 +- .github/workflows/sync_default_gems.yml | 2 +- .github/workflows/tarball-ubuntu.yml | 2 +- .github/workflows/tarball-windows.yml | 2 +- .github/workflows/ubuntu.yml | 2 +- .github/workflows/wasm.yml | 2 +- .github/workflows/windows.yml | 2 +- .github/workflows/yjit-ubuntu.yml | 2 +- .github/workflows/zjit-macos.yml | 2 +- .github/workflows/zjit-ubuntu.yml | 4 ++-- 23 files changed, 28 insertions(+), 28 deletions(-) diff --git a/.github/workflows/annocheck.yml b/.github/workflows/annocheck.yml index 1fda0b98877b3b..4af49e57943bb8 100644 --- a/.github/workflows/annocheck.yml +++ b/.github/workflows/annocheck.yml @@ -67,7 +67,7 @@ jobs: sparse-checkout: /.github persist-credentials: false - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none diff --git a/.github/workflows/auto_review_pr.yml b/.github/workflows/auto_review_pr.yml index 866029a487bacb..70617923a8c08e 100644 --- a/.github/workflows/auto_review_pr.yml +++ b/.github/workflows/auto_review_pr.yml @@ -29,7 +29,7 @@ jobs: with: persist-credentials: false - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.4' bundler: none diff --git a/.github/workflows/baseruby.yml b/.github/workflows/baseruby.yml index 301366f4787583..ddf318d698bee4 100644 --- a/.github/workflows/baseruby.yml +++ b/.github/workflows/baseruby.yml @@ -48,7 +48,7 @@ jobs: - ruby-3.3 steps: - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: ${{ matrix.ruby }} bundler: none diff --git a/.github/workflows/bundled_gems.yml b/.github/workflows/bundled_gems.yml index dce02c03093c7f..1419146a006452 100644 --- a/.github/workflows/bundled_gems.yml +++ b/.github/workflows/bundled_gems.yml @@ -38,7 +38,7 @@ jobs: with: token: ${{ (github.repository == 'ruby/ruby' && !startsWith(github.event_name, 'pull')) && secrets.MATZBOT_AUTO_UPDATE_TOKEN || secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: 4.0 diff --git a/.github/workflows/check_dependencies.yml b/.github/workflows/check_dependencies.yml index 14b010658ba732..3e8c355ffdffe1 100644 --- a/.github/workflows/check_dependencies.yml +++ b/.github/workflows/check_dependencies.yml @@ -28,7 +28,7 @@ jobs: with: persist-credentials: false - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none diff --git a/.github/workflows/check_misc.yml b/.github/workflows/check_misc.yml index b3a56c8c8e24e9..837537203b491f 100644 --- a/.github/workflows/check_misc.yml +++ b/.github/workflows/check_misc.yml @@ -23,7 +23,7 @@ jobs: token: ${{ (github.repository == 'ruby/ruby' && !startsWith(github.event_name, 'pull')) && secrets.MATZBOT_AUTO_UPDATE_TOKEN || secrets.GITHUB_TOKEN }} persist-credentials: false - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: head diff --git a/.github/workflows/check_sast.yml b/.github/workflows/check_sast.yml index 943bb71685f8a6..e60e30fdd01b47 100644 --- a/.github/workflows/check_sast.yml +++ b/.github/workflows/check_sast.yml @@ -45,7 +45,7 @@ jobs: persist-credentials: false - name: Run zizmor - uses: zizmorcore/zizmor-action@6599ee8b7a49aef6a770f63d261d214911a7ce02 # v0.6.0 + uses: zizmorcore/zizmor-action@6fc4b006235f201fdab3722e17240ab420d580e5 # v0.6.1 continue-on-error: true analyze: @@ -78,14 +78,14 @@ jobs: persist-credentials: false - name: Initialize CodeQL - uses: github/codeql-action/init@7188fc363630916deb702c7fdcf4e481b751f97a # v4.37.1 + uses: github/codeql-action/init@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 with: languages: ${{ matrix.language }} build-mode: none config-file: .github/codeql/codeql-config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@7188fc363630916deb702c7fdcf4e481b751f97a # v4.37.1 + uses: github/codeql-action/analyze@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 with: category: '/language:${{ matrix.language }}' upload: False @@ -127,7 +127,7 @@ jobs: continue-on-error: true - name: Upload SARIF - uses: github/codeql-action/upload-sarif@7188fc363630916deb702c7fdcf4e481b751f97a # v4.37.1 + uses: github/codeql-action/upload-sarif@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 with: sarif_file: sarif-results/${{ matrix.language }}.sarif continue-on-error: true diff --git a/.github/workflows/dependabot_automerge.yml b/.github/workflows/dependabot_automerge.yml index b331f888279bc0..30e654203eb902 100644 --- a/.github/workflows/dependabot_automerge.yml +++ b/.github/workflows/dependabot_automerge.yml @@ -17,7 +17,7 @@ jobs: id: metadata - name: Wait for status checks - uses: lewagon/wait-on-check-action@1d57e2c51a58d812d2765e036a028b6bdb5a6154 # v1.8.1 + uses: lewagon/wait-on-check-action@2271c86c146b96545b4e871b855e10ffa6f50773 # v1.9.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} ref: ${{ github.event.pull_request.head.sha || github.sha }} diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index f0fa12c456ef08..c1feb5c1f78962 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -12,4 +12,4 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/labeler@b8dd2d9be0f68b860e7dae5dae7d772984eacd6d # v6.2.0 + - uses: actions/labeler@bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13 # v7.0.0 diff --git a/.github/workflows/modgc.yml b/.github/workflows/modgc.yml index 6cf4760a1d3cc5..26bde7f894c148 100644 --- a/.github/workflows/modgc.yml +++ b/.github/workflows/modgc.yml @@ -67,7 +67,7 @@ jobs: uses: ./.github/actions/setup/ubuntu if: ${{ contains(matrix.os, 'ubuntu') }} - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none diff --git a/.github/workflows/parse_y.yml b/.github/workflows/parse_y.yml index 1087ac946b7b51..6f80d65834e2c7 100644 --- a/.github/workflows/parse_y.yml +++ b/.github/workflows/parse_y.yml @@ -59,7 +59,7 @@ jobs: - uses: ./.github/actions/setup/ubuntu - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index daa852fc3cba64..0f265d0b36b8bf 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -22,7 +22,7 @@ jobs: with: persist-credentials: false - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: 3.3.4 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index bdbd8090d2f719..2963a4ba761cb6 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -39,7 +39,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3 + uses: ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc # v2.4.4 with: results_file: results.sarif results_format: sarif @@ -73,6 +73,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard (optional). # Commenting out will disable upload of results to your repo's Code Scanning dashboard - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@7188fc363630916deb702c7fdcf4e481b751f97a # v4.37.1 + uses: github/codeql-action/upload-sarif@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 with: sarif_file: results.sarif diff --git a/.github/workflows/spec_guards.yml b/.github/workflows/spec_guards.yml index 6823b94fd9bfb4..2005a14e6e7c08 100644 --- a/.github/workflows/spec_guards.yml +++ b/.github/workflows/spec_guards.yml @@ -49,7 +49,7 @@ jobs: with: persist-credentials: false - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: ${{ matrix.ruby }} bundler: none diff --git a/.github/workflows/sync_default_gems.yml b/.github/workflows/sync_default_gems.yml index 5795d4abf03066..5ac733ad07cf95 100644 --- a/.github/workflows/sync_default_gems.yml +++ b/.github/workflows/sync_default_gems.yml @@ -39,7 +39,7 @@ jobs: with: token: ${{ github.repository == 'ruby/ruby' && secrets.MATZBOT_AUTO_UPDATE_TOKEN || secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.4' bundler: none diff --git a/.github/workflows/tarball-ubuntu.yml b/.github/workflows/tarball-ubuntu.yml index 8d3dbe1037a378..589b0846f5cb27 100644 --- a/.github/workflows/tarball-ubuntu.yml +++ b/.github/workflows/tarball-ubuntu.yml @@ -43,7 +43,7 @@ jobs: set -x sudo apt-get update -q sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev zlib1g-dev libffi-dev libgmp-dev bison- autoconf- - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.2' # test-bundled-gems requires executable host ruby diff --git a/.github/workflows/tarball-windows.yml b/.github/workflows/tarball-windows.yml index c3f12fe970cea7..0bd476b8092029 100644 --- a/.github/workflows/tarball-windows.yml +++ b/.github/workflows/tarball-windows.yml @@ -48,7 +48,7 @@ jobs: - run: md build working-directory: - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.2' bundler: none diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index da918d06d794c5..6b6bd7f0901e02 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -79,7 +79,7 @@ jobs: with: arch: ${{ matrix.arch }} - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none diff --git a/.github/workflows/wasm.yml b/.github/workflows/wasm.yml index b4cc2a6c8ff8c1..98e22c005fcec0 100644 --- a/.github/workflows/wasm.yml +++ b/.github/workflows/wasm.yml @@ -65,7 +65,7 @@ jobs: sparse-checkout: /.github persist-credentials: false - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 43b025e0c8ea4a..c871faaa06cbd6 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -63,7 +63,7 @@ jobs: - run: md build working-directory: - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: # windows-11-arm has only 3.4.1, 3.4.2, 3.4.3, head ruby-version: ${{ !endsWith(matrix.os, 'arm') && '3.1' || '3.4' }} diff --git a/.github/workflows/yjit-ubuntu.yml b/.github/workflows/yjit-ubuntu.yml index ed1202c25f77ab..ba812106fd6e09 100644 --- a/.github/workflows/yjit-ubuntu.yml +++ b/.github/workflows/yjit-ubuntu.yml @@ -138,7 +138,7 @@ jobs: - uses: ./.github/actions/setup/ubuntu - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none diff --git a/.github/workflows/zjit-macos.yml b/.github/workflows/zjit-macos.yml index b6afbc223af1cd..9db644da16f9d3 100644 --- a/.github/workflows/zjit-macos.yml +++ b/.github/workflows/zjit-macos.yml @@ -98,7 +98,7 @@ jobs: rustup install ${{ matrix.rust_version }} --profile minimal rustup default ${{ matrix.rust_version }} - - uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9 # v2.84.0 + - uses: taiki-e/install-action@41049aa56687c35e0afa74eed4f09cec4f9afabf # v2.85.2 with: tool: nextest@0.9 if: ${{ matrix.test_task == 'zjit-check' }} diff --git a/.github/workflows/zjit-ubuntu.yml b/.github/workflows/zjit-ubuntu.yml index c27b1a775afbee..8e72f7d4835947 100644 --- a/.github/workflows/zjit-ubuntu.yml +++ b/.github/workflows/zjit-ubuntu.yml @@ -136,12 +136,12 @@ jobs: - uses: ./.github/actions/setup/ubuntu - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none - - uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9 # v2.84.0 + - uses: taiki-e/install-action@41049aa56687c35e0afa74eed4f09cec4f9afabf # v2.85.2 with: tool: nextest@0.9 if: ${{ matrix.test_task == 'zjit-check' }} From 7259edb86220c24b55411c588ede9976d6d1433e Mon Sep 17 00:00:00 2001 From: git Date: Mon, 27 Jul 2026 06:52:57 +0000 Subject: [PATCH 4/9] Update bundled gems list as of 2026-07-27 --- NEWS.md | 5 ++++- gems/bundled_gems | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/NEWS.md b/NEWS.md index 64ffe9d4d6d535..672c074b6a4151 100644 --- a/NEWS.md +++ b/NEWS.md @@ -155,7 +155,7 @@ releases. * rss 0.3.3 * 0.3.2 to [0.3.3][rss-0.3.3] * net-imap 0.6.6 - * 0.6.2 to [v0.6.3][net-imap-v0.6.3], [v0.6.4][net-imap-v0.6.4], [v0.6.4.1][net-imap-v0.6.4.1] + * 0.6.2 to [v0.6.3][net-imap-v0.6.3], [v0.6.4][net-imap-v0.6.4], [v0.6.4.1][net-imap-v0.6.4.1], [v0.6.5][net-imap-v0.6.5], [v0.6.6][net-imap-v0.6.6] * rbs 4.0.3 * 3.10.0 to [v3.10.1][rbs-v3.10.1], [v3.10.2][rbs-v3.10.2], [v3.10.3][rbs-v3.10.3], [v3.10.4][rbs-v3.10.4], [v4.0.0.dev.5][rbs-v4.0.0.dev.5], [v4.0.0][rbs-v4.0.0], [v4.0.2][rbs-v4.0.2], [v4.0.3][rbs-v4.0.3] * typeprof 0.32.0 @@ -168,6 +168,7 @@ releases. * 0.2.0 to [v0.3.0][nkf-v0.3.0] * syslog 0.4.0 * 0.3.0 to [v0.4.0][syslog-v0.4.0] +* csv 3.3.6 * repl_type_completor 0.1.15 * 0.1.12 to [v0.1.13][repl_type_completor-v0.1.13], [v0.1.14][repl_type_completor-v0.1.14], [v0.1.15][repl_type_completor-v0.1.15] * pstore 0.2.1 @@ -326,6 +327,8 @@ A lot of work has gone into making Ractors more stable, performant, and usable. [net-imap-v0.6.3]: https://github.com/ruby/net-imap/releases/tag/v0.6.3 [net-imap-v0.6.4]: https://github.com/ruby/net-imap/releases/tag/v0.6.4 [net-imap-v0.6.4.1]: https://github.com/ruby/net-imap/releases/tag/v0.6.4.1 +[net-imap-v0.6.5]: https://github.com/ruby/net-imap/releases/tag/v0.6.5 +[net-imap-v0.6.6]: https://github.com/ruby/net-imap/releases/tag/v0.6.6 [rbs-v3.10.1]: https://github.com/ruby/rbs/releases/tag/v3.10.1 [rbs-v3.10.2]: https://github.com/ruby/rbs/releases/tag/v3.10.2 [rbs-v3.10.3]: https://github.com/ruby/rbs/releases/tag/v3.10.3 diff --git a/gems/bundled_gems b/gems/bundled_gems index 4fcf38256d1490..70fc7e7997c27f 100644 --- a/gems/bundled_gems +++ b/gems/bundled_gems @@ -31,7 +31,7 @@ rinda 0.2.0 https://github.com/ruby/rinda drb 2.2.3 https://github.com/ruby/drb nkf 0.3.0 https://github.com/ruby/nkf syslog 0.4.0 https://github.com/ruby/syslog -csv 3.3.5 https://github.com/ruby/csv +csv 3.3.6 https://github.com/ruby/csv repl_type_completor 0.1.15 https://github.com/ruby/repl_type_completor ostruct 0.6.3 https://github.com/ruby/ostruct pstore 0.2.1 https://github.com/ruby/pstore From e585c9449965a6837374e0c5436cf4be731802df Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 24 Jul 2026 15:44:16 +0900 Subject: [PATCH 5/9] win32: Use GetCurrentThreadStackLimits to set machine stack bounds [Bug #11438] VirtualQuery against a local variable address may return a region that does not span the whole thread stack when the interpreter is initialized deep in the stack, such as Ruby embedded in another application. stack_check() then misfires with a bogus SystemStackError. --- thread_win32.c | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/thread_win32.c b/thread_win32.c index 5fc73b91b2e664..4a531d514b2fe9 100644 --- a/thread_win32.c +++ b/thread_win32.c @@ -589,35 +589,27 @@ rb_native_cond_destroy(rb_nativethread_cond_t *cond) } -#define CHECK_ERR(expr) \ - {if (!(expr)) {rb_bug("err: %lu - %s", GetLastError(), #expr);}} - -COMPILER_WARNING_PUSH -#if __has_warning("-Wmaybe-uninitialized") -COMPILER_WARNING_IGNORED(-Wmaybe-uninitialized) +#if !defined(_WIN32_WINNT_WIN8) || _WIN32_WINNT < 0x602 +/* declared in processthreadsapi.h only when _WIN32_WINNT >= 0x0602, + * but exported from kernel32.dll since Windows 8 */ +WINBASEAPI VOID WINAPI GetCurrentThreadStackLimits(PULONG_PTR, PULONG_PTR); #endif -static inline SIZE_T -query_memory_basic_info(PMEMORY_BASIC_INFORMATION mi, void *local_in_parent_frame) -{ - return VirtualQuery(asan_get_real_stack_addr(local_in_parent_frame), mi, sizeof(*mi)); -} -COMPILER_WARNING_POP static void native_thread_init_stack(rb_thread_t *th, void *local_in_parent_frame) { - MEMORY_BASIC_INFORMATION mi; - char *base, *end; - DWORD size, space; + ULONG_PTR low, high; + SIZE_T size, space; - CHECK_ERR(query_memory_basic_info(&mi, local_in_parent_frame)); - base = mi.AllocationBase; - end = mi.BaseAddress; - end += mi.RegionSize; - size = end - base; + /* VirtualQuery against the current stack pointer may return a region + * that does not span the whole stack when the interpreter is + * initialized deep in the stack, which makes stack_check() misfire. + * [Bug #11438] */ + GetCurrentThreadStackLimits(&low, &high); + size = high - low; space = size / 5; if (space > 1024*1024) space = 1024*1024; - th->ec->machine.stack_start = (VALUE *)end - 1; + th->ec->machine.stack_start = (VALUE *)high - 1; th->ec->machine.stack_maxsize = size - space; } From d988faa8b39673d0d508bf68d73e7cde423075b0 Mon Sep 17 00:00:00 2001 From: git Date: Mon, 27 Jul 2026 07:02:11 +0000 Subject: [PATCH 6/9] [DOC] Update bundled gems list at 7259edb86220c24b55411c588ede99 --- NEWS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEWS.md b/NEWS.md index 672c074b6a4151..5fc669c630797e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -169,6 +169,7 @@ releases. * syslog 0.4.0 * 0.3.0 to [v0.4.0][syslog-v0.4.0] * csv 3.3.6 + * 3.3.5 to [v3.3.6][csv-v3.3.6] * repl_type_completor 0.1.15 * 0.1.12 to [v0.1.13][repl_type_completor-v0.1.13], [v0.1.14][repl_type_completor-v0.1.14], [v0.1.15][repl_type_completor-v0.1.15] * pstore 0.2.1 @@ -343,6 +344,7 @@ A lot of work has gone into making Ractors more stable, performant, and usable. [resolv-replace-v0.2.0]: https://github.com/ruby/resolv-replace/releases/tag/v0.2.0 [nkf-v0.3.0]: https://github.com/ruby/nkf/releases/tag/v0.3.0 [syslog-v0.4.0]: https://github.com/ruby/syslog/releases/tag/v0.4.0 +[csv-v3.3.6]: https://github.com/ruby/csv/releases/tag/v3.3.6 [repl_type_completor-v0.1.13]: https://github.com/ruby/repl_type_completor/releases/tag/v0.1.13 [repl_type_completor-v0.1.14]: https://github.com/ruby/repl_type_completor/releases/tag/v0.1.14 [repl_type_completor-v0.1.15]: https://github.com/ruby/repl_type_completor/releases/tag/v0.1.15 From 27de7becb6a00a23f543a8ce2a3a65dbde86f338 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 27 Jul 2026 15:45:22 +0900 Subject: [PATCH 7/9] [ruby/rubygems] Document pessimistic operator and eval_gemfile in gemfile(5) The handwritten Gemfile guide on guides.rubygems.org is planned to be replaced by this generated man page, but its explanation of the ~> specifier and the eval_gemfile method have no equivalent here. Port both ahead of the replacement so the information is not lost. https://github.com/ruby/rubygems/commit/2166ff6665 --- lib/bundler/man/gemfile.5 | 11 +++++++++++ lib/bundler/man/gemfile.5.ronn | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/lib/bundler/man/gemfile.5 b/lib/bundler/man/gemfile.5 index 64e93c4b153588..a4989e4a51c69b 100644 --- a/lib/bundler/man/gemfile.5 +++ b/lib/bundler/man/gemfile.5 @@ -107,6 +107,8 @@ gem "nokogiri", ">= 1\.4\.2" gem "RedCloth", ">= 4\.1\.0", "< 4\.2\.0" .fi .IP "" 0 +.P +Most version specifiers, like \fB>= 1\.0\fR, are self\-explanatory\. The pessimistic specifier \fB~>\fR constrains both a lower and an upper bound: \fB~> 2\.0\.3\fR is identical to \fB>= 2\.0\.3\fR and \fB< 2\.1\fR, and \fB~> 2\.1\fR is identical to \fB>= 2\.1\fR and \fB< 3\.0\fR\. A pessimistic specifier with a prerelease component, like \fB~> 2\.2\.beta\fR, will match prerelease versions like \fB2\.2\.beta\.12\fR\. \fB~> 0\fR is identical to \fB>= 0\.0\fR and \fB< 1\.0\fR\. .SS "REQUIRE AS" Each \fIgem\fR \fBMAY\fR specify files that should be used when autorequiring via \fBBundler\.require\fR\. You may pass an array with multiple files or \fBtrue\fR if the file you want \fBrequired\fR has the same name as \fIgem\fR or \fBfalse\fR to prevent any file from being autorequired\. .IP "" 4 @@ -460,6 +462,15 @@ The \fBgemspec\fR method adds any runtime dependencies as gem requirements in th The \fBgemspec\fR method supports optional \fB:path\fR, \fB:glob\fR, \fB:name\fR, and \fB:development_group\fR options, which control where bundler looks for the \fB\.gemspec\fR, the glob it uses to look for the gemspec (defaults to: \fB{,*,*/*}\.gemspec\fR), what named \fB\.gemspec\fR it uses (if more than one is present), and which group development dependencies are included in\. .P When a \fBgemspec\fR dependency encounters version conflicts during resolution, the local version under development will always be selected \-\- even if there are remote versions that better match other requirements for the \fBgemspec\fR gem\. +.SH "EVAL_GEMFILE" +A Gemfile \fBMAY\fR be split across multiple files\. The \fBeval_gemfile\fR method reads the contents of another file as if they appeared in the current Gemfile\. A relative path is resolved against the directory of the file containing the call\. +.IP "" 4 +.nf +eval_gemfile "another\.gemfile" +.fi +.IP "" 0 +.P +This can be useful to run tests against multiple combinations of dependencies, or to load per\-developer gems from an untracked gemfile\. .SH "OVERRIDE" The \fBoverride\fR directive rewrites a constraint on another gem before resolution runs\. It targets the common case where an upstream gem's published metadata is too narrow on the current project's machine \-\- a stale upper bound, an unwanted floor, or a transitive pin that has to be lifted\. .IP "" 4 diff --git a/lib/bundler/man/gemfile.5.ronn b/lib/bundler/man/gemfile.5.ronn index 69fef906549d19..dd5db5013fea30 100644 --- a/lib/bundler/man/gemfile.5.ronn +++ b/lib/bundler/man/gemfile.5.ronn @@ -137,6 +137,13 @@ Each _gem_ `MAY` have one or more version specifiers. gem "nokogiri", ">= 1.4.2" gem "RedCloth", ">= 4.1.0", "< 4.2.0" +Most version specifiers, like `>= 1.0`, are self-explanatory. The pessimistic +specifier `~>` constrains both a lower and an upper bound: `~> 2.0.3` is +identical to `>= 2.0.3` and `< 2.1`, and `~> 2.1` is identical to `>= 2.1` and +`< 3.0`. A pessimistic specifier with a prerelease component, like +`~> 2.2.beta`, will match prerelease versions like `2.2.beta.12`. `~> 0` is +identical to `>= 0.0` and `< 1.0`. + ### REQUIRE AS Each _gem_ `MAY` specify files that should be used when autorequiring via @@ -541,6 +548,18 @@ When a `gemspec` dependency encounters version conflicts during resolution, the local version under development will always be selected -- even if there are remote versions that better match other requirements for the `gemspec` gem. +## EVAL_GEMFILE + +A Gemfile `MAY` be split across multiple files. The `eval_gemfile` method reads +the contents of another file as if they appeared in the current Gemfile. A +relative path is resolved against the directory of the file containing the +call. + + eval_gemfile "another.gemfile" + +This can be useful to run tests against multiple combinations of dependencies, +or to load per-developer gems from an untracked gemfile. + ## OVERRIDE The `override` directive rewrites a constraint on another gem before From 6ae46193a542ffb702e7002d445128ff4e5c85c8 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 27 Jul 2026 18:02:40 +0900 Subject: [PATCH 8/9] [ruby/rubygems] List missing subcommands in bundle(1) UTILITIES section bundle-env, bundle-fund, bundle-info, bundle-issue, bundle-licenses, bundle-list, and bundle-pristine all have their own man pages but were not listed in bundle(1), so they were never linked from the command index. https://github.com/ruby/rubygems/commit/9e37b2fd9f Co-Authored-By: Claude Fable 5 --- lib/bundler/man/bundle.1 | 21 +++++++++++++++++++++ lib/bundler/man/bundle.1.ronn | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/lib/bundler/man/bundle.1 b/lib/bundler/man/bundle.1 index 167815631a2b64..b8e8aefa66228f 100644 --- a/lib/bundler/man/bundle.1 +++ b/lib/bundler/man/bundle.1 @@ -54,6 +54,18 @@ Determine whether the requirements for your application are installed and availa \fBbundle show(1)\fR \fIbundle\-show\.1\.html\fR Show the source location of a particular gem in the bundle .TP +\fBbundle info(1)\fR \fIbundle\-info\.1\.html\fR +Show information for the given gem in your bundle +.TP +\fBbundle list(1)\fR \fIbundle\-list\.1\.html\fR +List all the gems in the bundle +.TP +\fBbundle licenses(1)\fR \fIbundle\-licenses\.1\.html\fR +Print the license of all gems in the bundle +.TP +\fBbundle fund(1)\fR \fIbundle\-fund\.1\.html\fR +Lists information about gems seeking funding assistance +.TP \fBbundle outdated(1)\fR \fIbundle\-outdated\.1\.html\fR Show all of the outdated gems in the current bundle .TP @@ -78,9 +90,18 @@ Display platform compatibility information \fBbundle clean(1)\fR \fIbundle\-clean\.1\.html\fR Clean up unused gems in your Bundler directory .TP +\fBbundle pristine(1)\fR \fIbundle\-pristine\.1\.html\fR +Restores installed gems to their pristine condition +.TP \fBbundle doctor(1)\fR \fIbundle\-doctor\.1\.html\fR Display warnings about common problems .TP +\fBbundle env(1)\fR \fIbundle\-env\.1\.html\fR +Print information about the environment Bundler is running under +.TP +\fBbundle issue(1)\fR \fIbundle\-issue\.1\.html\fR +Get help reporting Bundler issues +.TP \fBbundle remove(1)\fR \fIbundle\-remove\.1\.html\fR Removes gems from the Gemfile .TP diff --git a/lib/bundler/man/bundle.1.ronn b/lib/bundler/man/bundle.1.ronn index 1c2b3df7afa88b..3f993df1a5b6f0 100644 --- a/lib/bundler/man/bundle.1.ronn +++ b/lib/bundler/man/bundle.1.ronn @@ -64,6 +64,18 @@ We divide `bundle` subcommands into primary commands and utilities: * [`bundle show(1)`](bundle-show.1.html): Show the source location of a particular gem in the bundle +* [`bundle info(1)`](bundle-info.1.html): + Show information for the given gem in your bundle + +* [`bundle list(1)`](bundle-list.1.html): + List all the gems in the bundle + +* [`bundle licenses(1)`](bundle-licenses.1.html): + Print the license of all gems in the bundle + +* [`bundle fund(1)`](bundle-fund.1.html): + Lists information about gems seeking funding assistance + * [`bundle outdated(1)`](bundle-outdated.1.html): Show all of the outdated gems in the current bundle @@ -88,9 +100,18 @@ We divide `bundle` subcommands into primary commands and utilities: * [`bundle clean(1)`](bundle-clean.1.html): Clean up unused gems in your Bundler directory +* [`bundle pristine(1)`](bundle-pristine.1.html): + Restores installed gems to their pristine condition + * [`bundle doctor(1)`](bundle-doctor.1.html): Display warnings about common problems +* [`bundle env(1)`](bundle-env.1.html): + Print information about the environment Bundler is running under + +* [`bundle issue(1)`](bundle-issue.1.html): + Get help reporting Bundler issues + * [`bundle remove(1)`](bundle-remove.1.html): Removes gems from the Gemfile From fef2234a7bc543055e5fd93ddc5a4a975f21489c Mon Sep 17 00:00:00 2001 From: Shizuo Fujita Date: Mon, 27 Jul 2026 19:49:40 +0900 Subject: [PATCH 9/9] [DOC] Fix the return value of IO::Buffer#set_value in its example (#18078) The documentation for `IO::Buffer#set_value` shows: buffer.set_value(:U8, 1, 111) # => 1 but it actually returns 2, the offset just after the written value: $ ruby -e 'p IO::Buffer.new(8).set_value(:U8, 1, 111)' 2 `io_buffer_set_value` passes `&offset` to `rb_io_buffer_set_value`, which advances it by the size of the written value, and then returns the advanced offset: static VALUE io_buffer_set_value(VALUE self, VALUE type, VALUE _offset, VALUE value) { struct rb_io_buffer *buffer = get_io_buffer_for_writing(self); size_t offset = io_buffer_extract_offset(_offset); rb_io_buffer_set_value(buffer, type, &offset, value); return SIZET2NUM(offset); } This changed in 025b8701c09813c40339bd8fa1c75e0e5eaf7120 (#6434, released in 3.2.0); before that the method returned the given offset, so the example was correct at the time it was written. Checked with all-ruby: 3.1 returns 1 and 3.2 through 4.0 return 2. Also state the return value explicitly for both `set_value` and `set_values`. The call-seq says `-> offset`, which reads as if the given offset were returned. `set_values` returns the offset after the last written value in the same way (3 for the example in its documentation). --- io_buffer.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/io_buffer.c b/io_buffer.c index a64fa506ec04c8..9599cc6a28c0e7 100644 --- a/io_buffer.c +++ b/io_buffer.c @@ -2537,7 +2537,8 @@ struct io_buffer_set_value_arguments { * call-seq: set_value(type, offset, value) -> offset * * Write to a buffer a +value+ of +type+ at +offset+. +type+ should be one of - * symbols described in #get_value. + * symbols described in #get_value. Returns the offset just after the written + * value. * * buffer = IO::Buffer.new(8) * # => @@ -2545,7 +2546,7 @@ struct io_buffer_set_value_arguments { * # 0x00000000 00 00 00 00 00 00 00 00 * * buffer.set_value(:U8, 1, 111) - * # => 1 + * # => 2 * * buffer * # => @@ -2577,10 +2578,12 @@ io_buffer_set_value(VALUE self, VALUE type, VALUE _offset, VALUE value) * * Write +values+ of +buffer_types+ at +offset+ to the buffer. +buffer_types+ * should be an array of symbols as described in #get_value. +values+ should - * be an array of values to write. + * be an array of values to write. Returns the offset just after the last + * written value. * * buffer = IO::Buffer.new(8) * buffer.set_values([:U8, :U16], 0, [1, 2]) + * # => 3 * buffer * # => * # #