Post

> And TruffleRuby, unlike JRuby, keeps a global interpreter lock for Ruby code That's incorrect, TruffleRuby doesn't have a GVL for Ruby code for 10+ years. What you likely see is a C extension not marked as Ractor-safe or Thread-safe, and that then uses a C extension lock for compatibility.

There is a way to force all C extensions to not use a lock: github.com/truffleruby/... Though clearly it is better if the C extensions declare themselves as thread-safe, which many popular extensions do in recent versions. See bsky.app/profile/ereg... which is my recent talk on this very subject.

Benoit Daloze@eregon.me

Here are the slides for my talk "Running Native Extensions and Ruby Code in Parallel Threads" at #EuRuKo 2026: eregon.me/blog/assets/...

You were right, and it's 5 of 7 here. Campfire's TruffleRuby lane loads: declared — puma, bcrypt, nio4r, json, openssl not — sqlite3, nokogiri sqlite3 is the hot one (a few hundred rows/request). --cexts-lock=false: 432 → 1,078 req/s at 5 threads