Skip to content
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

Get common C-extensions to declare rb_ext_ractor_safe(true) #3672

Open
mohamedhafez opened this issue Sep 19, 2024 · 2 comments
Open

Get common C-extensions to declare rb_ext_ractor_safe(true) #3672

mohamedhafez opened this issue Sep 19, 2024 · 2 comments
Labels

Comments

@mohamedhafez
Copy link
Contributor

mohamedhafez commented Sep 19, 2024

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 as rb_ext_ractor_safe(true). This issue will track the progress of all those issues.

Still need to be reviewed for Ractor-safety


Reviewed for Ractor-safety, waiting for PR
none currently


Reviewed for Ractor-safety, PR submitted


PR merged! 🎉


Gems that will need some work before we can set rb_ext_ractor_safe(true)

@flavorjones
Copy link
Contributor

👋 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.

@mohamedhafez
Copy link
Contributor Author

mohamedhafez commented Sep 20, 2024

@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))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants