Repository navigation
perf(toolchain): run checks with stable TypeScript 7 - #432
Merged
Merged
Conversation
jonit-dev
marked this pull request as ready for review
October 4, 2026 19:33
# Conflicts: # packages/create-threenative/__tests__/scaffold.spec.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.2package separately for its shader generator.typescriptimports and tsup DTS generation usenpm:@typescript/typescript6@6.0.2, following Microsoft's documented side-by-side strategy. The package exports APIts.version6.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 standaloneexamples/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
baseUrldefault 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 withoutbaseUrland rejection of an explicitly supplied deprecatedbaseUrl. Root paths are explicit relative paths; Node ambient types are explicitly included to preserve existing timer typing after the newtypes: []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 head188b45e9a. 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
654049f30before 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.