Joshua Young's Avatar

Joshua Young

@joshuay03.bsky.social

Software Engineer at Buildkite, Rubyist, Rails Issues team member, Puma maintainer, and OSS contributor.

140 Followers  |  137 Following  |  46 Posts  |  Joined: 03.11.2024  |  2.7338

Latest posts by joshuay03.bsky.social on Bluesky

Preview
ractor-shim/lib/ractor/shim.rb at 69d4d568fdac3f212de3e7d7c3133f31564dc4ec Β· eregon/ractor-shim A shim to define Ractor by using Thread, if not already defined - eregon/ractor-shim

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.

01.11.2025 04:50 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
class Ractor::Port - Documentation for Ruby 3.5 class Ractor::Port: Port objects transmit messages between Ractors.

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    πŸ“Œ 0
Release v0.8.0 Β· joshuay03/atomic-ruby Fix Ractor safety by @jhawthorn in #1 Make ArgumentError messages consistent Implement write barriers for Atom by @byroot in #2 New Contributors @byroot made their first contribution in #2 @jhawt...

github.com/joshuay03/at...

01.11.2025 04:37 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I 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    πŸ“Œ 0
Fix Ractor safety by jhawthorn Β· Pull Request #1 Β· joshuay03/atomic-ruby Unshareable objects can&#39;t be sent to ractors as today these objects are unsafe to concurrently modify. In the future (under Ractor-local GC) this will be even more broken and reading from the o...

Yes! 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    πŸ“Œ 0

2. 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    πŸ“Œ 0

1. 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    πŸ“Œ 0
Preview
GitHub - joshuay03/ractor-pool: A thread-safe, lock-free pool of Ractor workers with a coordinator pattern for distributing work A thread-safe, lock-free pool of Ractor workers with a coordinator pattern for distributing work - joshuay03/ractor-pool

Announcing 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 🀞🏽

29.10.2025 16:48 β€” πŸ‘ 23    πŸ” 3    πŸ’¬ 2    πŸ“Œ 0

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    πŸ“Œ 0
Preview
Fix segfault when moving nested objects between ractors during GC by joshuay03 Β· Pull Request #14947 Β· ruby/ruby Fixes a segmentation fault when moving nested objects between ractors with GC stress enabled and YJIT. The issue appears to be a timing problem in the ractor move process. When moving objects, move...

I'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.

25.10.2025 05:06 β€” πŸ‘ 5    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Time for a holiday?

07.10.2025 12:24 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
#railsworld | 🍯 Joshua Young Attended the third edition of Rails World earlier this month along with Jason and JuliÑn, back in Amsterdam once again! A big thank you to Buildkite for sponsoring the three of us to attend this year....

September flew by pretty quickly… I kicked it off by attending #RailsWorld!

www.linkedin.com/posts/joshua...

29.09.2025 11:55 β€” πŸ‘ 5    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Was it the colonoscopy room?

22.09.2025 10:12 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

I’ve added support for distributed deployments: github.com/joshuay03/di...

Couple of ideas to follow up on:
- Profile dashboard
- Profile comparisons

22.09.2025 10:05 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

This is from a Datadog APM notebook I used to monitor the impact.

30.08.2025 23:21 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Haha yep, I have to remind myself from time to time as well.

30.08.2025 12:25 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Yes, 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    πŸ“Œ 0
Post image

Satisfying 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    πŸ“Œ 0

It 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    πŸ“Œ 0

What a run! Hope you enjoy some well deserved time off!

09.08.2025 05:59 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Allow sending SIGTERM to workers on timeout by schneems Β· Pull Request #157 Β· zombocom/rack-timeout When rack-timeout fires then it can put an application in a &quot;bad&quot; state. This is due to https://www.schneems.com/2017/02/21/the-oldest-bug-in-ruby-why-racktimeout-might-hose-your-server/....

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

05.08.2025 10:52 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

TIL πŸ‘€ Thanks!

26.07.2025 08:53 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Yes, 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 😊

26.07.2025 08:01 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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    πŸ“Œ 0

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

26.07.2025 04:24 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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    πŸ“Œ 0

Young* πŸ™‚

10.05.2025 11:14 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
#rubykaigi | 🍯 Joshua Young Ruby friends, old and new, at #RubyKaigi 2025β€”another amazing edition of the largest and most prestigious Ruby conference. I love this community and this event, and hope to be back every year ❀️ Hug...

Had a blast at #RubyKaigi 2025!

www.linkedin.com/posts/joshua...

05.05.2025 04:00 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

01.05.2025 16:08 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image Post image Post image

#RubyKaigi late night with #RubyFriends !

16.04.2025 16:23 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

@joshuay03 is following 20 prominent accounts