-
Notifications
You must be signed in to change notification settings - Fork 193
Get common C-extensions to declare rb_ext_ractor_safe(true)
#3672
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
👋 Nokogiri maintainer here, I'm a Truffleruby contributor and supporter. Nokogiri is a large library, but I would like to make it better support ractors, so please consider my request in that issue to be: what specific use cases should we start with? If you're a user of ractors I'd love to chat with you about your concrete needs. |
@flavorjones So I'm not using Ractors, but in JRuby I have multiple threads repeatedly scraping the account pages of substitute teachers looking for newly posted available jobs at their school district (with the explicit, contractual permission of all parties involved). Each thread has it's own Nokogiri object, and is processing different document objects. I want each thread to be able to run with true concurrency, in parallel on different cores of a CPU, without locking globally each time a call is made into the Nokogiri C-extension (as is currently the case when I run the code with TruffleRuby). In C-Ruby, I would be trying to accomplish the exact same thing but with Ractors instead of threads. However that is not possible because Nokogiri objects can't be used inside of a Ractor currently and throws an error if you try (see sparklemotion/nokogiri#3283 (comment)) |
@eregon did TruffleRuby end up moving to a Also just wanted to verify that running |
No, it didn't, we tried but we found it rather incomplete. It needs changes in Prism.
Yes, I have a WIP PR for it: #3814 |
It looks like ActionView uses ripper in Rails < 8.0 (e.g. https://github.com/rails/rails/blob/v7.2.2.1/railties/lib/rails/source_annotation_extractor.rb), i believe as part of the process of rendering ERB files, so perhaps it's worth the effort to review that for Ractor safety and get it marked as Ractor-safe if possible? |
I don't know if you have seen but #2136 is done now, so truffleruby-dev can run C extensions in parallel. Regarding nkf and debug I think it doesn't really matter, those can execute with a global lock. |
@eregon I did see it! 🙌🙌 Amazing news, excited to give things another try when the next release comes around!! Ok so regarding this issue: I've removed debug, but regarding nkf, my understanding is that while getting it to be Ractor-safe would require upstream fixes that are unlikely to happen, we might already be at the point we can declare |
It would be useful if you try before the next release, e.g. with
I'm not sure, we would need to look in more details at nkf and that's not really a priority, part of the idea is that C extensions that are not really maintained and are not ractor/thread-safe like nkf just run with a lock and that's fine. |
Sure, that's understandable if There also doesn't seem to be any interest from the maintainers for brianmario/mysql2#1374, so maybe I should remove |
I think there is no harm to leave those issues opened and linked here, so fine as-is. |
@eregon done! So i guess the only thing really left to do here for TruffleRuby maintainers is threadsafety for |
In planning ahead to the near future when TruffleRuby can run C-extensions marked with
rb_ext_ractor_safe(true)
in parallel, I've been raising issues in common gems to try to nudge them to make their C-extensions Ractor-safe (most already are), and then submitting PR's to mark them asrb_ext_ractor_safe(true)
. This issue will track the progress of all those issues.Still need to be reviewed for Ractor-safety
Gems that will need some work before we can set
rb_ext_ractor_safe(true)
--cexts-lock=false
doesn't have any issues on my app personally though, so a promising sign at leastReviewed for Ractor-safety, waiting for PR
none currently
Reviewed for Ractor-safety, PR submitted
none currently
PR merged! 🎉
No interest shown from maintainers, and not very important anyway
The text was updated successfully, but these errors were encountered: