I agree to make noinline the default for 4.1. Maybe we can use one of the alternatives for static x86 builds at a later time. I think the reason `GET_EC()` is a hotspot is not only the dynamic TLS access but the compiler optimizations th...luke-gru (Luke Gruber)
Something like this should definitely work too, and it's arguably safer as it doesn't rely on the compiler's optimizations. ```patch + // Under M:N threads the native thread can change in the middle of a C + // function. The comp...luke-gru (Luke Gruber)
I agree something needs to be done about this. I wonder if something like this would work (it appears to): ```patch +// With -fPIC, the default TLS model (general-dynamic) gets the address of a +// TLS variable from __tls_get_addr()...luke-gru (Luke Gruber)
## Background To share objects between Ractors without passing them explicitly with `Ractor#send`, you can use shareable objects. Certain objects are always shareable (such as nil, true, false, Symbols, etc) but most aren't. To make a...luke-gru (Luke Gruber)
Thanks for the report. We're working on fixing this and I've created a [PR](https://github.com/ruby/ruby/pull/19283) for it. We've realized that the way Ractor shareability is checked when the object is not shareable but frozen is curren...luke-gru (Luke Gruber)
Thanks for reporting this. I have a [fix for this](https://github.com/ruby/ruby/pull/19146) but I'll need to discuss it with others first. If you see other assertion failures like this in Ruby 4.1.0dev with RUBY_DEBUG on, these failur...luke-gru (Luke Gruber)
I think nothing should be decided on this in isolation. We should discuss this and [22273](https://bugs.ruby-lang.org/issues/22273) together, as they are related as @shugo mentions.luke-gru (Luke Gruber)
I see that the return value of `pm_newline_list_init` is never checked (whether xcalloc succeeded), and on my machine (Arm64 macOS) `xcalloc` is plain old `calloc`, so it can fail without raising. Could this have anything to do with it?...luke-gru (Luke Gruber)
Currently, aliasing doesn't interact well with `Module#prepend` in my opinion. ### Example ```ruby module Kernel prepend(Module.new do def require(feature) puts "requiring feature (prepend): #{feature}" super...luke-gru (Luke Gruber)
I have a reproduction showing the issue: ```ruby module M def foo print "M#foo(orig)" end end class C; include M; end M.prepend(Module.new do def foo print "P#foo(" super print ")" end end) C.new....luke-gru (Luke Gruber)