<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Ruby Weekly</title>
    <description>A free, once–weekly e-mail round-up of Ruby news and articles.</description>
    <link>https://rubyweekly.com/</link>
    <item>
      <title>How fast can you actually patch Ruby?</title>
      <link>https://rubyweekly.com/issues/824</link>
      <description>

  

    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​824 — October 29, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://rubyweekly.com/link/192214/rss" style=" color: #0055bb;   "&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;🔒 Last Friday we sent out &lt;a href="https://rubyweekly.com/link/192215/rss" style=" color: #0055bb; font-weight: 600;   "&gt;a special issue about some CRuby security releases&lt;/a&gt; which fixed a few nasty regexp bugs. If you haven't updated yet, it's worth a read to see if you're affected and what to check!&lt;br&gt;__&lt;br&gt;&lt;em&gt;Your editor, Peter Cooper&lt;/em&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;Ruby Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/192172/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/cblgc1ggermkssfawdvg.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/192172/rss" title="paagman.dev" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;How Fast Can You Actually Patch Ruby?&lt;/a&gt;&lt;/span&gt; — When the Ruby security fixes shipped last week, Dennis timed how long they took to reach version managers, Docker images, CI services and hosts. The core team's image took eight minutes, while Docker's official image (Rails and Kamal's default) took ~16 hours.&lt;/p&gt;
  &lt;p&gt;Dennis Paagman &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 Things are improving, though, as Ruby core team members now have commit access to Docker's Ruby image repo and are &lt;a href="https://rubyweekly.com/link/192173/rss" style=" color: #0055bb; font-weight: 600;   "&gt;looking into automating updates&lt;/a&gt;. Meanwhile, Greg Molnar shows how to &lt;a href="https://rubyweekly.com/link/192174/rss" style=" color: #0055bb; font-weight: 600;   "&gt;build your own image locally and deploy it with Kamal&lt;/a&gt;.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://rubyweekly.com/link/192171/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/999fbf1c.png" width="110" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/192171/rss" title="www.tigerdata.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Your Dashboard Shouldn’t Wait for a Cron Job&lt;/a&gt;&lt;/span&gt; — The nightly job rolls up yesterday’s rows so the dashboard loads. Numbers lag a day and the job keeps growing. TimescaleDB continuous aggregates refresh rollups inside Postgres, so ActiveRecord reads fresh totals. &lt;a href="https://rubyweekly.com/link/192171/rss" style=" color: #0055bb;   "&gt;Get $1000 credit to start&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Tiger Data (creators of TimescaleDB) &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/192175/rss" title="island94.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;Bad Requests and the Dream of a Quiet Rails App&lt;/a&gt;&lt;/span&gt; — Requests for &lt;code&gt;/.env&lt;/code&gt; and &lt;code&gt;/wp-admin&lt;/code&gt;, binary bytes in &lt;code&gt;User-Agent&lt;/code&gt; headers, made-up MIME types… Ben walks through the Rails middleware stack to show why some junk requests become 500s, and why even 'handled' ones can still set off your error monitor.&lt;/p&gt;
  &lt;p&gt;Ben Sheldon &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/192176/rss" title="rubycentral.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;What's New at RubyGems.org: Ruby Central's Changelog Returns&lt;/a&gt;&lt;/span&gt; — Ruby Central catches us up on RubyGems.org and Bundler 4.1 work. Its AI scans of popular gems are a highlight: reviewers rejected 90% of the findings they looked into, though one was a critical &lt;a href="https://rubyweekly.com/link/192177/rss" style=" color: #0055bb;   "&gt;auth bypass in &lt;code&gt;rubyntlm&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Kirk Haines (Ruby Central) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/192178/rss" title="blog.julik.nl" style=" color: #0055bb;    font-size: 1.05em;"&gt;Thank You, But I Prefer It My Way&lt;/a&gt;&lt;/span&gt; — If an LLM can just rewrite a library, is it worth persuading a maintainer about your PR or do you just route around it? Julik ponders the complexities and offers some practical ways forward.&lt;/p&gt;
  &lt;p&gt;Julik Tarkhanov &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/192179/rss" title="paolino.me" style=" color: #0055bb;    font-size: 1.05em;"&gt;I Get 215 GitHub Notifications a Day, So I Built a Bot to Triage Them&lt;/a&gt;&lt;/span&gt; — A look at how the creator of &lt;a href="https://rubyweekly.com/link/192216/rss" style=" color: #0055bb;   "&gt;RubyLLM&lt;/a&gt; built a RubyLLM-powered agent to label issues and PRs, reply only when useful, and sort the rest onto a board.&lt;/p&gt;
  &lt;p&gt;Carmine Paolino &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/192180/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Parsing JSON-Structured Docker Logs with the OpenTelemetry Collector&lt;/a&gt; – How 37signals unwraps the JSON-in-JSON logs from its Kamal-deployed Rails apps. &lt;cite&gt;Lewis Buckley (37signals)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/192181/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Benchmarking Campfire with Many Users&lt;/a&gt; – Sam load-tests Campfire with up to 3,000 users, opens three PRs, and compares Rails with his Roundhouse-transpiled build on Falcon. &lt;cite&gt;Sam Ruby&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/192182/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;React Server Components on a Gumroad Fork: From 53 to 86 on Mobile PageSpeed&lt;/a&gt; – Compares live RSC and Inertia versions of a product page, using the commercial &lt;a href="https://rubyweekly.com/link/192183/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;React on Rails Pro&lt;/a&gt;. &lt;cite&gt;Justin Gordon (ShakaCode)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/192184/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Making AI Agents Safe to Retry&lt;/a&gt; – Moving an LLM agent into a Sidekiq job without retries repeating its actions. &lt;cite&gt;Mateus Pereira (FastRuby.io)&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/192185/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/jz0wih3pg2u5ksrgecxq.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/192185/rss" title="carton.dtcristo.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Carton: Real Boundaries for Ruby&lt;/a&gt;&lt;/span&gt; — Built on Ruby 4's experimental &lt;a href="https://rubyweekly.com/link/192186/rss" style=" color: #0055bb;   "&gt;&lt;code&gt;Ruby::Box&lt;/code&gt;&lt;/a&gt;, Carton enforces module boundaries at runtime where only what a 'carton' &lt;code&gt;export&lt;/code&gt;s is visible outside it, monkey patches to core classes stay contained, and each carton can bring &lt;a href="https://rubyweekly.com/link/192187/rss" style=" color: #0055bb;   "&gt;its own gem versions&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;David Cristofaro &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/192188/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;🚨 Rails 8.0 Support Ends Nov 7 | Get AI Upgrades on Autopilot&lt;/a&gt;&lt;/span&gt; — Our AI agent ships small upgrade PRs that pass your tests; nothing merges without you. &lt;a href="https://rubyweekly.com/link/192188/rss" style=" color: #0055bb;   "&gt;Join the beta waitlist&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;FastRuby.io® | AI-Native Rails Maintenance &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/192189/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Spree 6.0: A Rewrite of the Rails E-Commerce Platform&lt;/a&gt;&lt;/span&gt; — Marketplace, B2B, tax and inventory features are now in the open source core, carts and orders are separate models, and the checkout state machines are gone. Note that Rails now powers only the backend, with a React admin and Next.js storefront.&lt;/p&gt;
  &lt;p&gt;Spree Commerce &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/192190/rss" title="geneva-drive.dev" style=" color: #0055bb;    font-size: 1.05em;"&gt;GenevaDrive: Durable, Step-Based Workflows for Rails&lt;/a&gt;&lt;/span&gt; — Define multi-step workflows tied to a record, with waits, resumable steps over large collections, and signals from webhooks. State lives in your database, with steps surviving restarts and duplicate job runs being skipped.&lt;/p&gt;
  &lt;p&gt;Julik Tarkhanov &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;⏱️&lt;/span&gt; &lt;a href="https://rubyweekly.com/link/192191/rss" title="blog.rhannequ.in" style=" color: #0055bb;    font-size: 1.05em;"&gt;Horologium: Scientific Time Library for Ruby&lt;/a&gt;&lt;/span&gt; — A new gem, extracted from &lt;a href="https://rubyweekly.com/link/192192/rss" style=" color: #0055bb;   "&gt;Astronoby&lt;/a&gt;, that handles eight time scales including TAI, TT, TDB, UTC and UT1, plus leap seconds (which &lt;code&gt;Time&lt;/code&gt; can't represent) and precise Julian dates.&lt;/p&gt;
  &lt;p&gt;Rémy Hannequin &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;⭐ &lt;a href="https://rubyweekly.com/link/192193/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyGems and Bundler 4.1.0.beta3&lt;/a&gt; renames Bundler's new &lt;code&gt;override&lt;/code&gt; keys to &lt;code&gt;in:&lt;/code&gt; and &lt;code&gt;with:&lt;/code&gt;, and records overrides in a new &lt;code&gt;OVERRIDES&lt;/code&gt; section of &lt;code&gt;Gemfile.lock&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/192194/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Prosopite 2.5&lt;/a&gt; – N+1 query detector. Now suggests fixes, adds RSpec and Minitest assertions, and can ignore known N+1s while you adopt it gradually.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/192195/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;OmniAuth 2.2 / 2.3&lt;/a&gt; – Multi-provider auth. The first new minor versions since 2022 add &lt;code&gt;allowed_hosts&lt;/code&gt; and support for concurrent sign-ins.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/192196/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;The Git Gem 6.0&lt;/a&gt; – Ruby interface to the &lt;code&gt;git&lt;/code&gt; command line. A big breaking release that removes the old object model and requires Git 2.43+.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/192197/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;ruby-duckdb 2.0&lt;/a&gt; – Ruby client for the DuckDB analytical database, now tracking &lt;a href="https://rubyweekly.com/link/192198/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;DuckDB 2.0&lt;/a&gt; and dropping several deprecated APIs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/192199/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Rage 1.29&lt;/a&gt; – Fiber-based, Rails-compatible API framework, now ready for Ruby 4.1's fiber scheduler changes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📢  Elsewhere in the ecosystem&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Sean Goedecke argues that &lt;a href="https://rubyweekly.com/link/192200/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;software is slow because of bad design, not slow languages&lt;/a&gt;, drawing on his experience of staring at Ruby flamegraphs and profiling Rails endpoints.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nate Berkopec ported &lt;a href="https://rubyweekly.com/link/192201/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ruby 4.0.9&lt;/a&gt; to &lt;a href="https://rubyweekly.com/link/192202/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Fil-C&lt;/a&gt;, a memory-safe C toolchain. It ran real programs like Puma, but was ~5x slower and used far more memory, so Nate has 𝕏 &lt;a href="https://rubyweekly.com/link/192203/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;declared the experiment over&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Python's experimental JIT &lt;a href="https://rubyweekly.com/link/192204/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;is likely to be removed&lt;/a&gt;. Ruby came up a lot &lt;a href="https://rubyweekly.com/link/192205/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;in the related Hacker News thread&lt;/a&gt;, where Jean Boussier &lt;a href="https://rubyweekly.com/link/192206/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;credited Matz&lt;/a&gt; for supporting work on Ruby's JITs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sentry has &lt;a href="https://rubyweekly.com/link/192207/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;given $1m to open source maintainers&lt;/a&gt; this year, up from $750k, with $40,000 going to Ruby Central.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://rubyweekly.com/open/824/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 29 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/824</guid>
    </item>
    <item>
      <title>Ruby regexp security fixes: a newsflash</title>
      <link>https://rubyweekly.com/issues/823</link>
      <description>

  

    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​823 — October 23, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191991/rss" style=" color: #0055bb;   "&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;Ruby Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/dds4ygodka8ykec7ycvd.jpg" width="640" style="    line-height: 100%;    "&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;Ruby regexp security fixes&lt;br&gt;Who needs to update?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;It's &lt;em&gt;very&lt;/em&gt; rare I'll do an out-of-band issue of &lt;em&gt;Ruby Weekly&lt;/em&gt; but after digging into today's security releases of CRuby, I felt it was prudent to spread the word.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://rubyweekly.com/link/191976/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ruby 4.0.9&lt;/a&gt;, &lt;a href="https://rubyweekly.com/link/191977/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;3.4.12&lt;/a&gt;, and &lt;a href="https://rubyweekly.com/link/191978/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;3.3.13&lt;/a&gt; have all been released today with fixes for regexp bugs behind four GitLab-assigned CVEs.&lt;/strong&gt; If you can update, do so. But I'll explain what the issues are below and you can determine if they affect you.&lt;/p&gt;
&lt;p&gt;Takashi Kokubun's &lt;a href="https://rubyweekly.com/link/191979/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;official advisory&lt;/a&gt; has the full story, if you want to go direct to the most official source.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: These bugs are specific to CRuby's Onigmo engine. JRuby and TruffleRuby use different regex engines and aren't affected by these fixes.&lt;/em&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;div style="   margin-top: 14px; margin-bottom: 8px;  "&gt;&lt;/div&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;What are the bugs?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;There were three bugs in &lt;a href="https://rubyweekly.com/link/191980/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Onigmo&lt;/a&gt;, Ruby's regular expression engine, that could corrupt memory while a regex pattern is being &lt;em&gt;compiled&lt;/em&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://rubyweekly.com/link/191981/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;A double free&lt;/a&gt; when parsing a pattern fails after an alternation. Ruby 4.0 has had this fix since 4.0.0.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rubyweekly.com/link/191982/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;An integer overflow&lt;/a&gt; in the size of a compiled pattern, first fixed in 4.0.8 – released yesterday.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rubyweekly.com/link/191983/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;An overflow of internal IDs&lt;/a&gt; in patterns with many repeats, fixed in 4.0.9.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So if you moved to &lt;a href="https://rubyweekly.com/link/191984/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;4.0.8&lt;/a&gt;, which I featured yesterday, you need one more bump.&lt;/p&gt;
&lt;p&gt;GitLab found these bugs could enable remote code execution on GitLab servers, including attacks that require no login. It assigned four CVEs rated &lt;em&gt;Critical&lt;/em&gt; (CVSS 9.9 or 10.0) and patched the Ruby it ships. Ruby hasn't requested separate CVEs for these fixes so far; its advisory asks users to track them under GitLab's identifiers.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;Is your code affected?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;You're exposed if your application (or a dependency, alas) compiles regex patterns whose structure a third party can control. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Regexp.new&lt;/code&gt; or &lt;code&gt;Regexp.compile&lt;/code&gt; called on user input.&lt;/li&gt;
&lt;li&gt;Interpolating input into a regex literal, like &lt;code&gt;/#{params[:q]}/&lt;/code&gt;. Interpolation doesn't escape, so the user can supply a pattern.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Think regex-powered search boxes, user-defined validation rules, or filters in CI and webhook tools. If every regex in your stack is written by you/your team, you're in a better position.&lt;/p&gt;
&lt;p&gt;Two things that &lt;em&gt;won't&lt;/em&gt; help: &lt;code&gt;Regexp.timeout&lt;/code&gt;, since the damage happens during compilation before matching starts, and limits on pattern length, because some of the bugs can be triggered by short patterns. Before the compiled-size fix, for instance, &lt;code&gt;Regexp.new("(?:.{90000,}){90000}")&lt;/code&gt; was enough to lock up the process.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;What should you do?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Upgrade to &lt;a href="https://rubyweekly.com/link/191976/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ruby 4.0.9&lt;/a&gt;, &lt;a href="https://rubyweekly.com/link/191977/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;3.4.12&lt;/a&gt; or &lt;a href="https://rubyweekly.com/link/191978/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;3.3.13&lt;/a&gt;.&lt;/strong&gt; (Ruby 3.3 normally gets only vulnerability fixes now; the core team backported these as an exception, since GitLab, not Ruby, is the one treating them as CVEs.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Find the risky spots in your code&lt;/strong&gt; by looking for &lt;code&gt;Regexp.new&lt;/code&gt;, &lt;code&gt;Regexp.compile&lt;/code&gt;, &lt;code&gt;Regexp.union&lt;/code&gt; and &lt;code&gt;/#{&lt;/code&gt; constructions, and checking where their input comes from.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Can't upgrade yet?&lt;/strong&gt; The official best practice is to avoid compiling regexes from untrusted input &lt;em&gt;at all&lt;/em&gt;. How you do that is up to you: &lt;code&gt;Regexp.escape&lt;/code&gt; turns user input into a literal-only pattern, and a plain substring match (e.g. &lt;code&gt;include?&lt;/code&gt;) can be enough for many situations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;On Ruby 3.2 or older?&lt;/strong&gt; Older versions are end-of-life and won't get official fixes, so step 3 is your main option for now.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I'll be back next Thursday with, I hope, a regular issue… 😅&lt;/p&gt;
&lt;p&gt;___&lt;br&gt;&lt;em&gt;Peter Cooper, editor of Ruby Weekly&lt;/em&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://rubyweekly.com/open/823/rss" width="1" height="1" /&gt;</description>
      <pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/823</guid>
    </item>
    <item>
      <title>How Rails made its enums 4.5x faster</title>
      <link>https://rubyweekly.com/issues/822</link>
      <description>

  

    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​822 — October 22, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191878/rss" style=" color: #0055bb;   "&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;Ruby Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/191827/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/pybr4dvajnuoltdun5du.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;📊&lt;/span&gt; &lt;a href="https://rubyweekly.com/link/191827/rss" title="railsdeveloper.com" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;The 2026 Rails Community Survey Results&lt;/a&gt;&lt;/span&gt; — The results show a community favoring a familiar core stack (monolith, Postgres, Puma), a huge jump in adoption of &lt;a href="https://rubyweekly.com/link/191828/rss" style=" color: #0055bb;   "&gt;mise&lt;/a&gt;, RSpec remaining the most popular testing framework, and &lt;a href="https://rubyweekly.com/link/191829/rss" style=" color: #0055bb;   "&gt;widespread AI adoption&lt;/a&gt;, while half worry about the long-term value of their skills.&lt;/p&gt;
  &lt;p&gt;Planet Argon &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 If you want something to read or listen to, you can also find out what people's &lt;a href="https://rubyweekly.com/link/191830/rss" style=" color: #0055bb; font-weight: 600;   "&gt;favorite Ruby books&lt;/a&gt; and &lt;a href="https://rubyweekly.com/link/191831/rss" style=" color: #0055bb; font-weight: 600;   "&gt;favorite Ruby podcasts&lt;/a&gt; are.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://rubyweekly.com/link/191826/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/44b26ac4.png" width="125" height="125" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191826/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;🚨 Rails 8.0 Support Ends Nov 7. Upgrade on Autopilot&lt;/a&gt;&lt;/span&gt; — Our AI agent opens small upgrade PRs only when your own CI is green, and dual-boots your application with &lt;code&gt;next_rails&lt;/code&gt;. You review and merge; you stay in control. Beta from $497/mo, month-to-month. &lt;a href="https://rubyweekly.com/link/191826/rss" style=" color: #0055bb;   "&gt;Join the waitlist today&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;FastRuby.io® | AI-native Upgrades on Autopilot &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191832/rss" title="tenderlovemaking.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Static Analysis for the Uninitialized&lt;/a&gt;&lt;/span&gt; — Aaron, working through a static analysis textbook, builds an analyzer from scratch to find "possibly uninitialized variables" in Ruby. Sounds in the weeds, but by the end it parses real Ruby with &lt;a href="https://rubyweekly.com/link/191833/rss" style=" color: #0055bb;   "&gt;Prism&lt;/a&gt; and flags a &lt;code&gt;NameError&lt;/code&gt; before running.&lt;/p&gt;
  &lt;p&gt;Aaron 'Tenderlove' Patterson &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 On the topic of Prism, there's some big news this week – see &lt;em&gt;Code &amp;amp; Tools&lt;/em&gt;.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;⚡️ IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;💎 &lt;a href="https://rubyweekly.com/link/191834/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ruby 4.0.8 has been released&lt;/a&gt;. It's billed as &lt;em&gt;"routine"&lt;/em&gt;, but is kinda significant as it fixes forked children hanging on hostname lookups on Linux, Ruby failing to build against the macOS 27 SDK, and a ZJIT bug that swapped keyword arguments.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📊 Erik Berlin has opened &lt;a href="https://rubyweekly.com/link/191835/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;some PRs to speed up core methods&lt;/a&gt;, including pattern-defeating quicksort for numeric arrays (4-9x faster) and quicker &lt;code&gt;Array#include?&lt;/code&gt;, &lt;code&gt;Range&lt;/code&gt;, &lt;code&gt;String&lt;/code&gt; and &lt;code&gt;Time&lt;/code&gt; operations. Core members are considering which will land in 4.1.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A long-time gem author has &lt;a href="https://rubyweekly.com/link/191836/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;archived all his Ruby gems&lt;/a&gt;, saying the &lt;em&gt;"for humans"&lt;/em&gt; era of Ruby is over. An &lt;a href="https://rubyweekly.com/link/191837/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;intense discussion&lt;/a&gt; ensued on Hacker News.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rails has &lt;a href="https://rubyweekly.com/link/191838/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;merged &lt;code&gt;config.zjit&lt;/code&gt;&lt;/a&gt;, so ZJIT can be switched on after boot (as YJIT can). The PR's numbers show ~18MB less JIT memory used per worker.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191839/rss" title="railsatscale.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rails is a JIT Compiler (Or: How Aaron Made Enums 4.5x Faster)&lt;/a&gt;&lt;/span&gt; — Rails' &lt;code&gt;enum&lt;/code&gt; predicates are built with &lt;code&gt;define_method&lt;/code&gt; and &lt;code&gt;public_send&lt;/code&gt; that JITs struggle to optimize. Aaron Patterson has &lt;a href="https://rubyweekly.com/link/191840/rss" style=" color: #0055bb;   "&gt;made them real generated methods&lt;/a&gt; that are ~4.5x faster under YJIT in his benchmark. Coming to Rails 8.2.&lt;/p&gt;
  &lt;p&gt;Max Bernstein (Rails at Scale) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191841/rss" title="www.tigerdata.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rails Analytics on the Postgres You Already Know&lt;/a&gt;&lt;/span&gt; — TimescaleDB extends the Postgres behind your app so dashboards stay fast as data grows. &lt;a href="https://rubyweekly.com/link/191841/rss" style=" color: #0055bb;   "&gt;Get $1000 credit to start&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Tiger Data (creators of TimescaleDB) &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/191842/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Does Rails Still Make Sense?&lt;/a&gt; – Spoiler: yes. A good retort to anyone asking why you don't just get an LLM to rewrite all your apps in Rust. &lt;cite&gt;Dirk Jonker&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/191844/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Eight Months in Next.js: A Rails Developer's Field Notes&lt;/a&gt; – An even-handed look at what Rails hands you for free. &lt;cite&gt;Werner Petrick (Puzzl)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/191879/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Short Written Summaries of 24 Rails World 2026 Talks&lt;/a&gt; – Handy if you skipped the videos! &lt;cite&gt;Yaroslav Shmarov&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/191847/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/y8cl1peqxihiweeubxm3.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191846/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Prism 2.0: Ruby's Parser Gets Its First Major Release in Two Years&lt;/a&gt;&lt;/span&gt; — Prism now underpins CRuby, Ruby LSP and RuboCop, so you're using it even if you never call it directly. It's now faster and leaner, with precompiled platform gems, complete RBS and RBI definitions, a C++ API, and Ruby 4.1 syntax support. There's also &lt;a href="https://rubyweekly.com/link/191847/rss" style=" color: #0055bb;   "&gt;a Web-based playground&lt;/a&gt; where you can give it a spin.&lt;/p&gt;
  &lt;p&gt;Kevin Newton et al. &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191849/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Net::SSH 8.0: The Pure Ruby SSH Client Library&lt;/a&gt;&lt;/span&gt; — The first major release since 2022. Ed25519, X25519 and ChaCha20 now come from the &lt;code&gt;openssl&lt;/code&gt; gem, so separate gems are no longer needed. Defaults now track OpenSSH (e.g. SHA-1 RSA and DSA are off by default), plus ControlMaster reuse (i.e. connection sharing) and FIDO key support.&lt;/p&gt;
  &lt;p&gt;Miklós Fazekas et al. &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191848/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Tired of Writing NRQL? AppSignal Builds Your Rails Dashboards for You&lt;/a&gt;&lt;/span&gt; — Dashboards that build themselves, plus deploy markers and uptime checks. Unlimited users, &lt;a href="https://rubyweekly.com/link/191848/rss" style=" color: #0055bb;   "&gt;30-day trial, no credit card&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;AppSignal &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191850/rss" title="code.dblock.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;Introducing RuboCop Spellcheck&lt;/a&gt;&lt;/span&gt; — A RuboCop plugin for checking spelling in Ruby comments, strings, identifiers, Markdown, RDoc, AsciiDoc, and plain text.&lt;/p&gt;
  &lt;p&gt;Daniel Doubrovkine &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191851/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Passenger 7 Preview&lt;/a&gt; – The first major version since 2018. The headline is WebSocket support for Apache, and the minimum Ruby rises to 3.0.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191880/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;WhatLanguage 3.0&lt;/a&gt; – My pure Ruby natural language detector changes a few of the ISO codes it returns and gets a lot faster.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191853/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Logster 3.0&lt;/a&gt; – Discourse's embedded log viewer for Rack apps (&lt;a href="https://rubyweekly.com/link/191854/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;screenshot&lt;/a&gt;). Drops support for Ruby &amp;lt;3.3, Rack &amp;lt;3.1 and Rails &amp;lt;8.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191855/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Aruba 3.0&lt;/a&gt; – Test CLI apps with Cucumber, RSpec or Minitest. Every scenario now gets its own working directory.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191856/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;ViewComponent 4.17&lt;/a&gt; – Now works under Rails' experimental Ractor mode.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191857/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Truemail 4.0&lt;/a&gt; – Email address validation library. Now supports Ruby 4.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🪏 Digging into Ruby's past…&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;I've been working with Ruby for 22 years, but last week I noticed Ryan Davis (of Seattle.rb and Minitest fame) &lt;a href="https://rubyweekly.com/link/191858/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;celebrating his 26th anniversary&lt;/a&gt; of using Ruby, and it got me thinking about Ruby's history which goes far beyond even that.&lt;/p&gt;
&lt;p&gt;Ruby's 33 years old, so there's plenty of history to go over if you can find it amid the linkrot. Last week I discovered a new lead: &lt;a href="https://rubyweekly.com/link/191859/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;a site which archives hundreds of programming mailing lists&lt;/a&gt; all the way back to the 90s. &lt;a href="https://rubyweekly.com/link/191860/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;&lt;code&gt;ruby-talk&lt;/code&gt;'s on there&lt;/a&gt; and its archives go back to &lt;a href="https://rubyweekly.com/link/191861/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;the very first post by Matz in 1998&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today, &lt;a href="https://rubyweekly.com/link/191862/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;&lt;code&gt;ruby-talk&lt;/code&gt; is a quiet list&lt;/a&gt; with the &lt;a href="https://rubyweekly.com/link/191863/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ruby Users Forum&lt;/a&gt; largely taking over its role, but at the list's peak in 2006 it hit over 6000 messages a month, so there's tons to go through.&lt;/p&gt;
&lt;p&gt;I've been (&lt;em&gt;very&lt;/em&gt;) slowly going through the archives to find interesting tidbits, so I wanted to share a few bits from the late 90s I enjoyed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191864/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Matz shared the history of the Ruby project&lt;/a&gt; saying it was 'born' on February 23, 1993 (though it didn't get a public release till December 1995), explained his background as a programmer, and why Ruby came to be.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;There was no RubyGems back then, so people would ask &lt;a href="https://rubyweekly.com/link/191865/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;if Ruby should have its own central archive for modules&lt;/a&gt; with &lt;a href="https://rubyweekly.com/link/191866/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Matz saying he had a 'vague hope'&lt;/a&gt; to have such a thing 'someday'. &lt;a href="https://rubyweekly.com/link/191867/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;The first attempt (the "RAA") appeared&lt;/a&gt; soon thereafter.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ruby was &lt;a href="https://rubyweekly.com/link/191868/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;getting ready for IPv6&lt;/a&gt; as early as 1999. 27 years later, my ISP still doesn't support it… 😅&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dave Thomas, of &lt;em&gt;Programming Ruby&lt;/em&gt; (Pickaxe) fame, &lt;a href="https://rubyweekly.com/link/191869/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;first appeared in December 1999&lt;/a&gt; asking a question about &lt;code&gt;yield&lt;/code&gt; vs &lt;code&gt;block.call&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Even in 1999, Matz was &lt;a href="https://rubyweekly.com/link/191870/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;pondering a future where Ruby scripts could be frozen into executables&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Two years before JRuby started, &lt;a href="https://rubyweekly.com/link/191871/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Bryce Dooley came up with its name&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have any interesting data dumps, archives, or similar things relating to Ruby's ancient history – especially community stuff – hit reply and let me know, as I'd love to unearth any interesting gems, ideas, or discussions going on back in the day.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://rubyweekly.com/open/822/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/822</guid>
    </item>
    <item>
      <title>Ruby 4.1's first preview is here</title>
      <link>https://rubyweekly.com/issues/821</link>
      <description>

  

    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​821 — October 15, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191667/rss" style=" color: #0055bb;   "&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;Ruby Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/191620/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/unzcwumd2uagwgbxonoo.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191620/rss" title="www.ruby-lang.org" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;Ruby 4.1 Preview 1 Released&lt;/a&gt;&lt;/span&gt; — Two months out from its final release, we get a 4.1 preview to play with, complete with &lt;a href="https://rubyweekly.com/link/191621/rss" style=" color: #0055bb;   "&gt;&lt;code&gt;Module#descendants&lt;/code&gt;&lt;/a&gt;, Ractor-local GC, YJIT on Windows, and a raft of smaller changes. Worth testing to shake out the effects of things like &lt;code&gt;Symbol#to_s&lt;/code&gt; returning frozen strings and all &lt;code&gt;Regexp&lt;/code&gt; instances being frozen too.&lt;/p&gt;
  &lt;p&gt;Yui Naruse &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://rubyweekly.com/link/191619/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/8868a1ef.png" width="110" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191619/rss" title="www.tigerdata.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Your Rails App Doesn’t Need a Data Warehouse&lt;/a&gt;&lt;/span&gt; — Slow Rails reports usually get a warehouse and an ETL job. Now numbers lag and you run two systems. TimescaleDB extends the Postgres your app already uses, so analytics run on live data with plain ActiveRecord. &lt;a href="https://rubyweekly.com/link/191619/rss" style=" color: #0055bb;   "&gt;Get $1000 credit to start&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Tiger Data (creators of TimescaleDB) &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;📊&lt;/span&gt; &lt;a href="https://rubyweekly.com/link/191622/rss" title="railsatscale.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;ZJIT is Now as Fast as YJIT&lt;/a&gt;&lt;/span&gt; — Shopify is now running the &lt;a href="https://rubyweekly.com/link/191623/rss" style=" color: #0055bb;   "&gt;ZJIT compiler&lt;/a&gt; in production, where it matches or edges out YJIT on response time while using about 20% less JIT memory. Early and directional only, but a neat milestone.&lt;/p&gt;
  &lt;p&gt;Max Bernstein &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;⚡️ IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🔒 &lt;a href="https://rubyweekly.com/link/191624/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyGems.org now shows security warnings&lt;/a&gt; on gem version pages, with known advisories from OSV and malware labels on malicious releases.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;There's a &lt;a href="https://rubyweekly.com/link/191625/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;proposal to speed up &lt;code&gt;Struct&lt;/code&gt; and &lt;code&gt;Data&lt;/code&gt;&lt;/a&gt; to narrow the performance gap with equivalent hand-written classes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191626/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;gem.coop's 2027 Gem Fellowship&lt;/a&gt; aims to fund 15 Ruby open source projects. Applications open December 1.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇧🇷 &lt;a href="https://rubyweekly.com/link/191627/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Tropical on Rails&lt;/a&gt; has announced its 2027 dates: March 18-19 in São Paulo.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191628/rss" title="blog.julik.nl" style=" color: #0055bb;    font-size: 1.05em;"&gt;Living in a Booming Time for Ruby&lt;/a&gt;&lt;/span&gt; — Responding to DHH's Rails World keynote, Julik argues that the Ruby world is in the midst of a creative boom where the community is using AI to fix things and plug gaps that have sat open for years.&lt;/p&gt;
  &lt;p&gt;Julik Tarkhanov &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191629/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;🚨 Rails 8.0 Support Ends Nov 7. Upgrades on Autopilot With AI&lt;/a&gt;&lt;/span&gt; — Our AI agent ships small upgrade PRs that pass your test suite; you stay in control. Starting at $497/mo. &lt;a href="https://rubyweekly.com/link/191629/rss" style=" color: #0055bb;   "&gt;Join the beta&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;FastRuby.io® | AI-native Upgrades on Autopilot &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/191630/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Adding Custom Thor Commands to Your Rails App&lt;/a&gt; – One line in &lt;code&gt;config/boot.rb&lt;/code&gt; enables discovery of commands in &lt;code&gt;lib/commands&lt;/code&gt;. &lt;cite&gt;Ben Sheldon&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/191631/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Escape LIKE Wildcards with &lt;code&gt;sanitize_sql_like&lt;/code&gt;&lt;/a&gt; – Otherwise a search for &lt;code&gt;%&lt;/code&gt; can match all rows… &lt;cite&gt;Andy Croll&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/191632/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Deploying a Roundhouse App with Kamal&lt;/a&gt; – Shipping Campfire as a Spinel-compiled binary. &lt;cite&gt;Greg Molnar&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/191633/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/daeyzw7xsifklukl26kq.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191633/rss" title="metaredux.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;RuboCop 1.92 Makes Agents More Welcome&lt;/a&gt;&lt;/span&gt; — There's a strong focus on making RuboCop easier for coding agents to drive, with richer JSON output, offense caps, an &lt;code&gt;--explain&lt;/code&gt; option and a better MCP server. There's a 'mountain' of autocorrection fixes to help humans too.&lt;/p&gt;
  &lt;p&gt;Bozhidar Batsov &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 &lt;a href="https://rubyweekly.com/link/191634/rss" style=" color: #0055bb; font-weight: 600;   "&gt;RuboCop's homepage&lt;/a&gt; has also been rebuilt and now features &lt;a href="https://rubyweekly.com/link/191635/rss" style=" color: #0055bb; font-weight: 600;   "&gt;a new playground&lt;/a&gt; &lt;em&gt;(pictured above)&lt;/em&gt; that runs RuboCop in your browser (thanks to &lt;code&gt;ruby.wasm&lt;/code&gt;).&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191636/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;The New Relic Alternative With One Price and Every Feature Included&lt;/a&gt;&lt;/span&gt; — Errors, N+1s, Sidekiq, logs and host metrics in one gem. Unlimited users, free dev-to-dev support, &lt;a href="https://rubyweekly.com/link/191636/rss" style=" color: #0055bb;   "&gt;30-day trial&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;AppSignal &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191640/rss" title="dev.37signals.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Hot Cell 1.0: Securing Active Storage in the Age of AI&lt;/a&gt;&lt;/span&gt; — A way to run risky file processing operations in a container with no network and a read-only filesystem. Your app passes it open file handles over a Unix socket. The upcoming Rails 8.2's Active Storage can switch to using it with a config change.&lt;/p&gt;
  &lt;p&gt;Mike Dalessio (37signals) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191637/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Iodine 0.8: A C-Powered Ruby Server Built for Long-Lived Connections&lt;/a&gt;&lt;/span&gt; — A big rewrite, with network I/O handled by a C event loop outside the GVL. Supports Rack apps, plus the author's event-driven &lt;a href="https://rubyweekly.com/link/191638/rss" style=" color: #0055bb;   "&gt;NeoRack&lt;/a&gt; API for streaming without tying up Ruby worker threads.&lt;/p&gt;
  &lt;p&gt;Boaz Segev &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 &lt;a href="https://rubyweekly.com/link/191639/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Falcon&lt;/a&gt; is another option for handling many concurrent connections that uses fibers and the &lt;code&gt;async&lt;/code&gt; gem, and supports HTTP/2.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191641/rss" title="roberthopman.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;scrap4rb: Find the Messy Tests in a Ruby Project&lt;/a&gt;&lt;/span&gt; — A small tool, based on Uncle Bob's &lt;a href="https://rubyweekly.com/link/191642/rss" style=" color: #0055bb;   "&gt;SCRAP&lt;/a&gt;, that scores Minitest tests for smells like missing assertions, heavy mocking and hidden helper work, then gives one piece of advice per file.&lt;/p&gt;
  &lt;p&gt;Robert Hopman &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191643/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RailsPreFlight 0.1&lt;/a&gt; – Reads a Rails app and tells you what stands between it and the Rails version you want.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191644/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;sqlite3-ruby 2.10&lt;/a&gt; – Ruby's SQLite bindings. Now bundles &lt;a href="https://rubyweekly.com/link/191645/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;SQLite 3.54.0&lt;/a&gt; and adds &lt;code&gt;Database#serialize&lt;/code&gt; and &lt;code&gt;#deserialize&lt;/code&gt; to return or populate a database with a binary string.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191646/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Bullet 8.3&lt;/a&gt; – Detects N+1 queries and unused eager loading. Now supports the upcoming Active Record 8.2.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191647/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Solid Errors 0.8&lt;/a&gt; – Self-hosted, database-backed error tracker for Rails.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191648/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Cucumber 12.0&lt;/a&gt; – The plain-language BDD test tool.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📰 Classifieds&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;Cut your Ruby CI times in half. &lt;a href="https://rubyweekly.com/link/191649/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;WarpBuild&lt;/a&gt; runs GitHub Actions twice as fast at half the cost. &lt;a href="https://rubyweekly.com/link/191649/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Get $50 in free credits&lt;/a&gt; with code &lt;code&gt;START50&lt;/code&gt;.&lt;/p&gt;
 
