Skip to content

[pull] master from ruby:master#901

Merged
pull[bot] merged 20 commits intoturkdevops:masterfrom
ruby:master
Apr 1, 2026
Merged

[pull] master from ruby:master#901
pull[bot] merged 20 commits intoturkdevops:masterfrom
ruby:master

Conversation

@pull
Copy link
Copy Markdown

@pull pull bot commented Apr 1, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

Edouard-chin and others added 20 commits March 31, 2026 13:04
… exists on disk:

- ### Problem

  This change is purely to fix a problem when developing Bundler.
  When we tried to release Bundler 4.0.9, we bumped the VERSION
  from `4.1.0.dev` to `4.0.9`, this condition now evaluates to false
  https://github.com/ruby/rubygems/blob/34d19fa8a3f84c50e2ba65e0f39c80045e7cbfb8/bundler/lib/bundler/lockfile_generator.rb#L106.
  We then ended up with a CI crash.

  ```
  Errno::ENOENT: No such file or directory @ rb_sysopen - /Users/runner/work/rubygems/rubygems/cache/bundler-4.0.9.gem
  ```

  ### Context

  Computing a checksum for the `bundler` gem is only possible
  when the `bundler.gem` binary exists on disk. When a regular
  user interacts with `bundler`, the spec is loaded from disk and
  an associated cached `bundler.gem` should exists.

  However, when developing Bundler, the spec doesn't come from disk
  but from a fake spec https://github.com/ruby/rubygems/blob/34d19fa8a3f84c50e2ba65e0f39c80045e7cbfb8/bundler/lib/bundler/source/metadata.rb#L22-L28
  that with no associated `bundler.gem`.

  ### Solution

  To prevent CI from breaking whenever we make a release, we have
  to skip computing a checksum if no `bundler.gem` exists.

ruby/rubygems@01e0e61612
…tempt a release:

