Ruby Weekly
Plus mame's 51-language quine clique, Campfire in a 5MB binary, and how Norfolk Island broke a gem.

#​815 — September 3, 2026

Read on the Web

Together with  FastRuby.io

Ruby Weekly

ZJIT 🤝 GC: Inlining GC Fastpath in ZJIT — JIT compilation first came to CRuby eight years ago, but the garbage collector has remained opaque to CRuby's JITs, with every allocation requiring a function call. Now, ZJIT can inline allocations, yielding a notable performance boost. Fingers crossed for Ruby 4.1!

Peter Zhu

💡 On Bluesky, Benoit Daloze noted that TruffleRuby has been doing this for a decade, one of many reasons it's such a fast implementation!

🚨 We Give Your Auditors VEX, Not a Scanner Dump — We map your images, runtimes, and K8s workloads against CISA's KEV catalog, decide which findings actually impact your code, and issue the verdicts as VEX statements. Rails 7.2 is already EOL and 8.0 is next: Nov 7! What else is a risk in production?

FastRuby.io® | Infrastructure Assessment sponsor

Campfire Now Works on Spinel (Mostly) — Sam's work compiling Rails apps to run on Matz's Spinel Ruby AOT compiler has yielded a Campfire 'that chats' in a 5MB binary. Far from 100% complete, but you can grab it and try it for yourself.

Sam Ruby

⚡️ IN BRIEF:

🔒 A Critical Rails Vulnerability in Attackers' Crosshairs — Remember the major Active Storage vulnerability (dubbed KindaRails2Shell) from late July? It's now being actively exploited, and VulnCheck reckoned, back in early August, that patching may not be enough if your secrets leaked first.

Ionut Arghire (Security Week)

Adventures in Daylight Saving, Norfolk Island, and Time Zone Math — More timezone quirks (don't we love 'em?) including how Europe/Dublin's 'inverted' DST scheme can make Ruby's dst? disagree with itself, and why Norfolk Island's permanent 30 minute offset change broke a gem.

Daniel Doubrovkine

AI Shouldn't Cost More Than It Saves — We can find where LLMs pay off, validate with real data, and tune for cost/effectiveness. Need help? Let's talk.

SINAPTIA sponsor

📺 Charles Nutter Tells the JRuby Story – An hour long interview with JRuby's maintainer on the project's past, present and future, plus a little myth debunking. Technology for Humans

📄 Solid Queue Batches: Evolution and Architecture – How Solid Queue tracks batch completion without hammering a single database row, by the dev who built it. JP Camara

📄 Using Rails for Marketing Sites in the AI Era? – Two developers debate the idea. Adam McCrea and Jon Sully

📄 Using Ruby to Set the Status Line in Claude Code Lucian Ghinda

🛠 Code & Tools

ArchSpec: Executable Architecture Specs for Ruby Apps — An architecture linter for any Ruby codebase. Declare components and boundaries in a single spec, then changes can be checked in CI, with no AI and no app boot involved. Presets are included for Rails, hexagonal and modular monoliths. If you remember Packwerk, this goes a bit further.

Carmine Paolino

APM for Ruby on Rails. One Gem, Every Feature, One Bill — Errors, N+1 queries, slow SQL, Sidekiq jobs and host metrics. Every feature on every plan. Two-minute install.

AppSignal sponsor

Ferrum 0.18: The High-Level API to Control Chrome in Ruby — A long standing library that drives Chrome over CDP (no Selenium needed). 0.18 adds Ferrum::Worker for talking to Workers and Service Workers, an API for reading the CDP accessibility tree, and thread safety improvements. (Yes, we mentioned this release last week, but I only just noticed it deserved a full writeup!)

Dmitry Vorotilin and RubyCDP team

💡 Capybara users also get Cuprite 0.18 (the Ferrum-powered Chrome driver for Capybara) today, adding real drag-and-drop events and initial shadow DOM support.

MiniMagick 5.4: A Mini Replacement for RMagick — For when you don't need the full power of RMagick and just need ImageMagick's features for resizing, rotating, converting, etc. v5.4 adds a feature to pass open file descriptors in, rather than writing/reading a temporary file.

Marohnić et al.

Vessel 0.3: Fast High-Level Web Crawling Framework — Ruby's answer to Scrapy is back with the first release in five years. Pages can now be fetched using Chrome via Ferrum or plain HTTP via Mechanize, plus we get proxy rotation, a middleware pipeline, and more.

Dmitry Vorotilin

  • Bullet 8.2 – The N+1 query detector gains thread-safe pause, resume and skip APIs, plus Ruby 4 support.

  • rubocop-graphql 1.8 – Three new cops for graphql-ruby schemas, and lazy cop loading for faster boot time.

  • Graphiti 2.0 – Sits on top of your models and exposes them over a JSON:API-compliant interface.

  • Alba 4.0 – A backwards-incompatible release for the JSON serializer that sweeps out long-deprecated APIs.

📰 Classifieds

🧰 APM for Ruby and Rails: Errors, N+1s, slow SQL, Sidekiq jobs and host metrics in one gem. 30-day trial, no card.


Building a reporting dashboard in Rails? TimescaleDB adds time-series analytics to your Postgres, so it stays fast as data grows.

🪄  Join the Quine Clique

We've previously written (at the end of issue 805) about Ruby core team member Yusuke 'mame' Endoh and his fantastic code experiments and IOCCC entries.

Among numerous Ruby projects, Yusuke is known for Quine Relay, a Ruby program that generates a Rust program which then continues through 128 different languages before a REXX program generates the original Ruby program again.

Now he's back with Quine Clique, an even more significant undertaking written in Ruby that's both a standard quine and able to produce a quine in any of 50 different languages. And then, those quines have the same featureset!

▶️ Yusuke has also shared a 9-minute video showing off the concept, if you don't want to run it for yourself.

Issue 814 #815