Happy New Year, typed Ruby friends. 🥂
For a while, “static typing in Ruby” meant a handful of gems and some brave souls maintaining signatures in the trenches. This month feels different: we’re seeing types show up everywhere. From alternative runtimes (mruby!), to “Ruby-with-types” experiments, to editor UX, to practical production tooling, to agent/LLM workflows.
Let’s warm up with a hot beverage and jump in. ☕️
You can find all the previous issues of the newsletter in my archive.
I’d really appreciate any feedback that could help improve the newsletter. Feel free to share your thoughts using this form.
Cheers,
There’s a great Reddit thread about a type checker for mruby (Reddit thread) 🔍 . Even if you don’t ship mruby today, this is a big signal: embedded/smaller runtimes are starting to demand better guarantees too. Quietly exciting.
Community hype award of the month goes to TRuby (thread) 🧨. What a great last 2 months. Last year we got LowType, now we get a Ruby with types. RUBY WITH TYPES, Carl!
Whether TRuby becomes “the thing” or not, it’s another strong data point: a lot of developers really want typed Ruby, and they’re willing to build new tools and even new language layers to get there. 🚀
PROMOTION
Level up your Ruby skills with Static Typing!
Master RBS and write more robust, maintainable, and error-free Ruby code. This course gives you practical, real-world techniques you can apply immediately to any Ruby project.
🚀 Start building smarter Ruby software today!
|
The official rbs gem landed a meaningful release: RBS 3.10.1 (ruby/rbs). The headline features are a pure C parser implementation, signature updates for Ruby 4.0, and a pile of fixes.
That C parser is more than a fun detail. It’s the kind of thing that can unlock better performance and broader reuse of the parser across tools.
@stevediaconou released a Claude Code plugin designed to help write RBS signatures (and even inline types), packaged as skills/agents/commands: stevegeek/claude-ruby-plugins
This is the LLM tooling direction that actually sticks: not “copy/paste a prompt,” but repeatable, composable commands you can run while working.
First release of rbs-merge (kettle-rb/rbs-merge). It merges RBS type signature files by parsing and comparing AST structures, with support for freeze blocks to protect customizations, signature-based matching, and configurable merge strategies.
If you’ve ever maintained handwritten tweaks on top of generated signatures, you already know this problem is real. Seeing tooling attack it head-on is a win. ✅
rbspy (sampling CPU profiler for Ruby) updated to 0.41.0 (rbspy/rbspy) and now supports Ruby 4.0.0 (release post: Ruby 4.0.0 released).
Typed tooling and performance tooling often grow together. If your editor/typechecker pipeline is slow, it doesn’t matter how correct it is.
vscode-sorbetto (a fork/rewrite of the official Sorbet VS Code extension) shipped 0.3.14: damolinx/vscode-sorbetto
What’s in it: syntax highlighting for RBS signature comments (Sorbet-specific), improved highlighting, a heuristic SelectionRangeProvider to improve Expand/Shrink Selection, and support for sorbet/hierarchyReferences via a custom Peek Usages command.
This is the kind of editor polish that makes typed Ruby feel less like a side quest and more like a first-class workflow. 🛠️
dspy.rb (the Ruby framework for programming, rather than prompting-language models) updated to v0.34.2 (vicentereig/dspy.rb). The big headline is unified access to 12+ LLM providers via RubyLLM (rubyllm.com), plus LM configuration propagation (Module#configure flows down to child predictors) and better evaluation/score reporting in Langfuse.
Typed Ruby + agent code is a natural pairing: fewer “mystery hashes,” more schemas, more predictable tools.
rails-on-sorbet updated to 0.5.1 (espago/rails-on-sorbet). It adds a Map::Params alias for Map[String | Symbol, untyped] and fixes RBI signatures for TypedRelation. Those are small changes that remove friction when you’re trying to keep a Rails app typed.
This is exactly the kind of maintenance that keeps typed Rails from feeling brittle.
New project: DmitryPogrebnoy/ruby-agent-skills. It’s a collection of Agent Skills to work efficiently with Ruby type signatures (RBS, Sorbet, and more). If your codebase is large enough to justify “typing automation,” this is where things get interesting.
exa-ruby (Sorbet-friendly API client inspired by openai-ruby) updated to 1.3.0 (vicentereig/exa-ruby). It adds built-in instrumentation around requests, emitting events that can feed logging/monitoring/cost tracking.
If you’re wiring typed Ruby into LLM/search APIs, this kind of observability is how you avoid surprise bills. 👀
First release: akodkod/sidekiq-sorbet. Typed background jobs are one of the highest-leverage places to add safety. When jobs fail, they fail asynchronously and often loudly. Anything that reduces “wrong payload shape” errors is a gift. 🎁
sorbet-schema updated to 0.9.3 (maxveldink/sorbet-schema). This release is full of performance work and, importantly, benchmarks: deserialization benchmark, serialization benchmarks + refactor, caching for serializers/coercers, and faster coercers using class methods. Benchmarks + optimizations is the dream combo for schema tooling. 📊
rails_mcp_engine (Sorbet, RubyLLM, FastMCP + Simple Tool DSL for Rails MCP Server) updated to 0.3.0: vrerv/rails_mcp_engine. If you’re experimenting with MCP-style tool servers inside a Rails app, this is one to watch.
TL;DR ✨
January 2026 is a great snapshot of where typed Ruby is heading:
- types expanding beyond “classic Ruby” into mruby experiments 🔍
- community momentum around “Ruby with types” projects like TRuby 🧨
- official tooling moving fast with RBS 3.10.1 (C parser + Ruby 4.0 signatures) update ⚙️
- editor ergonomics improving via vscode-sorbetto 🧠
- production-grade wins: typed Sidekiq args, faster schemas, Rails/Sorbet quality-of-life updates 🛠️
- and a growing overlap between typing and agent tooling (skills/plugins/instrumentation) 🤖
Your faithful static typing guy ✍️
Your essential Static Typing toolset
rbs
official Ruby Signature solution from the Ruby team
repo
rbs-inline
extension to rbs lets you write signatures in line with your code
repo
steep
type checker for the Ruby signatures
repo
sorbet
type signature and type checking solution designed by Stripe
repo
ruby-lsp
essential toolset and extension, which helps with Ruby development in the VS Code
repo
steep VS Code extension
steep integration with the IDE
repo
rbs syntax VS Code extension
ease the work with RBS signature files
repo
|
“Let's do TDD - type-driven development”