Skip to main content
JZ

Jake Zimmerman

Jake Zimmerman Explains Sorbet**control Flow Graph Architecture**memory Optimization Strategy**c++ Language Choice**interface Usage Pattern
1episode
1podcast

We have 1 summarized appearance for Jake Zimmerman so far. Browse all podcasts to discover more episodes.

Featured On 1 Podcast

Top resources Jake Zimmerman mentions

Books, tools, and gear cited across podcast appearances. Ranked by frequency.

SignalCast may earn commission on purchases via affiliate links on each resource page.

All Appearances

1 episode

AI Summary

→ WHAT IT COVERS Jake Zimmerman explains Sorbet, Stripe's static type checker for Ruby written in C++, covering its architecture using control flow graphs, performance optimizations to handle 15-20GB codebases, and upcoming features for shapes, tuples, and ecosystem support. → KEY INSIGHTS - **Control Flow Graph Architecture:** Sorbet compiles Ruby's abstract syntax tree into a unified control flow graph representation, allowing control flow sensitive typing to be implemented once rather than separately for if, unless, while, rescue, and break nodes, simplifying the codebase significantly. - **Memory Optimization Strategy:** Stripe's codebase currently requires 15-20GB in memory for type checking. The team is rearchitecting Sorbet to type check code subsets sequentially rather than loading 100% of the codebase simultaneously, preventing memory issues as the codebase doubles in size. - **C++ Language Choice:** The team selected C++ over Ruby, Rust, or Go in 2017 because three founding members had extensive C++ experience, and fine-grained allocation control was critical for performance. The mypy team explicitly advised against implementing in Python due to performance tuning difficulties. - **Interface Usage Pattern:** Developers underutilize abstract methods and interfaces, assuming they only matter with multiple implementations. Interfaces provide valuable data hiding and implementation encapsulation even with single implementations, exposing only necessary public methods while hiding internal fields and helper functions. → NOTABLE MOMENT Implementing proper interface override checking for Ruby structs generates 30,000 type errors in Stripe's codebase. The team postponed this feature for years because fixing violations required massive effort, demonstrating how legacy code patterns can block type system improvements at scale. 💼 SPONSORS [{"name": "Aria", "url": "https://airia.com"}, {"name": "Postman", "url": "https://postman.com/sed"}, {"name": "Capital One", "url": null}] 🏷️ Static Type Checking, Ruby Programming, Type System Design, Developer Tooling

Never miss Jake Zimmerman's insights

Subscribe to get AI-powered summaries of Jake Zimmerman's podcast appearances delivered to your inbox weekly.

Start Free Today

No credit card required • Free tier available