- ### Problem

  Whenever we bump the bundler `VERSION` to a non development release,
  like we recently did in [4.0.9](ruby/rubygems#9426)

  The test suite will behave differently and will break due to the
  Bundler checksum feature introduced in ruby/rubygems#9366

  This is because the expectactions of tests that have a lockfile'
  will sometimes include a checksum line for the bundler gem itself
  depending on whether this condition evaluates to `true`.

  https://github.com/ruby/rubygems/blob/34d19fa8a3f84c50e2ba65e0f39c80045e7cbfb8/bundler/lib/bundler/lockfile_generator.rb#L106

  ### Solution

  We can modify the spec helper `checksums_section_when_enabled` to
  automatically append a checksum entry for bundler whenever necesary.

ruby/rubygems@2a5019cac6
- ### Problem

  This test breaks whenever checksums are computed. It didn't break
  before because the gemfile in this test doesn't include any gems
  (only git gems) and therefore checksum is skipped.

  ### Context

  This test was added in ruby/rubygems@c19a9f2ff71 to ensure Bundler will not load
  "digest". I don't think this test really works as it will break
  as soon as you had a regular gem in the gemfile test.
  https://github.com/ruby/rubygems/blob/34d19fa8a3f84c50e2ba65e0f39c80045e7cbfb8/spec/runtime/setup_spec.rb#L1354-L1355

  I'm being unlucky and it now fails because we compute a checksum
  for the "bundler" gem itself. Computing a checksum requires
  "rubygems/package", and down the line requires "digest".

  ### Solution

  For the sake of shipping this PR, I'm going to go workaround the
  problem and skip checksum so that "digest" is not loaded.

ruby/rubygems@699b01159c
OpenSSL's master branch is changing functions to return const pointers
where the returned objects are not meant to be modified by the caller.

Update ossl_*_new() to take const pointers accordingly. Unfortunately,
*_dup() in older versions of OpenSSL and in LibreSSL/AWS-LC take
non-const pointers, so const casts are required.

ruby/openssl@34c49e6c6c
ossl_ec_new() was removed in commit ruby/openssl@94aeab2f265d (pkey: simplify
ossl_pkey_new(), 2017-03-16), but it forgot to remove the declaration
while doing so.

ruby/openssl@faad7a0811
…OpenSSL 4.0

ASN1_STRING has been made opaque in OpenSSL's master branch. Use the
new accessor functions instead of accessing fields directly.

Other uses of ASN1_STRING fields were already updated in
<ruby/openssl#978>. This patch converts the
remaining ones, which require the new functions added in OpenSSL 4.0
and were not available at that time.

ruby/openssl@ebb505f217
…nSSL 4.0

OpenSSL master added support for RFC 7919 groups in TLS 1.2. They are
preferred over SSLContext#tmp_dh= or #tmp_dh_callback= values if the
client advertises them in the supported_groups extension.

ruby/openssl@3e01c802c9
…in OpenSSL 4.0 FIPS

OpenSSL 4.0.0 added a check for Password-Based Key Derivation Function 2
(PBKDF2) to require the minimal password length 8 in FIPS by the following
commit.
openssl/openssl@71ed0fc

This commit fixes the following test failure in OpenSSL 4.0 FIPS by changing
testing password length from 6 to 8..

```
1) Error: test_private_encoding_encrypted(OpenSSL::TestPKeyRSA): OpenSSL::PKey::PKeyError: i2d_PKCS8PrivateKey_bio: encrypt error
/home/runner/work/openssl/openssl/test/openssl/test_pkey_rsa.rb:465:in `private_to_der'
/home/runner/work/openssl/openssl/test/openssl/test_pkey_rsa.rb:465:in `test_private_encoding_encrypted'
     462:
     463:   def test_private_encoding_encrypted
     464:     rsa = Fixtures.pkey("rsa2048")
  => 465:     encoded = rsa.private_to_der("aes-128-cbc", "abcdef")
     466:     asn1 = OpenSSL::ASN1.decode(encoded) # PKCS #8 EncryptedPrivateKeyInfo
     467:     assert_kind_of OpenSSL::ASN1::Sequence, asn1
     468:     assert_equal 2, asn1.value.size
Error: OpenSSL::PKey::PKeyError: i2d_PKCS8PrivateKey_bio: encrypt error
```

ruby/openssl@69f8cd1af1
We have the global register allocator now and don't need to thread everything through manually as block params. Simplify HIR construction.
This fixes a SIGABRT of Assertion Failed: RCLASS_ALLOCATOR:!RCLASS_SINGLETON_P(klass)
by explicitly adding no-op entries, rather than leaving the line empty,
which may seem like lines that have been deleted.
necojackarc/auto-request-review#135 fixes
last_files_match_only. Let's use a fork to fix it until it gets merged.
Outputs the number of GC cycles that are moving.

ruby/mmtk@fef8f04186
…_get

Initialize `entry` and `var` to NULL. They are assigned inside
RB_VM_LOCKING() but used after it, and the compiler cannot prove the
locked block always executes.
Initialize `c` and `encidx` to 0. They are assigned inside
`if (n >= 0)` and the following `if (n <= 0)` calls rb_raise, but the
compiler cannot see through the noreturn guarantee.
Initialize `end_cursor` to 0. It is guarded by `end_found` but the
compiler cannot prove `end_found` is always true when `end_cursor` is
read.
"Sync git.ruby-lang.org" and "Push PR notes to GitHub" steps can
fail due to transient issues, which blocks execution of all
subsequent steps. Use continue-on-error so the rest of the workflow
still runs, and add a "Check for failures" step at the end to ensure
the overall CI status is still red when either step fails.

example:
https://github.com/ruby/ruby/actions/runs/23825370964/job/69447008480
https://github.com/ruby/ruby/actions/runs/23671724888/job/68966478448
When the caller passes a block to a method that either rejects blocks
(`&nil` parameter, `accepts_no_block`) or doesn't use them (`use_block`
is false), ZJIT now falls back to the interpreter instead of compiling
a direct send. This ensures:

1. Methods defined with `&nil` properly raise ArgumentError
2. Unused block warnings are properly emitted

Previously, ZJIT would compile these sends directly, skipping the
block validation and warning logic that the interpreter handles.
@pull pull bot locked and limited conversation to collaborators Apr 1, 2026
@pull pull bot added the ⤵️ pull label Apr 1, 2026
@pull pull bot merged commit 7683ab7 into turkdevops:master Apr 1, 2026
1 check was pending
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants