Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
c6e3e8c
ZJIT: Refine inline budget estimates (#17765)
tekknolagi Jul 14, 2026
8bcc810
gc: remember re-embedded objects when compaction changes slot size
shugo Jul 14, 2026
307a771
ZJIT: Fold defined?(yield) for inlined methods (#17861)
tekknolagi Jul 14, 2026
1d363d6
ZJIT: Add small tool to analyze perf map (#17734)
tekknolagi Jul 14, 2026
7facc9f
[ruby/prism] Fix assume warning
kddnewton Jul 14, 2026
be2a2ee
Relax opt_getconstant_path IC assertion under multi-ractor
ko1 Jul 14, 2026
39564b8
dtoa.c: load the 5-powers cache pointers atomically
ko1 Jul 14, 2026
243e640
gc.c: re-embed T_OBJECT during `gc_compact_finish`
byroot Jul 14, 2026
71ee81f
imemo.c: embed the `st_table` inside `rb_fields`
byroot Jul 14, 2026
6f0548a
Simplify `rb_obj_copy_ivar` and `rb_copy_generic_ivar`
byroot Jul 14, 2026
6c23075
rb_copy_generic_ivar: cleanup goto statement
byroot Jul 14, 2026
24337e3
Refactor `rb_obj_copy_ivar`
byroot Jul 14, 2026
944d936
variable.c: Refactor too_complex evacuation paths
byroot Jul 14, 2026
4bd94cc
variable.c: only filter out `object_id`, not all internal ivars
byroot Jul 14, 2026
9a3be8a
ZJIT: Rename RData shape layout to Extended
k0kubun Jul 14, 2026
09e19a5
ZJIT: Optimize setivar on extended RObjects
k0kubun Jul 14, 2026
8f0c0b3
ZJIT: Read from correct CFP in forward fallback (#17875)
tekknolagi Jul 14, 2026
a42d327
ZJIT: Skip interrupt checks on forward branches (#17878)
k0kubun Jul 15, 2026
6d6e9a9
Remove unreferenced OPT_GLOBAL_METHOD_CACHE and OPT_UNIFY_ALL_COMBINA…
hsbt Jul 14, 2026
ff0f4d4
CI: drop redundant --with-gmp macOS job
hsbt Jul 14, 2026
ad57e69
CI: fold cargo test into a YJIT macOS make job
hsbt Jul 14, 2026
e7142e1
CI: trim the tarball-test macOS matrix on PR and push
hsbt Jul 14, 2026
b1f5042
[ruby/rubygems] Split install/gemfile/git_spec.rb for parallel execution
hsbt Jul 3, 2026
9ed1150
[ruby/rubygems] Assign plugin/unloaded_source_spec.rb to a shard
hsbt Jul 3, 2026
03b091b
[ruby/rubygems] Split remaining heavy spec files for parallel execution
hsbt Jul 3, 2026
4659696
Remove BSD/OS (BSDi) support
hsbt Jul 14, 2026
849d9d6
Relax vm_cc_cme/vm_cc_call assertions under multi-ractor, extension-s…
ko1 Jul 14, 2026
6a95292
Bump ruby/setup-ruby in the github-actions group across 1 directory
dependabot[bot] Jul 15, 2026
57b8f18
[ruby/rubygems] Validate spec name before writing to the spec cache
hsbt Jul 14, 2026
878d20e
Use bounded strings in process and cwd handling
nobu Jul 14, 2026
21b7c72
Use bounded comparisons for compiler attributes
nobu Jul 14, 2026
4cc24eb
Resurrect hidden compiler operands
nobu Jul 14, 2026
37d2bb3
Search NameError messages within string bounds
nobu Jul 14, 2026
b9a50a0
Bound the hostname terminator search
nobu Jul 14, 2026
4b638ee
Provide a fallback implementation of memrchr
nobu Jul 15, 2026
c2883dd
Avoid NUL-terminated extension checks in require
nobu Jul 15, 2026
c67dc0d
Pass Prism file paths as Ruby strings
nobu Jul 15, 2026
b9ad19d
Format backtrace locations as Ruby strings
nobu Jul 15, 2026
529d86a
Format unknown struct keywords as a Ruby string
nobu Jul 15, 2026
043f949
Bound backtrace output strings
nobu Jul 15, 2026
ec002ff
Bound VM dump strings
nobu Jul 15, 2026
92c6f43
Bound GC and VM diagnostic strings
nobu Jul 15, 2026
f636ac3
Fix broken RDoc examples that raise or fail to run
hsbt Jul 15, 2026
6f8d0dd
Fix Set RDoc examples to use Set and proper output comments
hsbt Jul 15, 2026
cce7041
[Feature #22097] Add Proc#refined
shugo Jul 15, 2026
e34c45e
[ruby/rubygems] Normalize CRLF line breaks when parsing YAML in Gem::…
hsbt Jul 15, 2026
b1c35b9
[ruby/rubygems] Quote strings containing CR instead of emitting a blo…
hsbt Jul 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/annocheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ jobs:
builddir: build
makeup: true

- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: '3.1'
bundler: none
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/auto_review_pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
with:
persist-credentials: false

- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: '3.4'
bundler: none
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/baseruby.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
- ruby-3.3

steps:
- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: ${{ matrix.ruby }}
bundler: none
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/bundled_gems.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: 4.0

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/check_dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:

- uses: ./.github/actions/setup/directories

- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: '3.1'
bundler: none
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/check_misc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: head

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,12 @@ jobs:
- test_task: check
os: macos-15
configure_args: '--with-gcc=gcc-14'
# No dedicated --with-gmp job: gmp is enabled by default and
# setup/macos passes --with-gmp-dir to every job, so each check
# here already builds and tests with -lgmp.
- test_task: check
os: macos-26
configure_args: '--with-jemalloc --with-opt-dir=$(brew --prefix jemalloc)'
- test_task: check
os: macos-26
configure_args: '--with-gmp'
- test_task: test-all
test_opts: --repeat-count=2
os: macos-26
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/modgc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ jobs:
uses: ./.github/actions/setup/ubuntu
if: ${{ contains(matrix.os, 'ubuntu') }}

- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: '3.1'
bundler: none
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/parse_y.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:

- uses: ./.github/actions/setup/ubuntu

- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: '3.1'
bundler: none
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
with:
persist-credentials: false

- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: 3.3.4

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/spec_guards.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
with:
persist-credentials: false

- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: ${{ matrix.ruby }}
bundler: none
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sync_default_gems.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
with:
token: ${{ github.repository == 'ruby/ruby' && secrets.MATZBOT_AUTO_UPDATE_TOKEN || secrets.GITHUB_TOKEN }}

- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: '3.4'
bundler: none
Expand Down
24 changes: 15 additions & 9 deletions .github/workflows/tarball-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ on:
required: false
type: boolean
default: false
full-matrix:
description: 'Run the full test matrix (nightly schedule and release verification). Off, the default, runs a single smoke check.'
required: false
type: boolean
default: false
secrets:
SIMPLER_ALERTS_URL:
required: false
Expand All @@ -24,16 +29,17 @@ permissions:
jobs:
macos:
strategy:
# The smoke matrix keeps only what is tarball-specific: that the
# packaged tarball configures, builds and installs. macos.yml runs the
# same test tasks from the git tree on every PR/push already.
# macos-15-intel: the runner image ships a pre-installed Ruby under
# /usr/local whose gems dir collides with the default prefix on Intel.
# Use an isolated prefix so RDoc generation does not scan that stale
# default-gem stub.
matrix:
test_task: [check, test-bundled-gems, test-bundler-parallel]
os: [macos-26, macos-15, macos-14]
include:
- os: macos-15-intel
test_task: check
# The runner image ships a pre-installed Ruby under /usr/local whose
# gems dir collides with the default prefix on Intel. Use an isolated
# prefix so RDoc generation does not scan that stale default-gem stub.
prefix: /tmp/ruby-prefix
test_task: ${{ inputs.full-matrix && fromJSON('["check", "test-bundled-gems", "test-bundler-parallel"]') || fromJSON('["check"]') }}
os: ${{ inputs.full-matrix && fromJSON('["macos-26", "macos-15", "macos-14"]') || fromJSON('["macos-26"]') }}
include: ${{ inputs.full-matrix && fromJSON('[{"os":"macos-15-intel", "test_task":"check", "prefix":"/tmp/ruby-prefix"}]') || fromJSON('[]') }}
fail-fast: false
runs-on: ${{ matrix.os }}
env:
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/tarball-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,11 @@ jobs:
uses: ./.github/workflows/tarball-macos.yml
with:
archname: snapshot-${{ needs.tarball.outputs.branch }}
# Full fan-out only for workflow_dispatch (nightly schedule and release
# verification); pull requests and pushes run a single smoke check.
# Only macOS is trimmed: its org-wide concurrency pool of 50 runners
# saturates during peak hours, while Linux and Windows have headroom.
full-matrix: ${{ github.event_name == 'workflow_dispatch' }}
notify-release-channel: ${{ github.event_name == 'workflow_dispatch' && inputs.notify-release-channel || false }}
secrets:
SIMPLER_ALERTS_URL: ${{ secrets.SIMPLER_ALERTS_URL }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tarball-ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: '3.2'
# test-bundled-gems requires executable host ruby
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tarball-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
- run: md build
working-directory:

- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: '3.2'
bundler: none
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ jobs:
with:
arch: ${{ matrix.arch }}

- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: '3.1'
bundler: none
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/wasm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ jobs:
sparse-checkout: /.github
persist-credentials: false

- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: '3.1'
bundler: none
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ jobs:
- run: md build
working-directory:

- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.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' }}
Expand Down
52 changes: 23 additions & 29 deletions .github/workflows/yjit-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,42 +32,17 @@ env:
CARGO_HTTP_MULTIPLEXING: false

jobs:
cargo:
name: cargo test

runs-on: macos-26

if: >-
${{!(false
|| contains(github.event.head_commit.message, '[DOC]')
|| contains(github.event.pull_request.title, '[DOC]')
|| contains(github.event.pull_request.labels.*.name, 'Documentation')
|| (github.event.pull_request.user.login == 'dependabot[bot]' && !startsWith(github.head_ref, 'dependabot/cargo'))
)}}

steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false

- run: RUST_BACKTRACE=1 cargo test
working-directory: yjit

# Also compile and test with all features enabled
- run: RUST_BACKTRACE=1 cargo test --all-features
working-directory: yjit

# Check that we can build in release mode too
- run: cargo build --release
working-directory: yjit

make:
strategy:
matrix:
include:
- test_task: 'check'
configure: '--enable-yjit'
yjit_opts: '--yjit'
# Run the Rust unit tests on one entry only; a separate job
# would occupy another runner from the org-wide macOS
# concurrency pool just for ~1 minute of cargo.
cargo: true
- test_task: 'check'
configure: '--enable-yjit=dev'
yjit_opts: '--yjit-call-threshold=1 --yjit-verify-ctx --yjit-code-gc'
Expand Down Expand Up @@ -177,6 +152,25 @@ jobs:
if: ${{ matrix.test_task == 'check' && matrix.skipped_tests }}
continue-on-error: ${{ matrix.continue-on-skipped_tests || false }}

# Run even when an earlier test step failed, so a Ruby-side failure
# does not mask the Rust unit test result.
- name: cargo test
run: RUST_BACKTRACE=1 cargo test
working-directory: src/yjit
if: ${{ matrix.cargo && !cancelled() }}

# Also compile and test with all features enabled
- name: cargo test --all-features
run: RUST_BACKTRACE=1 cargo test --all-features
working-directory: src/yjit
if: ${{ matrix.cargo && !cancelled() }}

# Check that we can build in release mode too
- name: cargo build --release
run: cargo build --release
working-directory: src/yjit
if: ${{ matrix.cargo && !cancelled() }}

- name: Dump crash logs
if: ${{ failure() }}
continue-on-error: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/yjit-ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ jobs:

- uses: ./.github/actions/setup/ubuntu

- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: '3.1'
bundler: none
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/zjit-ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ jobs:

- uses: ./.github/actions/setup/ubuntu

- uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
- uses: ruby/setup-ruby@8e41b362d2589a22a44c1cfa214b3c83052c195b # v1.318.0
with:
ruby-version: '3.1'
bundler: none
Expand Down
2 changes: 1 addition & 1 deletion array.c
Original file line number Diff line number Diff line change
Expand Up @@ -7723,7 +7723,7 @@ rb_ary_repeated_combination(VALUE ary, VALUE num)
* If no argument is given, returns an array of 1-element arrays,
* each containing an element of +self+:
*
* a.product # => [[0], [1], [2]]
* [0, 1, 2].product # => [[0], [1], [2]]
*
* With a block given, calls the block with each combination; returns +self+:
*
Expand Down
Loading