AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Rust로 처음부터 만든 ts-r는 개발 서버·번들러·타입체커·린터·런너·언어 서버 등 6가지 빠른 TypeScript 도구
ts-r is six fast TypeScript tools written from scratch in Rust: a dev server, bundler, type checker, linter, runner and language server. Each replaces one tool you use today.
개발 도구Rust · JavaScriptGitHub @Webb-Ventures온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Fast TypeScript tooling, written from scratch in Rust. Designed to replace ts-go, while being quicker, more memory efficient and better vertically integrated
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Fast TypeScript tooling, written from scratch in Rust. ts-r type-checks, lints, bundles, runs and serves TypeScript, aiming for the same results as the tools you use today, and faster: ts-r-check type-checks tRPC, date-fns and RxJS 2.0–5.4× faster than tsc 7 (benchmarks). Each tool is its own small binary and works on its own next to tsc, ESLint and Vite, so you can adopt one without the rest.
npm install --save-dev @ts-r.dev/cli@next # the ts-r launcher and every tool
npx ts-r check # type check, with tsc 7's diagnostics
npx ts-r lint # lint, with ESLint and typescript-eslint rules
npx ts-r build # bundle, with esbuild's CLI
npx ts-r run server.ts # run TypeScript (replaces tsx / ts-node)
npx ts-r dev # dev server with HMR and Vite's import.meta.hot
Status: preview. The type checker is the most mature tool. It gives tsc 7's exact output on 97.7% of TypeScript's own conformance tests. It also matches tsc 7 exactly on tRPC, date-fns, TypeORM and Playwright, and is within a few diagnostics on RxJS (none extra, 5 missing, of about 21,900). Every other tool works on real projects but has known gaps (below). Version numbers stay below 1.0 until that changes.
| Tool | Replaces | Works today | Known gaps |
|---|---|---|---|
ts-r-check | tsc (type checking, emit, --build, --watch) | tsc 7's codes, messages and chains; JavaScript, declaration and source-map emit; project references | Some inference and narrowing; 3.0% of conformance tests still differ |
ts-r-lint | ESLint, oxlint | 814 rules, 61 of them type-aware on ts-r's own checker; 90,430 of 90,461 cases of ESLint's, typescript-eslint's, eslint-plugin-jsdoc's, eslint-plugin-unicorn's and eslint-plugin-import's own tests pass; flat config, oxlint and Biome configs | Type-aware rules only where ts-r-check matches your tsc; plugins other than typescript-eslint (and 74 eslint-plugin-jsdoc, 369 eslint-plugin-unicorn and 46 eslint-plugin-import rules) |
ts-r-build | esbuild, vite build | esbuild's CLI flags; ESM, CJS and IIFE output; code splitting; minification; source maps; --watch | No plugins, no CSS bundling, lowering down to ES2015 (not ES5) |
ts-r-run | tsx, ts-node | Runs TypeScript on Node 22.15+ with tsc 7's JavaScript output | Only the entry's tsconfig is used |
ts-r-dev | vite dev | Hot reload, Vite's import.meta.hot API, React Fast Refresh, dependency pre-bundling, vite.config and Vite plugins | No CSS preprocessors; some vite.config options and plugin APIs; HTTP/1.1 only |
ts-r-lsp | tsserver, the ESLint server | One server per workspace for lint and types; our checker or your own TypeScript as the type backend | Most projects still fall back to tsserver for diagnostics |
ts-r | Launcher for all of the above, plus ts-r ci (check, lint and build in parallel) and ts-r doctor |
What each tool matches, and how it is measured: each crate's AGENTS.md and the design records
in docs/design/.
Every tool is an npm package with a native binary for macOS (arm64, x64), Linux (arm64, x64;
glibc and musl) and Windows (arm64, x64). Install one, or the ts-r launcher (@ts-r.dev/cli) with all of them:
npm install --save-dev @ts-r.dev/cli@next # every tool and the ts-r launcher
npm install --save-dev @ts-r.dev/check@next # just ts-r-check (or run, dev, build, lint, lsp)
To type-check with ts-r wherever your scripts and tools already run tsc, use the drop-in
typescript package. It runs ts-r-check where ts-r-check gives the same result as your own
TypeScript on that project, and hands everything else to your TypeScript:
// package.json
"devDependencies": {
"typescript": "npm:@ts-r.dev/typescript@next",
"typescript-real": "npm:typescript@^7.0.0"
}
During the alpha, use @next or an exact version (@7.0.1000-alpha.3): a range like ^7
doesn't match prerelease versions.
The details are in npm/typescript/README.md. Packages and platforms are in npm/ts-r/README.md.
Each table shows ts-r's median time per scenario next to the fastest other tool on the same workload. Workloads include type-checking pinned open-source repos (tRPC, date-fns, rxjs) and bundling three.js ten times over, among others. Pull requests that change the crates or the benchmarks are benchmarked against their base on GitHub's runners: Linux x64 is the gate, and Linux arm64, Windows x64 and arm64 and macOS on Apple silicon and Intel report alongside it. A slowdown beyond the gate fails the bench check, which reviewers read before merging. Method and scenarios: bench/README.md.
| Benchmark | ts-r | Fastest other tool | ts-r is |
|---|---|---|---|
version-startup | ts-r 2.03 ms | esbuild 3.93 ms | 1.9× faster |
check-trpc | ts-r-check 474 ms | tsc-7 979 ms | 2.1× faster |
check-date-fns | ts-r-check 998 ms | tsc-repo 1.97 s | 2.0× faster |
check-rxjs | ts-r-check 1.20 s | tsc-7 6.51 s | 5.4× faster |
build-three-x10 | ts-r-build 963 ms | esbuild 1.41 s | 1.5× faster |
Medians on linux-x86_64 (four dedicated cores), measured 2026-10-24. Scenarios: bench/scenarios.toml and bench/repos.toml.
The table above is written from one review-box bench of a pull request
(node scripts/readme-bench.mjs main): this one is #42's, at d8a6a97 (merged as 8b6c630),
whose code differs from main's only in ts_r_run, which none of these scenarios runs. The one
below is the same table at the time of the latest release, and is updated by each release pull
request.
Release v0.1.0-alpha.5:
| Benchmark | ts-r | Fastest other tool | ts-r is |
|---|---|---|---|
version-startup | ts-r 2.03 ms | esbuild 3.93 ms | 1.9× faster |
check-trpc | ts-r-check 474 ms | tsc-7 979 ms | 2.1× faster |
check-date-fns | ts-r-check 998 ms | tsc-repo 1.97 s | 2.0× faster |
check-rxjs | ts-r-check 1.20 s | tsc-7 6.51 s | 5.4× faster |
build-three-x10 | ts-r-build 963 ms | esbuild 1.41 s | 1.5× faster |
Medians on linux-x86_64 (four dedicated cores), measured 2026-10-24. Scenarios: bench/scenarios.toml and bench/repos.toml.
Every layer is written in this repo, with no other compiler, bundler or linter underneath: lexer, parser, binder, type checker, transformer, code generator, minifier, module resolver, bundler, linter, dev server and language server. TypeScript's, esbuild's and ESLint's test suites and outputs are the oracles: ts-r runs them and compares, and does not copy their code.
| Path | What it is |
|---|---|
crates/ts_r_lexer, ts_r_parser, ts_r_ast | Error-recovering parser for TS, TSX and JS into a compact, index-based AST |
crates/ts_r_binder, ts_r_checker | Scopes and symbols; the type checker |
crates/ts_r_transform, ts_r_codegen, ts_r_emit | TypeScript to JavaScript, printing, source maps and declaration files |
crates/ts_r_resolver, ts_r_config | Node and TypeScript module resolution; tsconfig.json |
crates/ts_r_bundler, ts_r_minify | The bundler and minifier behind ts-r-build and ts-r-dev |
crates/ts_r_lint | Lint rules and config loading |
crates/ts_r_lsp, editors/vscode | Language server and the VS Code extension |
docs/design/ | Design records: why each piece works the way it does |
AGENTS.md has the full crate map and the rules every change follows.
You need the Rust toolchain pinned in rust-toolchain.toml (rustup installs it) and Node 22 or
newer for the tests that compare against tsc and esbuild.
git clone https://github.com/Webb-Ventures/typescript-rust
cd typescript-rust
cargo xtask upstream sync --minimal # TypeScript's lib files, which the checker tests need
cargo build --release # binaries in target/release
cargo test --workspace
cargo xtask also runs the oracles (cargo xtask oracle), the benchmarks (cargo xtask bench)
and the top-npm-packages harness (cargo xtask ecosystem). See xtask/AGENTS.md.
Contributions are welcome: bug reports, mismatches with tsc or ESLint, and pull requests.
ts-r is free and open source, and its development is funded by sponsors.
Sponsor ts-r: if ts-r saves your team time, support its development. Sponsors are listed here.
ts-r is MIT licensed (LICENSE). Unless you say otherwise, any contribution you submit for inclusion in ts-r is licensed under MIT, with no additional terms or conditions.
TypeScript's lib files shipped with ts-r-check and ts-r-lsp are under TypeScript's own
Apache-2.0 license, included next to them. Upstream test data fetched by
cargo xtask upstream sync stays in the gitignored target/ directory under its own license.