&lt;p&gt;Keep up to date with key releases in numerous tagged programming language ecosystems with the &lt;a href="https://rubyweekly.com/link/191650/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;GitHub Release Tracker&lt;/a&gt;.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📢  Elsewhere in the ecosystem&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/191651/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/uvwyrqs3eqxpieis3nz1.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🎮 &lt;a href="https://rubyweekly.com/link/191651/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RedGem&lt;/a&gt; is an experimental 3D game engine, with its own editor, where you write the gameplay in Ruby (via mruby). Exports games for Linux, Windows and Android. (&lt;a href="https://rubyweekly.com/link/191652/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;GitHub repo&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 Trail of Bits &lt;a href="https://rubyweekly.com/link/191653/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;tested whether 25 package managers notice a malicious repository tampering with packages&lt;/a&gt;. Bundler passes if your &lt;code&gt;Gemfile.lock&lt;/code&gt; has a &lt;code&gt;CHECKSUMS&lt;/code&gt; section (the default for new lockfiles since Bundler 4), but plain &lt;code&gt;gem install&lt;/code&gt; has nothing to check against.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 If you want something like Claude Code/Codex but independent, open and supporting a wider range of models, &lt;a href="https://rubyweekly.com/link/191654/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;OpenCode 2.0&lt;/a&gt; is a great option – you can &lt;a href="https://rubyweekly.com/link/191655/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;get started here&lt;/a&gt;. &lt;a href="https://rubyweekly.com/link/191656/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Pi&lt;/a&gt; is also good if you want something minimal.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lea Verou shows off &lt;a href="https://rubyweekly.com/link/191657/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;a neat way to use icons in web UIs&lt;/a&gt; and do &lt;em&gt;all&lt;/em&gt; the inserting and tweaking with CSS with no HTML involved.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ryan Bigg, author of &lt;a href="https://rubyweekly.com/link/191658/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;several Rails books&lt;/a&gt; and &lt;a href="https://rubyweekly.com/link/191659/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Rails contributor&lt;/a&gt;, is &lt;a href="https://rubyweekly.com/link/191660/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;stepping away from tech&lt;/a&gt; after a wave of job rejections.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://rubyweekly.com/open/821/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 15 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/821</guid>
    </item>
  </channel>
</rss>
