---
title: "Jean's epic journey to optimize Ruby's JSON parsing"
publication: "Ruby Weekly"
issue: 735
published_at: "2025-01-23"
canonical_url: "https://rubyweekly.com/issues/735"
---

Plus a way to transpile modern Ruby syntax back for older versions. |        

#​735 — January 23, 2025 

[Read on the Web](https://rubyweekly.com/issues/735)  

Together with [![Memetria\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_600,h_145/e_make_transparent/co_white,e_outline:7/vvpdctzacmq3xehpvwps.png)](https://dashboard.memetria.com/rubyweekly/)   

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/iyizgviyyqxtazjwrnvs.jpg)](https://ruby-next.github.io/)  

[Ruby Next: Transpile Modern Ruby Code to Run on Older Versions](https://ruby-next.github.io/) — An interesting way to get Ruby code written with the latest syntax to run on older versions or alternative implementations (like mruby or Opal, say). This playground shows off the basic idea, and this could be useful for library maintainers or anyone who wants to experiment. [GitHub repo.](https://github.com/ruby-next/ruby-next) 

Vladimir Dementyev   

[Optimizing Ruby’s JSON](https://byroot.github.io/ruby/json/2025/01/14/optimizing-ruby-json-part-7.html) — Rails core team member Jean concludes a seven-part series going _super deep_ into efforts made to significantly boost the performance of Ruby’s `json` library, with the end results trumping many of the alternatives. We linked to this when Jean [began the series,](https://byroot.github.io/ruby/json/2024/12/15/optimizing-ruby-json-part-1.html) but now the whole epic journey is here to enjoy. 

Jean Boussier   [![\](https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/81663fec.png)](https://dashboard.memetria.com/rubyweekly/) 

[Memetria K/V: Efficient Redis & Valkey Hosting](https://dashboard.memetria.com/rubyweekly/) — Memetria K/V offers Ruby applications hosting for Redis OSS and Valkey, complete with large key tracking and detailed analytics for improved data oversight and performance. 

Memetria sponsor   

**IN BRIEF:** 

- [IRB v1.15.0](https://github.com/ruby/irb/releases/tag/v1.15.0) adds a `copy` command for copying a command's output to the clipboard, `ri` as an alias for `show_doc`, and a way to [see a quicker preview of large outputs](https://github.com/ruby/irb/pull/1040) before the pager takes over.
- [Ruby Central has two new board members](https://rubycentral.org/news/ruby-central-welcomes-new-board-members-announces-officer-appointments/) and several newly appointed officers.
- IDE developer JetBrains has [opened the Early Access Program for RubyMine 2025.1](https://blog.jetbrains.com/ruby/2025/01/the-rubymine-2025-1-early-access-program-is-open/), its Ruby and Rails IDE. One neat aspect of their EAPs if you get to try the software for free for an extended period.
- [rails.style](https://rails.style/) is a single page roundup of UI related libraries you can use with Rails.   

[Using CloudFlare Turnstile to Protect Certain Pages on a Rails App](https://bibwild.wordpress.com/2025/01/16/using-cloudflare-turnstile-to-protect-certain-pages-on-a-rails-app/) — [Turnstile](https://www.cloudflare.com/en-gb/application-services/products/turnstile/) is a free service that replaces CAPTCHAs with Cloudflare’s proprietary bot detection approach. 

Jonathan Rochkind   

[Stealthly Browsing and Scraping with Ferrum](https://railsnotes.xyz/blog/ferrum-stealth-browsing) — [Ferrum](https://github.com/rubycdp/ferrum) is a Ruby library for remotely controlling Chrome and Harrison shares some tips for staying under the radar when using it. (As always with these things, obey local laws and use your best judgment as to what is responsible.) 

Harrison Broadbent   

[🐌 If Your Rails Team Needs a Little Boost…](https://sinaptia.dev/services/staff-augmentation/) — We can augment your team with devs to help you keep up with your delivery schedule. Test us! 

SINAPTIA sponsor   

📄 [How to Infer a Form's Method for Custom Objects in Rails](https://thoughtbot.com/blog/how-to-infer-the-form-method-for-custom-objects-in-rails) – Making your Ruby objects ActiveModel compatible, such that Rails knows whether to use POST or PATCH, is surprisingly easy. Joël Quenneville (Thoughtbot) 

📄 [Fixing a Bug in My Lateral Joins Queries with Rails](https://bhserna.com/fixing-a-bug-in-my-lateral-joins-queries-with-rails) Benito Serna 

📄 [Rails 7.2 and YJIT on Heroku](https://ryanwood.com/posts/rails-72-and-yjit-on-heroku) – Handy tips if you’re deploying to Heroku. Ryan Wood 

📄 [Why Rails in 2025?](https://thoughtbot.com/blog/why-rails-in-2025) Aji Slater  

🛠 Code & Tools  

[Rage: An HTTP API Framework Compatible with Rails](https://github.com/rage-rb/rage) — There are plenty of ‘alternative’ Ruby webapp and HTTP API approaches (e.g. Sinatra, Roda, or Hanami) but ‘Rails compatibility’ is the big win for this high performance, fiber-based API-only option. [v1.12.0](https://github.com/rage-rb/rage/releases/tag/v1.12.0) adds a Redis adapter for scaling Cable-based apps across servers. 

Roman Samoilov   

[Lrama: Pure Ruby LALR Parser Generator](https://github.com/ruby/lrama) — An official Ruby project to implement an LALR parser generator in pure Ruby with a goal of providing error tolerant Ruby parsing. 

Ruby Project   

[🚀 Need to Upgrade to Rails 8.0 + Ruby 3.4 but Not Sure How?](https://go.fastruby.io/upgrade-bonsai) — Bonsai by [FastRuby.io](https://FastRuby.io) is the monthly upgrade service trusted by top-notch engineering teams. Upgrade with confidence. 

FastRuby.io | Upgrade Services sponsor   

[AutoHtml: Filters That Transform Plain Text Into HTML Code](https://github.com/dejan/auto_html) — For situations where even Markdown might be overkill (although it _is_ an option..) 

Dejan Simić   

[has_some_of_many: Optimized Top-N-Per-Group Active Record Associations](https://github.com/bensheldon/activerecord-has_some_of_many) — Adds optimized association methods (`has_one_of_many`, `has_some_of_many`) for ‘top N’ queries to Active Record using efficient JOIN LATERAL queries. 

Ben Sheldon   

- [Good Job 4.8](https://github.com/bensheldon/good_job/blob/main/CHANGELOG.md#v480-2025-01-22) – The Postgres-based job backend for Rails adds the ability to pause jobs by queue, job class, or label.
- [JRuby 9.4.10.0](https://www.jruby.org/2025/01/21/jruby-9-4-10-0.html) – The Ruby 3.1-compatible JVM-based Ruby implementation.
- [Liquid 5.7](https://github.com/Shopify/liquid) – Popular template language. [v5.7](https://github.com/Shopify/liquid/releases/tag/v5.7.0) adds `find`, `find_index`, `has`, and `reject` filters to arrays.
- ∑ [Ruby Statistics 4.1](https://github.com/estebanz01/ruby-statistics/releases/tag/4.1.0) – No-dependency statistical math methods and functions.
- [ActiveSnapshot 1.0](https://github.com/westonganger/active_snapshot) – Simplified snapshots and restoration for AR models.
- [DatabaseRewinder 1.1](https://github.com/amatsuda/database_rewinder) – Minimalist ultra-fast database cleaner.
- [IoMonitor 1.1](https://github.com/DmitryTsepelev/io_monitor) – A gem to help detect potential memory bloat.
- [Literal 1.5](https://github.com/joeldrapper/literal) – Runtime type-checking for Ruby. [More info here.](https://literal.fun/)
- [Gemirro 1.5](https://github.com/PierreRambaud/gemirro) – Create your own RubyGems mirror.
- [Sidekiq-Cron 2.1](https://github.com/sidekiq-cron/sidekiq-cron/releases/tag/v2.1.0) – A scheduler for Sidekiq jobs.
- [RubyGems 3.6.3](https://blog.rubygems.org/2025/01/16/3.6.3-released.html)
- [RMagick 6.1](https://github.com/rmagick/rmagick/blob/main/CHANGELOG.md#rmagick-610)      

📰 Classifieds   

**Buff your Monolith** Performance metrics, log management - everything you need to keep Rails shiny and fast. [Try Scout Monitoring!](https://www.scoutapm.com/ruby-monitoring/?utm_content=01-23-2025&utm_medium=cooperpress&utm_source=sponsorship) 

--- 

Protect your SaaS app with advanced device fingerprinting from [WorkOS Radar](https://workos.com/radar?utm_source=cpruby&utm_medium=newsletter&utm_campaign=q12025). Stop fake signups, free tier abuse, bot attacks and brute force attempts today.    

📢 Elsewhere  

A quick roundup of some of other interesting updates in the broader developer landscape, in case you've missed them: 

- [Tailwind CSS 4.0](https://tailwindcss.com/blog/tailwindcss-v4) has just been released. It's a CSS framework that's increasingly popular in the Rails world. v4 features much faster builds, better support for cutting edge CSS features, simpler installation, CSS-first configuration, and more.
- [Bun](https://bun.sh/) is a high-performance JavaScriptCore-based JavaScript runtime that boasts compatibility with Node.js but is faster and has a bundler, test runner and other utilities baked in. [Bun 1.2](https://bun.sh/blog/bun-v1.2) just landed and it's a big step forward. A neat way to run JS server-side without many of Node's headaches.
- If you've not worked with it yet, [Hemath has an accessible introduction to the basics of WebAssembly.](https://hemath.dev/blog/webassembly/introduction-to-webassembly/)
- Looking for a self-hosted GitHub-a-like? [Forgejo](https://forgejo.org/) is an interesting, full featured Go-powered fork of [Gitea.](https://about.gitea.com/)
- [Act](https://github.com/nektos/act) is a tool for running your repo's GitHub Actions_locally._         

Curated by [Peter Cooper](https://twitter.com/cooperx86) and [Glenn Goodrich](https://twitter.com/ruprict).
Published by [Cooperpress](https://cooperpress.com/). 

[Change your email](https://rubyweekly.com/edit_subscription/*|UID|*) or [Stop getting this newsletter.](https://rubyweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom 

Other weekly newsletters we publish include [Postgres Weekly](https://postgresweekly.com/), [React Status](https://react.statuscode.com/), [Frontend Focus](https://frontendfoc.us/), and [JavaScript Weekly](https://javascriptweekly.com/).
