Chisle
The coding-agent plugin that bills 52% of a bare model across 20 live tasks. Terse persona + tool-output compressor + context diet.
翻訳待ち
A fast, powerful type checker designed for Ruby
翻訳待ち
開発ツールC++ · RubyGitHub @sorbet自分でインストール所有者未確認
Paste into Claude or ChatGPT for installation instructions suited to your environment.
Have you tried it? One tap is enough. No sign-in needed.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗This repository contains Sorbet, a fast, powerful type checker designed for Ruby. It aims to be easy to add to existing codebases with gradual types, and fast to respond with errors and suggestions.
This README contains documentation specifically for contributing to Sorbet. You might also want to:
If you are at Stripe, you might also want to see http://go/types/internals for docs about Stripe-specific development workflows and historical Stripe context.
Early in our project, we've defined some guidelines for how working with Sorbet should feel like.
Explicit
We're willing to write annotations, and in fact see them as beneficial; they make code more readable and predictable. We're here to help readers as much as writers.
Feel useful, not burdensome
While it is explicit, we are putting effort into making it concise. This shows in multiple ways:
As simple as possible, but powerful enough
Overall, we are not strong believers in super-complex type systems. They have their place, and we need a fair amount of expressive power to model (enough) real Ruby code, but all else being equal we want to be simpler. We believe that such a system scales better, and—most importantly—is easier for our users to learn & understand.
Compatible with Ruby
In particular, we don't want a new syntax. Existing Ruby syntax means we can leverage most of our existing tooling (editors, etc). Also, the point of Sorbet is to gradually improve an existing Ruby codebase. No new syntax makes it easier to be compatible with existing tools.
Scales
On all axes: execution speed, number of collaborators, lines of code, codebase age. We work in large Ruby codebases, and they will only get larger.
Can be adopted gradually
In order to make adoption possible at scale, we cannot require every team or project to adopt Sorbet all at once. Sorbet needs to support teams adopting it at different paces.
Install the dependencies
brew install bazel autoconf coreutils parallelClone this repository
git clone https://github.com/sorbet/sorbet.gitcd sorbetBuild Sorbet
./bazel build //main:sorbet --config=dbgRun Sorbet!
bazel-bin/main/sorbet -e "42 + 'hello'"We've documented the internals of Sorbet in a separate doc. Cross-reference between that doc and here to learn how Sorbet works and how to change it!
There is also a talk online that describes Sorbet's high-level architecture and the reasons why it's fast:
There are multiple ways to build sorbet. This one is the most common:
./bazel build //main:sorbet --config=dbg
This will build an executable in bazel-bin/main/sorbet (see "Running Sorbet"
below). There are many options you can pass when building sorbet:
--config=dbg
--config=dev
--config=dbg, but with light optimizations (-O1).--config=sanitize
--config=debugsymbols
--config=dbg) debugging symbols, and nothing else.--config=forcedebug
--config=static-libs
--config=release-mac and --config=release-linux
This is the beginning of the README. Read the rest at the original. Read the full README ↗