Jean Boussier

@byroot@ruby.social
609 Followers
104 Following
416 Posts
Rails core, Ruby committer, Senior Staff Engineer on Shopify's Ruby and Rails infrastructure team.
Twitterhttps://twitter.com/_byroot
GitHubhttps://github.com/byroot

I just published "Implementing Embedded TypedData Objects" about a feature @byroot and I worked on for Ruby 3.3. A bit late, but better than never.

https://railsatscale.com/2025-06-03-implementing-embedded-typeddata-objects/

Implementing Embedded TypedData Objects

We implemented a new feature to TypedData objects in Ruby, called embedded TypedData objects. TypedData objects are used across a wide variety of Ruby types, such as Time, Enumerator, and Method. This feature improves allocation speed and runtime performance, while decreasing memory usage. In this blog post, we’ll look at what TypedData objects are under the hood, how embedded TypedData objects work, and the performance impacts of embedded TypedData objects.

Rails at Scale

I wrote a post to braindump what I'm currently working on: allowing lock-free access to class instance variables from Ractors.

https://byroot.github.io/ruby/performance/2025/05/24/unlocking-ractors-class-variables.html

Unlocking Ractors: class instance variables

In a previous post about ractors, I explained why I think it’s really unlikely you’d ever be able to run an entire application inside a ractor, but that they could still be situationally very useful to move CPU-bound work out of the main thread, and to unlock some parallel algorithm.

byroot’s blog

I just released autolib, a gem to set up autoloads for the standard library.
https://rubygems.org/gems/autolib

It defines a b.rb, so you can use `ruby -rb` to enable it, e.g.:

$ ruby -rb -e 'puts Net::HTTP.get(URI("https://www.ruby-lang.org/en/downloads/"))[/The current stable version.*/]'
The current stable version is 3.4.3.

autolib | RubyGems.org | your community gem host

I did some sort of rubber duck blogging about a patch I'm currently working on: https://byroot.github.io/ruby/performance/2025/04/26/unlocking-ractors-object-id.html
Unlocking Ractors: object_id

In a previous post about ractors, I explained why I think it’s really unlikely you’d ever be able to run an entire application inside a ractor, but that they could still be situationally very useful to move CPU-bound work out of the main thread, and to unlock some parallel algorithm.

byroot’s blog

Some personal thoughts on the usability of MySQL and PostgreSQL protocols:

https://byroot.github.io/performance/2025/03/21/database-protocols.html

Database Protocols Are Underwhelming

If you’ve been in this trade for a while, you have probably seen dozens of debates on the merits and problems of SQL as a relational database query language. As an ORM maintainer, I have a few gripes with SQL, but overall it is workable, and anyway, it has so much inertia that there’s no point fantasizing about a replacement.

byroot’s blog

Here we go. That one I really needed to get off my chest for the better part of a year, so I feel relieved now.

It's really long but hopefully not too hard to follow.

https://byroot.github.io/ruby/performance/2025/03/04/the-pitchfork-story.html

The Pitchfork Story

A bit more than two years ago, as part of my work in Shopify’s Ruby and Rails Infrastructure team, I released a new Ruby HTTP server called Pitchfork.

byroot’s blog

This is the last subject I wanted to talk about before I can start talking about Pitchfork itself.

What I think Ractors are useful for, and why that isn't writing web servers:

https://byroot.github.io/ruby/performance/2025/02/27/whats-the-deal-with-ractors.html

What’s The Deal With Ractors?

I want to write a post about Pitchfork, explaining where it comes from, why it is like it is, and how I see its future. But before I can get to that, I think I need to share my mental model on a few things, in this case, Ractors.

byroot’s blog

Continuing my series to give context on Pitchfork design, why I think HTTP2 support isn't important (for a Ruby application server).

https://byroot.github.io/ruby/performance/2025/02/24/http2-past-the-load-balancer.html

There Isn’t Much Point to HTTP/2 Past The Load Balancer

I want to write a post about Pitchfork, explaining where it comes from, why it is like it is, and how I see its future. But before I can get to that, I think I need to share my mental model on a few things, in this case, HTTP/2.

byroot’s blog

One more entry in my series to give context to Pitchfork design.

https://byroot.github.io/ruby/performance/2025/02/09/guard-rails-are-not-code-smells.html

Guardrails Are Not Code Smells

I want to write a post about Pitchfork, explaining where it comes from, why it is like it is, and how I see its future. But before I can get to that, I think I need to share my mental model on a few things, in this case, resiliency.

byroot’s blog

I wrote down my personal thoughts on whether it's worth removing Ruby's GVL and what it would take.

I wanted to talk about Ractors too, but this is already too long, so that's for another time.

https://byroot.github.io/ruby/performance/2025/01/29/so-you-want-to-remove-the-gvl.html

So You Want To Remove The GVL?

I want to write a post about Pitchfork, explaining where it comes from, why it is like it is, and how I see its future. But before I can get to that, I think I need to share my mental model on a few things, in this case, Ruby’s GVL.

byroot’s blog