Files
vac-optimizer/docs/adr/0009-bun-runtime-and-native-tooling.md
T
nessarandClaude Opus 5.5 558c70aa24 docs(adr): record Bun 1.4.3 verification results and decisions
Stable Bun 1.4.3 runs installs, the development server, standalone type
checks, the native test runner and a Bun.serve static server. Native
lint/fmt are canary-only, and Angular's server build needs Node loader
hooks Bun does not apply, so the spec now keeps ESLint/Prettier until a
stable release, builds Angular client-only behind a Bun static server,
converts line coverage from lcov, and replaces the heap cap with a
container memory limit.

Refs #289

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 12:49:17 +02:00

27 lines
1.3 KiB
Markdown

---
status: proposed
---
# Bun Runtime and Native Tooling
VacOptimizer will use Bun as the runtime for project-owned JavaScript in
development, CI, and production, adopting its native test runner, linter,
formatter, type checker, and HTTP server even without measured performance gains.
This deliberately accepts Bun-specific tooling and migration work while retaining
Angular's standard compiler and build pipeline, including TypeScript 6 for
Angular compilation alongside `bun check` for standalone TypeScript checking.
Verification on stable Bun 1.4.3 narrowed this: ESLint and Prettier stay,
run by Bun, until a stable release ships the native linter and formatter;
Angular builds a client-only bundle, because its server build relies on Node
loader hooks Bun does not apply, and a small `Bun.serve` server delivers it,
giving up `@angular/ssr`; coverage is line-level, converted from lcov to the
existing HTML and Cobertura reports; and the benchmark's heap cap becomes a
container memory limit.
Existing behavior, tests, lint rules, coverage reporting, and benchmark budgets
must be preserved; incompatibilities must be fixed or reported as blockers before
declaring completion, and a Node.js fallback does not meet the runtime requirement.
The [development spec](../bun-adoption.md) records the agreed boundaries,
acceptance criteria, and remaining verification.