Jean Boussier

Rails core, Ruby committer, Senior Staff Engineer on Shopify's Ruby and Rails infrastructure team.

Jean Boussierbyroot@ruby.social
2025-04-26

I did some sort of rubber duck blogging about a patch I'm currently working on: byroot.github.io/ruby/performa

Jean Boussierbyroot@ruby.social
2025-03-26

@stevenharman @floehopper 2.2.0 is out.

Thanks for helping fixing the CI.

Jean Boussierbyroot@ruby.social
2025-03-24

@floehopper @stevenharman

I tried to dig into the test suite issue a while ago, but didn't find the issue after a few hours: github.com/rails/activerecord-

If someone can figure it out I'll merge the fix and cut a release.

Jean Boussierbyroot@ruby.social
2025-03-21

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

byroot.github.io/performance/2

Jean Boussierbyroot@ruby.social
2025-03-04

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.

byroot.github.io/ruby/performa

Jean Boussierbyroot@ruby.social
2025-02-27

@kmcphillips Thanks!

Jean Boussierbyroot@ruby.social
2025-02-27

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:

byroot.github.io/ruby/performa

Jean Boussierbyroot@ruby.social
2025-02-25

@soaproot it all depends on what your threat model is.

But even if encryption within the datacenter is mandated, HTTP2 or even HTTPS isn't the only way to achieve it.

Jean Boussierbyroot@ruby.social
2025-02-24

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

byroot.github.io/ruby/performa

Jean Boussierbyroot@ruby.social
2025-02-09

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

byroot.github.io/ruby/performa

Jean Boussierbyroot@ruby.social
2025-01-29

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.

byroot.github.io/ruby/performa

Jean Boussierbyroot@ruby.social
2025-01-25

Before I can talk about Pitchfork, I obviously have to talk about fork.

If you ever did some system programming you likely won't learn much though.

byroot.github.io/ruby/performa

Jean Boussierbyroot@ruby.social
2025-01-24

@nateberkopec @getajobmike that's nice to hear, especially since gvl_timing probably has a bigger overhead than gvltools, because it does one subscription per thread rather than a single one.

Jean Boussierbyroot@ruby.social
2025-01-24

@getajobmike @sidekiq

> 1-5% overhead on a saturated multi-threaded process

To be entirely honest with you, this was from a very quick and dirty benchmark, I don't really have a proper figure.

I mostly meant to warn that it adds some overhead whenever the active thread switch, so depending on how fast this happens, it may impact perf.

But YMMV, best to benchmark yourself.

Jean Boussierbyroot@ruby.social
2025-01-23

@kerrick it's kinda my point that these aren't easy PRs because optimizing further without breaking compatibilty is non-trivial or impossible.

One example of that is the ActiveRecord::Attribute API, e.g. github.com/rails/rails/pull/53

I only managed to make small gains to it.

Jean Boussierbyroot@ruby.social
2025-01-23

@Schneems for the 50%, if you aren't doing significantly more IO than that, then you'll experience significant GVL contention if you're trying to use a threaded server, hurting your service latency.

As for the 95%, this one is more handwavy, but it is to say that until a dozen or so Ruby threads, using an async based system is unlikely to yield much benefits in term of throughput.

Jean Boussierbyroot@ruby.social
2025-01-23

I want to write a post about Pitchfork, but before I can get to that I need to share some thoughts.

I suspect this one may be more controversial than the optimizing JSON series 😅.

byroot.github.io/ruby/performa

Jean Boussierbyroot@ruby.social
2025-01-14

It is done, I finally concluded the ruby/json optimization series.

I hope you enjoyed it: byroot.github.io/ruby/json/202

Jean Boussierbyroot@ruby.social
2025-01-12

Here's most of the parsing optimization covered, only one extra part and the series should be over. But I have ideas of further topics.

byroot.github.io/ruby/json/202

Jean Boussierbyroot@ruby.social
2025-01-04

Part 5 is out, I'm finally done with the encoding side, so next time I can start talking about parsing:

byroot.github.io/ruby/json/202

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst