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>
27 lines
1.3 KiB
Markdown
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.
|