To run the benchmark, you need to have the following tools installed:
The tested versions are:
Tool | Version | Notes |
---|---|---|
Typed Racket | 8.15 | Bundled with Racket 8.15 |
Node.js | 22.11.0 | See .node-version file under relevant directories |
npm | 10.9.0 | Bundled with Node.js |
Python | 3.13.0 | See .python-version file under relevant directories |
pip | 24.2 | Bundled with Python |
TypeScript | 5.6.3 | See TypeScript/package-lock.json |
Flow | 0.245.2 | See Flow/package-lock.json |
Pyright | 1.1.389 | See Pyright/package-lock.json |
mypy | 1.13.0 | See mypy/requirements.txt |
First, clone this repository. Then, install the dependencies for the benchmark tools:
cd TypeScript
npm install
cd ../Flow
npm install
cd ../Pyright
npm install
cd ../mypy
source venv/bin/activate # not necessary if you have direnv installed
pip install -r requirements.txt
The benchmark is written in Racket. The usage of the benchmark tool is as follows:
$ racket main.rkt --help
usage: main.rkt [ <option> ... ] [<type-checker>]
<option> is one of
-v, --verbose
Print the output of the benchmarks to the console
-f <output-format>, --format <output-format>
Print the output of the benchmarks in the specified format. Options: plain, markdown, tex. Default: plain.
--help, -h
Show this help
--
Do not treat any remaining argument as a switch (at this level)
Multiple single-letter switches can be combined after
one `-`. For example, `-h-` is the same as `-h --`.
When parameter <type-checker>
is not provided, the benchmark will run all type checkers. Otherwise, it will run only the specified type checker.