A fast, powerful type checker for Ruby that supports gradual typing and easy adoption in existing codebases.
Sorbet is a static type checker for Ruby that analyzes code for type errors and provides suggestions to improve reliability. It solves the problem of runtime errors in dynamic Ruby by enabling developers to add explicit type annotations gradually, making large codebases more maintainable and predictable.
Ruby developers working on medium to large codebases who want to improve code safety, readability, and scalability through static type checking.
Developers choose Sorbet for its fast performance, seamless integration with existing Ruby tooling, and gradual adoption path that doesn't require rewriting entire projects. Its explicit yet concise type system strikes a balance between power and simplicity.
A fast, powerful type checker designed for Ruby
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables incremental type annotation in existing codebases without a full rewrite, aligning with its design principle of being adopted gradually by different teams.
Uses standard Ruby syntax for type definitions, ensuring compatibility with existing editors and tooling without requiring new syntax, as stated in the philosophy.
Built for speed to handle large codebases efficiently, providing quick feedback during development, which is a core design principle for scalability.
Delivers clear and understandable error messages that help developers quickly fix issues, emphasized in the user-facing design principles.
Requires developers to write type signatures for methods, adding verbosity and maintenance overhead, especially in large or dynamically-typed codebases.
Building from source involves Bazel and multiple configurations, as detailed in the README, which can be daunting for contributors or custom integrations.
May require RBI files for third-party libraries, and some gems lack full type support, necessitating manual effort to ensure comprehensive coverage.