Skip to content

[pull] master from ruby:master#774

Merged
pull[bot] merged 5 commits intoturkdevops:masterfrom
ruby:master
Feb 13, 2026
Merged

[pull] master from ruby:master#774
pull[bot] merged 5 commits intoturkdevops:masterfrom
ruby:master

Conversation

@pull
Copy link
Copy Markdown

@pull pull bot commented Feb 13, 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 : )

byroot and others added 5 commits February 12, 2026 20:35
[Feature #21788]

It allows monitor to access internal routines and remove some overhead.

Before:

```
ruby 4.0.0dev (2025-12-13T04:52:13Z master 71dd272) +YJIT +PRISM [arm64-darwin25]
Warming up --------------------------------------
               Mutex     2.111M i/100ms
             Monitor     1.736M i/100ms
Calculating -------------------------------------
               Mutex     25.050M (± 0.4%) i/s   (39.92 ns/i) -    126.631M in   5.055208s
             Monitor     19.809M (± 0.1%) i/s   (50.48 ns/i) -    100.672M in   5.082015s
```

After:

```
ruby 4.0.0dev (2025-12-13T06:49:18Z core-monitor 6fabf38) +YJIT +PRISM [arm64-darwin25]
Warming up --------------------------------------
               Mutex     2.144M i/100ms
             Monitor     1.859M i/100ms
Calculating -------------------------------------
               Mutex     24.771M (± 0.4%) i/s   (40.37 ns/i) -    124.342M in   5.019716s
             Monitor     23.722M (± 0.4%) i/s   (42.15 ns/i) -    118.998M in   5.016361s
```

Bench:

```ruby
require 'bundler/inline'

gemfile do
  gem "benchmark-ips"
end

mutex = Mutex.new
require "monitor"
monitor = Monitor.new

Benchmark.ips do |x|
  x.report("Mutex") { mutex.synchronize { } }
  x.report("Monitor") { monitor.synchronize { } }
end
```
* Revert "Revert pack/unpack support for LEB128"

This reverts commit 77c3a9e.

* Update specs for LEB128
…5647)

[Feature #21796] unpack variant `^` that returns the current offset
Make `ruby_modular_gc_init()` print all symbol import errors instead of
bailing on the first one. That way, GC authors don't have to fix one
symbol at a time.

Also accumulates and prints the total error count across all imports.

Eg.

On a sample GC ripped from the built-in GC implementation, renamed to
"testgc", with the symbols `rb_gc_impl_gc_enable` and
`rb_gc_impl_gc_disable` removed:

**Before:**

```
λ batify build → 74a4e2e → ~/.rubies/modgc/bin/ruby
ruby_modular_gc_init: rb_gc_impl_gc_enable function not exported by library /Users/prajjwal/.rubies/modgc/lib/ruby/gc/librubygc.testgc.bundle
```

**After:**

```
λ batify build → master → ~/.rubies/modgc/bin/ruby
ruby_modular_gc_init: rb_gc_impl_gc_enable function not exported by library /Users/prajjwal/.rubies/modgc/lib/ruby/gc/librubygc.testgc.bundle
ruby_modular_gc_init: rb_gc_impl_gc_disable function not exported by library /Users/prajjwal/.rubies/modgc/lib/ruby/gc/librubygc.testgc.bundle
ruby_modular_gc_init: found 2 missing exports in library /Users/prajjwal/.rubies/modgc/lib/ruby/gc/librubygc.testgc.bundle
```
@pull pull bot locked and limited conversation to collaborators Feb 13, 2026
@pull pull bot added the ⤵️ pull label Feb 13, 2026
@pull pull bot merged commit a88475d into turkdevops:master Feb 13, 2026
1 check failed
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.

5 participants