← Graph

Sorbet

tool 20 connections

Gradual static type checker for Ruby, originally created by Stripe. Provides type signatures, runtime checks, and IDE integration. Configured per file via `# typed: false | true | strict` (plus deprecated `strong`); `strict` requires a signature on every method. Features include signatures written with `extend T::Sig` + `sig { params(...).returns(...) }`, escape hatches (T.unsafe, T.must, T.cast, T.let), generics via `type_parameters`, and a special block-type syntax. Supports RBI sidecar files describing signatures without touching implementations (used for untyped gems and metaprogrammed code). Has an experimental `requires_ancestor` feature (strongly recommended) that lets a module declare it must be included in a particular class. Runtime checking can be enabled/disabled globally; signatures are erased with no overhead at startup, but type assertions remain in the bytecode and can't be optimized by YJIT. Sorbet is written in C++, which limits community contributions. Rafael Zamaris's team is experimenting with Sorbet in Spree to type service-object interfaces so IDEs (RubyMine, VS Code) highlight incorrect DI overrides; Erwin Kroon's GitHub team uses Sorbet on a 10-year-old codebase for safer refactoring. Trade-offs: introducing types to existing meta-programmed/monkey-patched code is hard; it's less popular than other ecosystems; open-ended options-hash arguments are hard to type; over-reliance on T.unsafe/T.cast adds overhead without static guarantees.

origin
Stripe
category
tool
language
Ruby
implementation_language
C++
Team is experimenting with Sorbet to type service-object interfaces in Spree.
about
Sorbet tool
Recommendation specific to configuring Sorbet.
Whole talk is about introducing Sorbet into a Ruby codebase.
Performance insight about Sorbet runtime behavior.
Verdict on when Sorbet is worth using.
Comparing boundary-only validation with full Sorbet typing.
about
Sorbet tool
Discussed as the furthest-along static type checker for Ruby; contrasted with Literal's runtime approach.
about
Sorbet tool
Cited as a way to raise the automation threshold in Ruby; Shopify's usage evidence.
tool Sorbet
related_to
Ruby tool
Sorbet is a type checker for Ruby.
tool Sorbet
related_to
Shopify company
Drapper cites Shopify as one of the big companies that succeeded with Sorbet.
tool Sorbet
related_to
Stripe tool
Originally authored by Stripe; Drapper references Stripe as one of the companies using Sorbet well.
related_to
Sorbet tool
Experimental Sorbet feature.
concept T.bind
related_to
Sorbet tool
Sorbet runtime helper for rebinding self.
concept T.unsafe
related_to
Sorbet tool
Sorbet escape hatch.
tool RBI
related_to
Sorbet tool
RBI files are Sorbet's sidecar signature format.
tool Tapioca
related_to
Sorbet tool
Tapioca generates RBI files consumed by Sorbet.
tool Stripe
related_to
Sorbet tool
Stripe is the original author of Sorbet.
uses
Sorbet tool
Experimenting with Sorbet in the Spree codebase to type service-object interfaces.
person Erwin Kroon
uses
Sorbet tool
Introducing Sorbet to GitHub's 10-year-old Ruby codebase.
works_on
Sorbet tool
Cited as the internal expert on Sorbet runtime and performance at GitHub.

Provenance

Read by
9 extractions