Software Engineering Daily

Static Analysis for Ruby with Jake Zimmerman

27 snips
Oct 14, 2025
Join Jake Zimmerman, the software engineer at Stripe behind Sorbet, as he dives into the fascinating world of static typing in Ruby. He discusses the challenges posed by Ruby's dynamic nature and the problem Sorbet was designed to solve. Jake reveals the intricacies of Sorbet's architecture, including how it efficiently handles type checking internally. He also touches on future enhancements and the importance of type annotations for better code quality, all while sharing insights from his personal journey into tech.
Ask episode
AI Snips
Chapters
Books
Transcript
Episode notes
INSIGHT

Metaprogramming Versus Maintainability

  • Ruby's heavy metaprogramming creates hidden definitions that challenge static typing and tooling.
  • Adding a type checker can improve maintainability by discouraging overly dynamic patterns in large teams.
INSIGHT

Control-Flow Graphs For Precise Types

  • Sorbet compiles Ruby ASTs into control-flow graphs to support flow-sensitive typing.
  • This unified CFG simplifies modeling branches and enables precise type checks across conditions.
INSIGHT

Why Sorbet Is Written In C++

  • Sorbet is implemented in C++ to tightly control allocations and maximize performance at Stripe scale.
  • The team prioritized languages offering fine-grained memory control and team experience.
Get the Snipd Podcast app to discover more snips from this episode
Get the app