Skip to content

fix(deps): update dependency ruby to v4#53

Open
renovate[bot] wants to merge 1 commit intomainfrom
renovate/ruby-4.x
Open

fix(deps): update dependency ruby to v4#53
renovate[bot] wants to merge 1 commit intomainfrom
renovate/ruby-4.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented Apr 18, 2026

This PR contains the following updates:

Package Update Change Pending
ruby (source) major 3.4.94.0.2 4.0.3

Release Notes

ruby/ruby (ruby)

v4.0.2: 4.0.2

Compare Source

What's Changed

Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.

Full Changelog

v4.0.1: 4.0.1

Compare Source

What's Changed

Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.

Full Changelog

v4.0.0: 4.0.0

See also:

What's Changed

Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.

Full Changelog

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At 12:00 AM through 04:59 AM and 10:00 PM through 11:59 PM, Monday through Friday (* 0-4,22-23 * * 1-5)
    • Only on Sunday and Saturday (* * * * 0,6)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 18, 2026

Renovate PR Review Results

⚖️ Safety Assessment: ⚠️ Needs Manual Migration

🔍 Release Content Analysis

Major Changes in Ruby 4.0.0:

  • First major version release since Ruby 3.0 (December 25, 2025)
  • Introduction of Ruby::Box for object wrapping and ZJIT JIT compiler (experimental)
  • Ractor API cleanup: Removed Ractor.yield, Ractor#take, and close methods
  • Enhanced concurrency with fixes for Ractor deadlocks and race conditions
  • Improved error messages (ArgumentError now shows both caller and callee context)

Breaking Changes:

  1. Standard library removals:

    • CGI library removed (only cgi/escape remains)
    • SortedSet removed completely
    • Several gems moved to bundled gems: benchmark, fiddle, logger, ostruct, pstore, rdoc
  2. Core behavior changes:

    • Process::Status#& and #>> operators removed
    • Net::HTTP no longer auto-sets Content-Type header for requests with body
    • *nil no longer calls nil.to_a
    • Binding#local_variables excludes numbered parameters (_1, _2) and it
    • Lines beginning with &&, ||, and, or now continue the previous line
  3. Set class reimplemented in C:

    • Internal @hash instance variable no longer exists
    • #inspect output format changed from #<Set: {1, 2, 3}> to Set[1, 2, 3]
    • #to_set arguments deprecated
  4. API deprecations:

    • ObjectSpace._id2ref deprecated

Bug Fixes (4.0.1 and 4.0.2):

  • Fixed YJIT local variable corruption with fork/signal/ensure (#21941)
  • Fixed segfault with argument forwarding and splat (#21832)
  • Fixed GC crashes and memory allocation issues
  • Fixed encoding and threading issues
  • Parser fixes for Prism (new default parser)

Security Considerations:

  • No critical security CVEs mentioned in 4.0.0-4.0.2 releases
  • Bug fixes primarily address stability and correctness issues

🎯 Impact Scope Investigation

Direct Impact on Codebase:

  1. E2E Test File Requiring Update (e2e/tests/security/dynamic_linker_attack.yml:101-102):

    • Hardcoded Ruby version path 3.4.0 in expected error messages
    • Path will change from /mise/installs/ruby/current/lib/ruby/3.4.0/fiddle.rb to /mise/installs/ruby/current/lib/ruby/4.0.0/fiddle.rb
    • Action Required: Update expected stderr/output strings to match Ruby 4.0.0 paths
  2. Runtime Test Coverage (e2e/tests/runtime/ruby.yml):

    • Uses basic Ruby features: puts, require 'json', require_relative, classes, error handling
    • No breaking changes detected in tested features
    • All test cases use backward-compatible Ruby syntax and APIs
  3. Runtime Implementation (internal/sandbox/runtime.go:223-268):

    • Ruby runtime configuration is version-agnostic
    • Uses symlink /mise/installs/ruby/current (version-independent)
    • No code changes required
  4. Dependencies on Standard Library:

    • json - Core library, unaffected
    • fiddle - Moved to bundled gem but still included by default
    • ✅ No usage of removed libraries (CGI, SortedSet)
    • ✅ No usage of deprecated APIs (Process::Status#&, Net::HTTP auto-headers)

Compatibility Analysis:

  • Ruby code in E2E tests uses only stable, backward-compatible features
  • No reliance on breaking changes (Set internals, Binding API, splat behavior)
  • Test code does not use logical operator line continuation edge cases

💡 Recommended Actions

Required Changes:

  1. Update E2E Test File (Priority: High):

    File: e2e/tests/security/dynamic_linker_attack.yml
    Lines: 101-102
    
    Change:
    - stderr: "/mise/installs/ruby/current/lib/ruby/3.4.0/fiddle.rb:93:..."
    - output: "/mise/installs/ruby/current/lib/ruby/3.4.0/fiddle.rb:93:..."
    
    To:
    - stderr: "/mise/installs/ruby/current/lib/ruby/4.0.0/fiddle.rb:93:..."
    - output: "/mise/installs/ruby/current/lib/ruby/4.0.0/fiddle.rb:93:..."
  2. Verification Steps (Post-merge):

    • Run full E2E test suite: go test -tags e2e ./e2e/...
    • Verify all Ruby runtime tests pass
    • Verify security tests (especially dynamic_linker_attack) produce expected output
  3. Optional Improvements (Future consideration):

    • Consider making version paths in E2E tests more resilient using regex patterns instead of exact version strings
    • Monitor Ruby 4.0.3 release (marked as "Pending" in PR) for potential security fixes

Migration Complexity:

  • Low - Single file change required (1 test expectation update)
  • No production code changes needed
  • No API breaking changes affecting sandbox functionality

Rollback Plan:

  • If issues arise, revert Dockerfile change and E2E test update
  • Ruby 3.4.9 remains supported upstream through at least end of 2026

🔗 Reference Links

Generated by koki-develop/claude-renovate-review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants