I'll be speaking at XO Ruby Vancouver on August 15th www.xoruby.com/event/vancou...
Vancouver
Coffee. Flannel. Van City, Eh.
xoruby.com
John Hawthorn
@jhawthorn.com
Writing code for @Shopify, Rails, and Ruby. Previously @GitHub. he/him | Victoria, BC | jhawthorn.com
I'll be speaking at XO Ruby Vancouver on August 15th www.xoruby.com/event/vancou...
Vancouver
Coffee. Flannel. Van City, Eh.
xoruby.com
Upgrade Rails immediately, kids, this is a big one. github.com/rails/rails/...
Possible arbitrary file read and remote code execution in Active Storage variant processing
### Impact In its default configuration, a Rails application that displays image variants may allow an unauthenticated attacker to read arbitrary files from the server, including the process envi...
github.com
Ruby 4.0.6 Released www.ruby-lang.org/en/news/2026... This is a routine update that includes bugfixes. We recommend upgrading your Ruby version at your earliest convenience.
Ruby 4.0.6 Released | Ruby
Ruby 4.0.6 has been released.
ruby-lang.org
> i'm going to become rich and famous after i invent a device that allows you to stab Claude Opus 4.8 in the face over the internet
If you haven't upgraded yet, Ruby 4.0's garbage collection is generally much faster than 3.4. This patch release fixes the one area there had previously been a notable regression (allocating/freeing Classes).
Ruby 4.0.4 Released www.ruby-lang.org/en/news/2026... This is a routine update that includes bugfixes. We recommend upgrading your Ruby version at your earliest convenience.
Ruby 4.0.4 Released www.ruby-lang.org/en/news/2026... This is a routine update that includes bugfixes. We recommend upgrading your Ruby version at your earliest convenience.
Ruby 4.0.4 Released | Ruby
Ruby 4.0.4 has been released.
ruby-lang.org
Made a new blurg post about AI + OSS security. I was going to just complain on here, but I figured a short blog post would be better for my complaining 😂 tenderlovemaking.com/2026/05/06/r...
Rails Security, AI, and IBB
For quite a few years the Rails project has been working with the Internet Bug Bounty (IBB). The IBB is an organization that awarded cash to security researchers that reported issues to OSS projects p...
tenderlovemaking.com
It's just a proof of concept, but this is how I wish Rust extensions for Ruby were written: github.com/tenderworks/...
GitHub - tenderworks/roost: Generate FFI bindings from Rust extensions
Generate FFI bindings from Rust extensions. Contribute to tenderworks/roost development by creating an account on GitHub.
github.com
Proud of this patch I landed to Ruby this week which makes constants inside of `class << self` scopes faster both in the interpreter and JITs. It's not the most complicated or even impactful, but something I've wanted to fix for years github.com/ruby/ruby/pu...
Use compile-time flag to determine when a singleton CREF is dynamic by jhawthorn · Pull Request #16604 · ruby/ruby
This aims to allow constant cache accesses inside a singleton CREF to use the same fastpath as most constant caches, without needing to re-check the CREF on every access. class Foo def self.foo1 ...
github.com
I've proposed adding $SECONDS, $RANDOM, and other bash features to Ruby bugs.ruby-lang.org/issues/21976
Feature #21976: Add $SECONDS, $RANDOM, and other bashisms - Ruby - Ruby Issue Tracking System
Redmine
bugs.ruby-lang.org
If the catcher sees his shadow there's 6 more weeks of spring training
Ruby 4.0.2 Released www.ruby-lang.org/en/news/2026... This is a routine update that includes a bugfix in YJIT for NoMethodError on Puma. We recommend upgrading your Ruby version at your earliest convenience.
Ruby 4.0.2 Released | Ruby
Ruby 4.0.2 has been released.
ruby-lang.org
The latest faker's version includes this improvement! Nothing like profiling your code to get some quick wins. Huge thanks to @jhawthorn.com for creating Vernier 🤓 hexdevs.com/posts/optimi...
Optimizing load time for faker-ruby
A quick win that made loading faker-ruby 19% faster.
hexdevs.com
Development of Ruby 4.1.0 started ``` ruby 4.1.0dev (2025-12-26T00:31:28Z master 290fa0d8b4) +YJIT +MN +PRISM [arm64-darwin25] ```
ZJIT is available starting in Ruby 4.0! Please try it out on your test suite, maybe in a staging environment, and let us know how it goes! railsatscale.com/2025-12-24-l...
ZJIT is now available in Ruby 4.0
ZJIT is now available with the release of Ruby 4.0. Here’s an update of our progress.
railsatscale.com
One thing I'm really excited about in Ruby 4.0 is that object allocation is going to get a nice speed boost
I made it easier to search Ruby's docs www.johnhawthorn.com/2025/searchi...
Searching Ruby's documentation - John Hawthorn
The official Ruby docs are at https://docs.ruby-lang.org/en/. This documentation (and any documentation built with rdoc 6.15.0 or greater) now can be searched using a query parameter. Check it out! ht...
johnhawthorn.com
I have a hard time placing exactly what it is, but something about `bat` and other "modern" TUI tools really rubs me the wrong way. They're clearly well made, I think it's more of an aesthetic thing where that is exactly what I was running away from by using command line tools.
I took some time to delve into my latest work on reducing Ractor contention. This time: Generic Instance Variables byroot.github.io/ruby/perform...
Unlocking Ractors: generic instance variables
In two previous posts, I explained that one of the big blockers for Ractors’ viability is that while they’re supposed to run fully in parallel, in many cases, they’d perform worse than a single thread...
byroot.github.io
One of the AI generated security reports attached a bunch of MD files, and this screenshot was taken from the end of one of them. This gives me lots of feelings, and none of them are good
Ruby 3.4.5 Released www.ruby-lang.org/en/news/2025... This is a routine update that includes bug fixes and GCC 15 support. We recommend upgrading your Ruby version at your earliest convenience.
Ruby 3.4.5 Released
ruby-lang.org
It's been a while since I've written about the innards of @compiler-explorer.com. xania.org/202506/how-c... has the details, some statistics and some fun war stories.
How Compiler Explorer Works in 2025 — Matt Godbolt’s blog
How we handle 92 million compilations a year without everything catching fire
xania.org
I just published "Implementing Embedded TypedData Objects" about a feature @byroot.bsky.social and I worked on for Ruby 3.3. A bit late, but better than never. railsatscale.com/2025-06-03-i...
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...
railsatscale.com
I'm a nervous flier, but fortunately I've downloaded the new season of Nathan Fielder's show "The Rehearsal" to distract me. No spoilers please, I want to go in blind