Skip to content

perf(toolchain): run checks with stable TypeScript 7 - #432

Merged
jonit-dev merged 6 commits into
developfrom
chore/typescript-7
Oct 5, 2026
Merged

jonit-dev merged 6 commits into
developfrom
chore/typescript-7

Conversation

@jonit-dev

@jonit-dev jonit-dev commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Workspace and generated-game typechecks now run stable TypeScript 7.0.2's native tsc. The previous workspace compiler was 5.9.3. Every workspace compiler consumer gets the native alias, and all thirteen generated templates use stable 7; rain declares the official @typescript/typescript6@6.0.2 package separately for its shader generator.

typescript imports and tsup DTS generation use npm:@typescript/typescript6@6.0.2, following Microsoft's documented side-by-side strategy. The package exports API ts.version 6.0.3. TypeScript 7 does not provide the old JS compiler API. Direct AST scripts/tests and tsup resolve the compatibility API; native CLI bundling remains esbuild/Vite. No ESLint, ts-morph or TypeDoc dependencies are present. Three standalone examples/integrations/* npm fixtures remain outside the pnpm workspace on 5.9.3; the frozen vanilla benchmark is unchanged.

The latest tsup 8.5.1 injects a deprecated baseUrl default into DTS workers. A pinned one-line pnpm patch removes that injected default while preserving supplied compiler options. An actual declaration-worker regression proves emission without baseUrl and rejection of an explicitly supplied deprecated baseUrl. Root paths are explicit relative paths; Node ambient types are explicitly included to preserve existing timer typing after the new types: [] default. Narrow WebGPU field types and a checked instrumentation interface replace assumptions invalidated by updated DOM declarations. Strictness and existing library-check settings are unchanged; no added any, casts, deprecation suppression or skipped checks.

Current candidate normally absorbs develop abaa1f0e9 (#435 consolidated CI), starting from the externally updated TS7 head 188b45e9a. No force push or workflow/selector changes relative to develop. The inherited policy still selects the full board for this compiler upgrade. #435 deliberately retired the flaky browser fluid-consumers gate; CPU/native fluid collision coverage remains. This compiler PR makes no fluid runtime fix claim, and historical failures are retained.

Current-source validation: root and recursive TS7 checks passed; 354 focused toolchain/scaffold/CI tests passed; all 13 measured generated scaffold trees recover current develop's fingerprints after restoring only compiler manifests and rain's compatibility import. Normal commit hooks recorded the current 355-symbol public API. Independent review found no actionable defects. Current core JS/DTS build and publint passed; all 14 current-source core declaration files are byte-identical between TS5.9.3 and the compatibility API with the same tsup dependency graph. Normal pre-push drift checks and fresh actual CI will qualify this head.

Earlier evidence is scoped to its tested source: 41 declarations byte-identical on the initial base; 14 core declarations byte-identical on the #428 base. Initial full units: 608 files passed, 3 skipped; 7,901 tests passed, 13 skipped. All thirteen generated template compiler checks, starter production build, package builds/publint, API boundaries, real positive/negative DTS worker regressions, and rain generator identity passed. Fresh CI is required after the current base merge.

Performance measured on initial reviewed head 654049f30 before the bounded template-pin repair: three serial interleaved root checks on identical candidate source, dependency graph, config and built declarations. Node 20.19.6, 24 available CPUs (0–23), default compiler worker settings, no overlapping owned build/typecheck graph. Host is shared and uncontrolled; one-minute load was 4.34–6.28. TS5.9.3 elapsed 24.964/23.519/24.151s (median 24.151s); TS7.0.2 3.252/3.297/3.141s (median 3.252s): observed 7.43x speedup. Median peak child-process RSS was 1922.09 MiB vs 1986.89 MiB (+3.37%); this is not aggregate simultaneous-process RSS and does not show a memory reduction. Successful runs were measured with Python monotonic time and child rusage, without changing source/dependencies between pairs.

Historical head 493fb189d: main CI succeeded; Integration failed only in the now-retired browser fluid gate, with a dam advance operation timeout at 22,500ms. Cold boot and platformer passed unchanged limits. Earlier head479 CI and Integration failures (startup and fluid device loss) remain historical evidence. None qualify the new candidate, and gate retirement does not establish a runtime repair. No timeout or strictness relaxation, new GPU probe, or bypassed hooks.

@jonit-dev
jonit-dev marked this pull request as ready for review October 4, 2026 19:33
@jonit-dev
jonit-dev merged commit 4556586 into develop Oct 5, 2026
69 of 71 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant