Ah it has `#<<`, but hasn't aliased it to `#send`: github.com/eregon/racto...
Also, probably doesn't matter, but it's the other way around in CRuby i.e., `#<<` is the alias.
@joshuay03.bsky.social
Software Engineer at Buildkite, Rubyist, Rails Issues team member, Puma maintainer, and OSS contributor.
Ah it has `#<<`, but hasn't aliased it to `#send`: github.com/eregon/racto...
Also, probably doesn't matter, but it's the other way around in CRuby i.e., `#<<` is the alias.
Has ractor-shim implemented `Ractor::Port#send`? That could be why if not. Ref: docs.ruby-lang.org/en/master/Ra...
01.11.2025 04:45 β π 0 π 0 π¬ 1 π 0I don't have an answer, but I'm figuring that out myself with what I'm building (not ready to share yet). There's a point where the copying/moving/freezing (i.e., message passing) overhead might outweigh the parallelisation benefits. The answer will vary by the payload and the type of work.
31.10.2025 07:14 β π 2 π 0 π¬ 0 π 0Yes! I missed that. Clearly my Ractor coverage is lacking... @jhawthorn.com has already sent a fix: github.com/joshuay03/at.... I'll get that merged and released soon.
31.10.2025 07:00 β π 1 π 0 π¬ 1 π 02. The thing that clicked for me was when @jhawthorn.com referred to a ractor as a no-GVL block at Rails World. Rather than chucking a whole Rails app in there, you could find CPU intensive code paths that would choke the GVL, and delegate them to a ractor or few. Think complex parsing of strings.
30.10.2025 07:07 β π 3 π 0 π¬ 0 π 01. Could you clarify? I'm not aware of Ractors needing a C extension to work. Main limitation: C extension gems must mark themselves Ractor-safe. Shareable requirement on init/send exists, plus new semantics like move (may not last: bsky.app/profile/byro...). Docs: docs.ruby-lang.org/en/master/ra...
30.10.2025 07:07 β π 0 π 0 π¬ 2 π 0Announcing RactorPool: github.com/joshuay03/ra...
Extracted from a project I'm building with Ractors. Currently requires Ruby 3.5 (3.5.0.dev). Goal is to have it stable for Ruby 4.0, when Ractors will be less experimental π€π½
Ah thatβs unfortunate, that does seem like a tricky edge caseβ¦ Being able to move in my case seems to be quite a bit more performant than both deeply copying (not surprising), and making shareable and duping just the objects I need to mutate in the receiver. Although, I havenβt properly benchmarked.
25.10.2025 12:07 β π 0 π 0 π¬ 1 π 0I'm building something with Ractors and found a bug. Tried my bestβ’οΈ to fix it: github.com/ruby/ruby/pu...
Side note: Might just be me, but as a non-frequent contributor, building ruby/ruby and running tests seems to be much more convenient and efficient than it was a couple years ago.
Time for a holiday?
07.10.2025 12:24 β π 1 π 0 π¬ 0 π 0September flew by pretty quicklyβ¦ I kicked it off by attending #RailsWorld!
www.linkedin.com/posts/joshua...
Was it the colonoscopy room?
22.09.2025 10:12 β π 2 π 0 π¬ 1 π 0Iβve added support for distributed deployments: github.com/joshuay03/di...
Couple of ideas to follow up on:
- Profile dashboard
- Profile comparisons
This is from a Datadog APM notebook I used to monitor the impact.
30.08.2025 23:21 β π 0 π 0 π¬ 1 π 0Haha yep, I have to remind myself from time to time as well.
30.08.2025 12:25 β π 0 π 0 π¬ 0 π 0Yes, at the very end of a before_forkβafter doing any necessary closing of connections, shutting down threads, etc.
30.08.2025 10:55 β π 1 π 0 π¬ 1 π 0Satisfying memory and CPU improvements after enabling Puma preloading + Process.warmup on one of Buildkite's services (our agent shard). Just rolled this out to all services - keen to see the broader impact!
30.08.2025 08:36 β π 19 π 3 π¬ 3 π 0It probably hasnβt been released yet. I would first check if the change has been back-ported to the `8-0-stable` branch, and then whether it was actually included in a release. If not, and itβs already on the branch, itβll probably be released in a 8.0.x at some point, else 8.1.x.
19.08.2025 22:29 β π 1 π 0 π¬ 1 π 0What a run! Hope you enjoy some well deserved time off!
09.08.2025 05:59 β π 1 π 0 π¬ 0 π 0> I believe `Rack::Timeout` does trigger a full process shutdown after killing a thread.
You need to opt in by enabling `term_on_timeout` (github.com/zombocom/rac...).
TIL π Thanks!
26.07.2025 08:53 β π 0 π 0 π¬ 0 π 0Yes, just 3-12 bytes:
- github.com/puma/puma/bl...
- github.com/puma/puma/bl...
Good point, mmap + polling + small messages is probably less efficient than using pipes in this case. I'm still going to give it a go to scratch that itch π
Iβm curious how Puma would perform with mmap instead of pipes, which it relies on heavily for IPC in cluster mode: github.com/puma/puma/bl....
26.07.2025 04:24 β π 1 π 0 π¬ 2 π 0I wrote (or rewrote) some gems to get better at Ruby C extensions and learn about these topics (CAS and mmap):
- github.com/joshuay03/at...
- github.com/joshuay03/mm...
I'm curious about this too. With YJIT in maintenance mode, bug fixes, UX improvements, etc., are probably welcome (a colleague recently found and fixed one). But with ZJIT being greenfield WIP, I'm not so sure. Completely understandable if that's the case though.
13.06.2025 22:08 β π 0 π 0 π¬ 1 π 0Young* π
10.05.2025 11:14 β π 2 π 0 π¬ 1 π 0Had a blast at #RubyKaigi 2025!
www.linkedin.com/posts/joshua...
Great talk! Though my favorite is still the one you gave at RailsConf 2022.
As a noob OSS contributor and maintainer, Iβve learned a lot from your talks about the "duties" and "responsibilities" of both sides in OSS interactionsβIβm trying to apply those principles in my own work as well.
#RubyKaigi late night with #RubyFriends !
16.04.2025 16:23 β π 4 π 1 π¬ 0 π 0