Skip to content

Fixes for recursive declarations, elided placeholders, cycles - #64432

Draft
Jake Bailey (jakebailey) wants to merge 11 commits into
microsoft:mainfrom
jakebailey:fix-recursive-type-checking-and-declaration-emit
Draft

Jake Bailey (jakebailey) wants to merge 11 commits into
microsoft:mainfrom
jakebailey:fix-recursive-type-checking-and-declaration-emit

Conversation

@jakebailey

Copy link
Copy Markdown
Member

Fixes #63825
Fixes #64405
Fixes #55832

This is a stack of a number of changes. It started off looking at #64405. On its face, that issue seemed like it was just going to be a Strada parity issue. Which it is, in a way, but it turns out that the errors that #64405 needed to "hide" were present in Strada, but were disabled and thrown away while not checking, meaning that it's basically more ghost errors.

The actual issue turned out to be a checker bug which led down a trail of other checker bugs, ones that were already open (and ones I wanted to fix at some point anyway).

So, this PR has 5 different fixes (in test+fix pairs for easier review):

It's possible some of this can be split apart into separate PRs, but all of this was found when I had copilot figure out the real cause of #64405 and I didn't think it was a good idea to lose the work, so I restructured it.

Recursive types that cannot be serialized and inferred types that exceed
the serialization depth limit can produce declarations containing any
instead of reporting an error. Record the existing declaration output
and include explicit type annotations as controls.
When inferred types cannot be serialized, declaration emit must report
cyclic structure or truncation errors rather than substitute any. Keep
type display unchanged.
Record the serialization depth limit errors for recursive arrays and
tuples, with finite types and accessible type aliases as controls.

Include initial and unchanged incremental builds for the recursive tuple
test. Add the comment-only edit with the fix because that edit hangs
before the fix.

For 63825
Deferred and regular type references can represent the same array or
tuple. Declaration emit expands these types structurally, so both
references must use the same entry in visitedTypes to detect a cycle.
Otherwise incremental declaration emit can repeatedly expand the type.

Use the regular type reference for the target and resolved type
arguments for cycle detection. Include the previously hanging
incremental edits with the fix.

Fixes 63825
Comment-only edits can resolve element types of recursive mapped arrays
and tuples during incremental declaration emit, introducing diagnostics
after a successful initial build. Cover these incremental differences,
circular type arguments, finite instantiations, and declaration emit.

Add the compiler test that fails the pre-emit/post-emit diagnostic count
check with the fix so each commit remains runnable.

For 64405
Recursive mapped arrays and tuples need deferred type references so
recursive instantiations can use the reference before its type arguments
are resolved. Resolving the element types eagerly instead reaches the
type instantiation depth limit and makes incremental builds disagree
with non-incremental builds.

Use the mapped type declaration and instantiated outer type parameters
for recursion identity. Preserve type aliases without modifying shared
instantiations. Keep tuples with variadic elements eager because mapped
element types can change the tuple structure.

Include the compiler test that fails the pre-emit/post-emit diagnostic
count check without the fix.

Fixes 64405
For 58696
Recursive function types with accessible names should use typeof in
emitted declarations. Cover arrows, function expressions, function
declarations, and consumption of the emitted declarations across
incremental builds.

Include variables with type annotations that differ from their function
initializers so typeof does not substitute the variable's different
type.
Recursive function types can use typeof with their variable's symbol
when the variable has the same type. Not using this accessible symbol
causes unnecessary cyclic structure errors. Using a variable with a
different annotated type instead loses the function type.

Track visited types when serializing structural pseudotypes so checker
fallbacks detect recursive references without adding another call
signature.

Fixes 55832
Placeholders for reverse mapped properties and index signatures cause
declaration emit to replace property and index signature types with any.
Consumers of the declarations then accept assignments rejected by the
original types.

Cover finite and recursive reverse mapped types, including recursive
instantiations with changing type arguments. Check incremental builds
and keep existing quick info output as a control.
Reverse mapped type placeholders are intended for type display, but they
also discard property and index signature types during declaration emit.
Serialize those types for declarations while keeping type display
unchanged.

Reverse mapped types without symbols can still be recursive. Include
them in visitedTypes and limit expansion by mapped type declaration when
changing type arguments produce new recursion identities. Report cyclic
structure or truncation errors instead of substituting any.
@jakebailey

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) test it

@typescript-automation

typescript-automation Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
test top400 ✅ Started 👀 Results
user test this ✅ Started 👀 Results
run dt ❌ Error: Error: TF215106: Access denied. typescriptbot-github3 needs Edit queue build configuration permissions for build pipeline 79:TypeScript PR DT Tests in team project TypeScript to perform the action. For more information, contact the Azure DevOps administrator.
perf test this faster ✅ Started 👀 Results

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

It changes core type instantiation, relation, and declaration-serialization behavior across many existing compiler scenarios.

Review effort: Balanced
Findings: None

What changed in this PR

Fixes recursive type serialization, deferred mapped array/tuple handling, and silent declaration-emit any fallbacks.

Changes:

  • Reports unserializable cyclic declarations instead of emitting elided any.
  • Preserves recursive function and reverse-mapped declaration types.
  • Defers mapped container instantiation and adds extensive regression coverage.
File Description
tsc/​testdata/​tests/​cases/​compiler/​reverseMappedDeclarationSerialization.ts Tests reverse-mapped declaration emit.
tsc/​testdata/​tests/​cases/​compiler/​recursiveMappedArray.ts Tests recursive mapped arrays.
tsc/​testdata/​tests/​cases/​compiler/​recursiveFunctionDeclarationSerialization.ts Tests recursive function serialization.
tsc/​testdata/​tests/​cases/​compiler/​recursiveContainerDeclarationSerialization.ts Tests recursive container serialization.
tsc/​testdata/​tests/​cases/​compiler/​deferredMappedTypeRelations.ts Tests deferred mapped-type relations.
tsc/​testdata/​tests/​cases/​compiler/​deferredMappedTypeDeclarationDepth.ts Tests serialization depth limits.
tsc/​testdata/​tests/​cases/​compiler/​deferredMappedTypeCircularArguments.ts Tests circular mapped arguments.
tsc/​testdata/​tests/​cases/​compiler/​deferredMappedTypeAliasInstantiation.ts Tests deferred alias instantiation.
tsc/​testdata/​tests/​cases/​compiler/​declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.ts Updates recursive serialization expectations.
tsc/​testdata/​tests/​cases/​compiler/​declarationEmitUnserializableTypes.ts Tests diagnostics for unserializable types.
tsc/​testdata/​baselines/​reference/​fourslash/​quickInfo/​reverseMappedDeclarationQuickInfo.baseline Records reverse-mapped hover output.
tsc/​testdata/​baselines/​reference/​conformance/​varianceAnnotations.js Removes invalid declaration output.
tsc/​testdata/​baselines/​reference/​conformance/​varianceAnnotations.errors.txt Records cyclic serialization diagnostic.
tsc/​testdata/​baselines/​reference/​conformance/​recursiveMappedTypes.types Updates deferred mapped-type displays.
tsc/​testdata/​baselines/​reference/​conformance/​recursiveMappedTypes.errors.txt Updates relation diagnostics.
tsc/​testdata/​baselines/​reference/​conformance/​partiallyNamedTuples.types Preserves mapped tuple aliases.
tsc/​testdata/​baselines/​reference/​conformance/​newTarget.es6.types Updates recursive function display.
tsc/​testdata/​baselines/​reference/​conformance/​newTarget.es5(target=es2015).types Updates recursive function display.
tsc/​testdata/​baselines/​reference/​conformance/​mappedTypeWithAny.types Preserves mapped array aliases.
tsc/​testdata/​baselines/​reference/​conformance/​mappedTypesGenericTuples.types Preserves deferred tuple aliases.
tsc/​testdata/​baselines/​reference/​conformance/​mappedTypesArraysTuples.types Records deferred mapped containers.
tsc/​testdata/​baselines/​reference/​conformance/​localesObjectArgument.types Preserves Readonly aliases.
tsc/​testdata/​baselines/​reference/​conformance/​functionImplementations.types Updates recursive function identity.
tsc/​testdata/​baselines/​reference/​conformance/​commonJSImportNestedClassTypeReference.js Removes invalid cyclic declaration.
tsc/​testdata/​baselines/​reference/​conformance/​commonJSImportNestedClassTypeReference.errors.txt Records cyclic declaration error.
tsc/​testdata/​baselines/​reference/​compiler/​thisInPropertyBoundDeclarations.types Updates recursive structural display.
tsc/​testdata/​baselines/​reference/​compiler/​stripMembersOptionality2(exactoptionalpropertytypes=true).types Preserves mapped tuple aliases.
tsc/​testdata/​baselines/​reference/​compiler/​stripMembersOptionality2(exactoptionalpropertytypes=false).types Preserves mapped tuple aliases.
tsc/​testdata/​baselines/​reference/​compiler/​reverseMappedDeclarationSerialization.types Records inferred reverse-mapped types.
tsc/​testdata/​baselines/​reference/​compiler/​reverseMappedDeclarationSerialization.symbols Records test symbols.
tsc/​testdata/​baselines/​reference/​compiler/​reverseMappedDeclarationSerialization.js Records correct declaration emit.
tsc/​testdata/​baselines/​reference/​compiler/​reverseMappedDeclarationSerialization.errors.txt Records recursive mapping errors.
tsc/​testdata/​baselines/​reference/​compiler/​recursiveMappedArray.types Records recursive mapped-array type.
tsc/​testdata/​baselines/​reference/​compiler/​recursiveMappedArray.symbols Records test symbols.
tsc/​testdata/​baselines/​reference/​compiler/​recursiveMappedArray.js Records declaration emit.
tsc/​testdata/​baselines/​reference/​compiler/​recursiveFunctionDeclarationSerialization.types Records recursive function types.
tsc/​testdata/​baselines/​reference/​compiler/​recursiveFunctionDeclarationSerialization.symbols Records recursive symbols.
tsc/​testdata/​baselines/​reference/​compiler/​recursiveFunctionDeclarationSerialization.js Records typeof declaration emit.
tsc/​testdata/​baselines/​reference/​compiler/​recursiveFunctionDeclarationSerialization.errors.txt Records expected misuse error.
tsc/​testdata/​baselines/​reference/​compiler/​recursiveContainerDeclarationSerialization.types Records recursive container types.
tsc/​testdata/​baselines/​reference/​compiler/​recursiveContainerDeclarationSerialization.symbols Records container symbols.
tsc/​testdata/​baselines/​reference/​compiler/​recursiveContainerDeclarationSerialization.js Records valid named declarations.
tsc/​testdata/​baselines/​reference/​compiler/​recursiveContainerDeclarationSerialization.errors.txt Records unserializable container errors.
tsc/​testdata/​baselines/​reference/​compiler/​readonlyTupleAndArrayElaboration.types Preserves Readonly representation.
tsc/​testdata/​baselines/​reference/​compiler/​readonlyTupleAndArrayElaboration.errors.txt Updates diagnostic type text.
tsc/​testdata/​baselines/​reference/​compiler/​optionalTupleElementsAndUndefined.types Preserves mapped tuple alias.
tsc/​testdata/​baselines/​reference/​compiler/​objectFromEntries.types Preserves Readonly aliases.
tsc/​testdata/​baselines/​reference/​compiler/​objectFreeze.types Preserves Readonly aliases.
tsc/​testdata/​baselines/​reference/​compiler/​objectFreeze.errors.txt Updates diagnostic type text.
tsc/​testdata/​baselines/​reference/​compiler/​noImplicitThisBigThis.types Truncates recursive display safely.
tsc/​testdata/​baselines/​reference/​compiler/​noImplicitThisBigThis.js Removes invalid declarations.
tsc/​testdata/​baselines/​reference/​compiler/​noImplicitThisBigThis.errors.txt Records cyclic serialization errors.
tsc/​testdata/​baselines/​reference/​compiler/​mappedArrayTupleIntersections.types Records deferred mapped intersections.
tsc/​testdata/​baselines/​reference/​compiler/​inferRestArgumentsMappedTuple.types Preserves mapped tuple aliases.
tsc/​testdata/​baselines/​reference/​compiler/​functionExpressionReturningItself.types Uses variable recursion identity.
tsc/​testdata/​baselines/​reference/​compiler/​functionExpressionReturningItself.js Emits recursive typeof reference.
tsc/​testdata/​baselines/​reference/​compiler/​emitClassExpressionInDeclarationFile.js Removes invalid cyclic declaration.
tsc/​testdata/​baselines/​reference/​compiler/​emitClassExpressionInDeclarationFile.errors.txt Records cyclic class error.
tsc/​testdata/​baselines/​reference/​compiler/​deferredMappedTypeRelations.types Records relation test types.
tsc/​testdata/​baselines/​reference/​compiler/​deferredMappedTypeRelations.js Records relation test emit.
tsc/​testdata/​baselines/​reference/​compiler/​deferredMappedTypeDeclarationDepth.js Records finite declaration output.
tsc/​testdata/​baselines/​reference/​compiler/​deferredMappedTypeDeclarationDepth.errors.txt Records growing-type depth errors.
tsc/​testdata/​baselines/​reference/​compiler/​deferredMappedTypeCircularArguments.types Records circular argument types.
tsc/​testdata/​baselines/​reference/​compiler/​deferredMappedTypeCircularArguments.symbols Records circular argument symbols.
tsc/​testdata/​baselines/​reference/​compiler/​deferredMappedTypeCircularArguments.js Records emitted fallback types.
tsc/​testdata/​baselines/​reference/​compiler/​deferredMappedTypeCircularArguments.errors.txt Records array and tuple cycle errors.
tsc/​testdata/​baselines/​reference/​compiler/​deferredMappedTypeAliasInstantiation.types Records deferred alias types.
tsc/​testdata/​baselines/​reference/​compiler/​deferredMappedTypeAliasInstantiation.symbols Records alias symbols.
tsc/​testdata/​baselines/​reference/​compiler/​deferredMappedTypeAliasInstantiation.js Records preserved alias declarations.
tsc/​testdata/​baselines/​reference/​compiler/​deferredMappedTypeAliasInstantiation.errors.txt Records element assignment errors.
tsc/​testdata/​baselines/​reference/​compiler/​declFileTypeofFunction.js Emits recursive function typeof.
tsc/​testdata/​baselines/​reference/​compiler/​declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.symbols Updates test commentary.
tsc/​testdata/​baselines/​reference/​compiler/​declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.js Removes truncated declarations.
tsc/​testdata/​baselines/​reference/​compiler/​declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.errors.txt Records serialization-limit errors.
tsc/​testdata/​baselines/​reference/​compiler/​declarationEmitUnserializableTypes.types Records unserializable inferred types.
tsc/​testdata/​baselines/​reference/​compiler/​declarationEmitUnserializableTypes.symbols Records test symbols.
tsc/​testdata/​baselines/​reference/​compiler/​declarationEmitUnserializableTypes.js Emits only serializable declarations.
tsc/​testdata/​baselines/​reference/​compiler/​declarationEmitUnserializableTypes.errors.txt Records cycle and depth diagnostics.
tsc/​testdata/​baselines/​reference/​compiler/​declarationEmitStaticMethodNonIdentifierNames.js Removes invalid recursive declaration.
tsc/​testdata/​baselines/​reference/​compiler/​declarationEmitStaticMethodNonIdentifierNames.errors.txt Records recursive private-method error.
tsc/​testdata/​baselines/​reference/​compiler/​declarationEmitMappedTypePreservesTypeParameterConstraint.types Preserves mapped alias display.
tsc/​testdata/​baselines/​reference/​compiler/​declarationEmitInferredTypeAlias4.js Removes invalid cyclic declaration.
tsc/​testdata/​baselines/​reference/​compiler/​declarationEmitInferredTypeAlias4.errors.txt Records cyclic return-type error.
tsc/​testdata/​baselines/​reference/​compiler/​classExpressionInClassStaticDeclarations.js Removes invalid cyclic declaration.
tsc/​testdata/​baselines/​reference/​compiler/​classExpressionInClassStaticDeclarations.errors.txt Records cyclic static-property error.
tsc/​internal/​fourslash/​tests/​reverseMappedDeclarationQuickInfo_test.go Tests reverse-mapped Quick Info.
tsc/​internal/​fourslash/​tests/​recursiveFunctionQuickInfo_test.go Tests recursive function Quick Info.
tsc/​internal/​checker/​types.go Documents deferred mapped nodes.
tsc/​internal/​checker/​relater.go Adds mapped recursion identities.
tsc/​internal/​checker/​pseudotypenodebuilder.go Tracks structural pseudotype recursion.
tsc/​internal/​checker/​nodebuilderimpl.go Detects cycles and improves declaration serialization.
tsc/​internal/​checker/​checker.go Defers mapped arrays/tuples and preserves aliases.

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

@jakebailey

Jake Bailey (jakebailey) commented Sep 24, 2026 •

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) run dt

(this will be a lie but I'm just checking the bot)

@typescript-automation

typescript-automation Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
run dt ✅ Started ❌ Results

@typescript-automation

Copy link
Copy Markdown

Jake Bailey (@jakebailey)
The results of the perf run you requested are in!

Here they are:

tsc

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-Unions - native
Errors 41 41 ~ ~ ~ p=1.000 n=12
Symbols 115,480 115,480 ~ ~ ~ p=1.000 n=12
Types 96,949 96,949 ~ ~ ~ p=1.000 n=12
Memory Used 148,594k (± 0.56%) 149,032k (± 0.48%) ~ 147,105k 150,862k p=0.319 n=12
Memory Allocs 2,271,729 (± 0.01%) 2,271,716 (± 0.00%) ~ 2,271,499 2,271,887 p=0.887 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.041s (± 3.84%) 0.041s (± 6.35%) ~ 0.035s 0.048s p=0.678 n=12
Bind Time 0.013s (±12.86%) 0.012s (±14.71%) ~ 0.010s 0.018s p=0.440 n=12
Check Time 0.509s (± 0.52%) 0.514s (± 0.61%) +0.005s (+ 0.93%) 0.505s 0.521s p=0.031 n=12
Emit Time 0.268s (± 1.47%) 0.274s (± 1.95%) ~ 0.259s 0.292s p=0.085 n=12
Total Time 0.837s (± 0.74%) 0.847s (± 0.70%) +0.010s (+ 1.24%) 0.835s 0.862s p=0.019 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 846,646 (± 0.08%) 848,489 (± 0.08%) +1,843 (+ 0.22%) 845,772 849,575 p=0.001 n=12
Types 250,004 (± 0.00%) 250,082 (± 0.00%) +78 (+ 0.03%) 250,077 250,089 p=0.000 n=12
Memory Used 793,185k (± 0.05%) 794,234k (± 0.04%) +1,049k (+ 0.13%) 793,189k 794,799k p=0.000 n=12
Memory Allocs 12,956,614 (± 0.01%) 12,961,107 (± 0.03%) ~ 12,954,628 12,976,933 p=0.060 n=12
Config Time 0.016s 0.016s ~ ~ ~ p=1.000 n=12
Parse Time 0.269s (± 3.21%) 0.271s (± 2.77%) ~ 0.253s 0.296s p=0.832 n=12
Bind Time 0.068s (±17.14%) 0.065s (± 7.46%) ~ 0.058s 0.080s p=0.253 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.624s (± 1.16%) 1.634s (± 1.88%) ~ 1.582s 1.709s p=1.000 n=12
Total Time 1.993s (± 1.31%) 2.008s (± 2.06%) ~ 1.944s 2.122s p=0.921 n=12
mui-docs - native
Errors 11,397 (± 0.08%) 11,396 (± 0.07%) ~ 11,378 11,408 p=1.000 n=12
Symbols 4,402,219 4,402,287 +68 (+ 0.00%) ~ ~ p=0.000 n=12
Types 1,489,173 1,489,218 +45 (+ 0.00%) ~ ~ p=0.000 n=12
Memory Used 4,786,820k (± 0.03%) 4,788,394k (± 0.03%) ~ 4,783,823k 4,791,402k p=0.143 n=12
Memory Allocs 42,330,300 (± 0.04%) 42,347,836 (± 0.03%) ~ 42,307,968 42,372,257 p=0.143 n=12
Config Time 0.015s (± 2.10%) 0.016s (± 1.98%) ~ 0.015s 0.016s p=0.414 n=12
Parse Time 0.563s (± 1.89%) 0.566s (± 1.39%) ~ 0.538s 0.584s p=0.898 n=12
Bind Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Check Time 15.351s (± 0.43%) 15.374s (± 0.49%) ~ 15.239s 15.625s p=0.660 n=12
Emit Time 0.454s (± 2.73%) 0.450s (± 2.80%) ~ 0.432s 0.474s p=0.354 n=12
Total Time 17.126s (± 0.44%) 17.161s (± 0.50%) ~ 16.990s 17.441s p=0.514 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,394,252 1,394,318 +66 (+ 0.00%) ~ ~ p=0.000 n=12
Types 443,566 443,581 +15 (+ 0.00%) ~ ~ p=0.000 n=12
Memory Used 1,664,954k (± 0.47%) 1,663,758k (± 0.46%) ~ 1,652,189k 1,689,421k p=0.799 n=12
Memory Allocs 83,626,472 (± 0.11%) 83,645,854 (± 0.04%) ~ 83,544,673 83,726,095 p=0.551 n=12
Config Time 0.004s (±13.41%) 0.004s (± 9.47%) ~ 0.003s 0.005s p=0.777 n=12
Parse Time 0.269s (± 2.26%) 0.264s (± 2.34%) ~ 0.250s 0.281s p=0.259 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 1.836s (± 0.55%) 1.862s (± 0.46%) +0.027s (+ 1.44%) 1.842s 1.881s p=0.001 n=12
Emit Time 0.282s (± 2.65%) 0.285s (± 2.93%) ~ 0.270s 0.312s p=0.899 n=12
Total Time 21.039s (± 0.67%) 21.404s (± 0.41%) +0.365s (+ 1.74%) 21.200s 21.601s p=0.000 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 337,531 337,531 ~ ~ ~ p=1.000 n=12
Types 198,885 198,896 +11 (+ 0.01%) ~ ~ p=0.000 n=12
Memory Used 319,612k (± 0.03%) 319,643k (± 0.05%) ~ 319,326k 320,136k p=1.000 n=12
Memory Allocs 4,673,110 (± 0.01%) 4,672,914 (± 0.01%) ~ 4,671,835 4,673,737 p=0.843 n=12
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=12
Parse Time 0.116s (± 6.08%) 0.116s (± 5.61%) ~ 0.101s 0.128s p=0.989 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 1.073s (± 0.53%) 1.087s (± 0.59%) +0.014s (+ 1.33%) 1.072s 1.102s p=0.002 n=12
Emit Time 0.128s (±14.27%) 0.140s (±11.76%) ~ 0.099s 0.178s p=0.417 n=12
Total Time 1.373s (± 1.43%) 1.396s (± 1.30%) ~ 1.346s 1.443s p=0.054 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 305,179 305,179 ~ ~ ~ p=1.000 n=12
Types 181,926 181,941 +15 (+ 0.01%) ~ ~ p=0.000 n=12
Memory Used 277,142k (± 0.02%) 277,169k (± 0.03%) ~ 277,024k 277,375k p=0.641 n=12
Memory Allocs 1,642,314 (± 0.02%) 1,642,060 (± 0.01%) ~ 1,641,748 1,642,438 p=0.198 n=12
Config Time 0.000s (±217.90%) 0.000s (±146.91%) ~ 0.000s 0.001s p=1.000 n=12
Parse Time 0.096s (± 3.63%) 0.103s (± 4.94%) 🔻+0.007s (+ 7.45%) 0.088s 0.113s p=0.025 n=12
Bind Time 0.036s (±12.79%) 0.040s (±12.31%) ~ 0.028s 0.050s p=0.384 n=12
Check Time 0.850s (± 0.61%) 0.855s (± 0.71%) ~ 0.845s 0.878s p=0.223 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.997s (± 0.73%) 1.012s (± 1.21%) ~ 0.990s 1.052s p=0.054 n=12
vscode - native
Errors 371 371 ~ ~ ~ p=1.000 n=12
Symbols 9,665,225 9,693,757 +28,532 (+ 0.30%) ~ ~ p=0.000 n=12
Types 3,259,959 3,263,663 +3,704 (+ 0.11%) ~ ~ p=0.000 n=12
Memory Used 6,377,767k (± 0.02%) 6,386,497k (± 0.02%) +8,730k (+ 0.14%) 6,384,252k 6,389,028k p=0.000 n=12
Memory Allocs 48,912,094 (± 0.02%) 48,941,803 (± 0.02%) +29,709 (+ 0.06%) 48,929,489 48,981,287 p=0.001 n=12
Config Time 0.066s (± 0.49%) 0.065s (± 0.63%) ~ 0.065s 0.067s p=0.214 n=12
Parse Time 1.789s (± 3.39%) 1.804s (± 2.73%) ~ 1.656s 1.875s p=0.347 n=12
Bind Time 0.478s (±19.73%) 0.475s (±20.07%) ~ 0.397s 0.799s p=1.000 n=12
Check Time 12.482s (± 1.11%) 12.511s (± 1.15%) ~ 12.110s 12.699s p=0.311 n=12
Emit Time 4.151s (±11.35%) 4.356s (±11.48%) ~ 3.583s 5.433s p=0.504 n=12
Total Time 19.071s (± 2.03%) 19.316s (± 2.07%) ~ 18.594s 20.171s p=0.219 n=12
webpack - native
Errors 848 848 ~ ~ ~ p=1.000 n=12
Symbols 1,358,721 1,445,013 🔻+86,292 (+ 6.35%) ~ ~ p=0.000 n=12
Types 597,693 633,104 🔻+35,411 (+ 5.92%) ~ ~ p=0.000 n=12
Memory Used 954,261k (± 0.02%) 990,413k (± 0.02%) +36,152k (+ 3.79%) 990,040k 991,086k p=0.000 n=12
Memory Allocs 6,224,708 (± 0.02%) 6,616,045 (± 0.02%) 🔻+391,337 (+ 6.29%) 6,614,238 6,620,765 p=0.000 n=12
Config Time 0.009s 0.010s (± 6.23%) 🔻+0.001s (+ 8.33%) 0.009s 0.011s p=0.037 n=12
Parse Time 0.267s (± 2.15%) 0.276s (± 3.58%) ~ 0.251s 0.306s p=0.124 n=12
Bind Time 0.064s (±14.66%) 0.079s (±19.30%) 🔻+0.016s (+24.64%) 0.056s 0.116s p=0.010 n=12
Check Time 2.223s (± 0.83%) 2.367s (± 2.96%) 🔻+0.144s (+ 6.49%) 2.286s 2.688s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 2.599s (± 0.46%) 2.770s (± 2.66%) 🔻+0.171s (+ 6.57%) 2.680s 3.102s p=0.000 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,045,695 1,046,237 +542 (+ 0.05%) ~ ~ p=0.000 n=12
Types 383,049 383,519 +470 (+ 0.12%) ~ ~ p=0.000 n=12
Memory Used 611,335k (± 0.01%) 611,338k (± 0.04%) ~ 610,254k 611,591k p=0.101 n=12
Memory Allocs 4,829,317 (± 0.04%) 4,836,593 (± 0.05%) +7,277 (+ 0.15%) 4,831,755 4,844,382 p=0.000 n=12
Config Time 0.003s (±10.34%) 0.003s (±12.54%) ~ 0.002s 0.003s p=0.667 n=12
Parse Time 0.142s (± 2.25%) 0.148s (± 3.01%) 🔻+0.006s (+ 4.21%) 0.141s 0.161s p=0.043 n=12
Bind Time 0.043s (±16.88%) 0.047s (±13.76%) ~ 0.033s 0.059s p=0.384 n=12
Check Time 1.192s (± 0.37%) 1.255s (± 3.53%) 🔻+0.063s (+ 5.29%) 1.187s 1.362s p=0.002 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.391s (± 0.70%) 1.464s (± 3.11%) 🔻+0.073s (+ 5.23%) 1.393s 1.579s p=0.001 n=12
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • mui-docs - native
  • strada-build-src - native
  • strada-compiler - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

Developer Information:

Download Benchmarks

@typescript-automation

Copy link
Copy Markdown

Jake Bailey (@jakebailey) Here are the results of running the user tests with tsc comparing main and refs/pull/64432/merge:

There were infrastructure failures potentially unrelated to your change:

  • 1 instance of "Git clone failed"
  • 1 instance of "Package install failed"

Otherwise...

Something interesting changed - please have a look.

Details

puppeteer

test/tsconfig.json

webpack

tsconfig.json

  • [NEW] error TS2322: Type 'HookMap<SyncBailHook<ExtractTupleElements<[HTML_MODULE_TYPE, HtmlParser, HtmlParserOptions, HtmlGenerator, HtmlGeneratorOptions], [2]>, HtmlParser, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [2]>, JavascriptParser, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [1, 2]>, void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [1, 2]>, void, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncBailHook<ExtractTupleElements<[HTML_MODULE_TYPE, HtmlParser, HtmlParserOptions, HtmlGenerator, HtmlGeneratorOptions], [4]>, HtmlGenerator, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [4]>, JavascriptGenerator, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [3, 4]>, void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [3, 4]>, void, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncBailHook<[HtmlParserOptions], HtmlParser, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptParserOptions], JavascriptParser, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptParserOptions], JavascriptParser, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncBailHook<[HtmlGeneratorOptions], HtmlGenerator, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.

tsconfig.types.json

  • [NEW] error TS2322: Type 'HookMap<SyncBailHook<ExtractTupleElements<[HTML_MODULE_TYPE, HtmlParser, HtmlParserOptions, HtmlGenerator, HtmlGeneratorOptions], [2]>, HtmlParser, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [2]>, JavascriptParser, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [1, 2]>, void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [1, 2]>, void, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncBailHook<ExtractTupleElements<[HTML_MODULE_TYPE, HtmlParser, HtmlParserOptions, HtmlGenerator, HtmlGeneratorOptions], [4]>, HtmlGenerator, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [4]>, JavascriptGenerator, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [3, 4]>, void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [3, 4]>, void, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncBailHook<[HtmlParserOptions], HtmlParser, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptParserOptions], JavascriptParser, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptParserOptions], JavascriptParser, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncBailHook<[HtmlGeneratorOptions], HtmlGenerator, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.

tsconfig.types.test.json

  • [NEW] error TS2322: Type 'HookMap<SyncBailHook<ExtractTupleElements<[HTML_MODULE_TYPE, HtmlParser, HtmlParserOptions, HtmlGenerator, HtmlGeneratorOptions], [2]>, HtmlParser, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [2]>, JavascriptParser, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [1, 2]>, void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [1, 2]>, void, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncBailHook<ExtractTupleElements<[HTML_MODULE_TYPE, HtmlParser, HtmlParserOptions, HtmlGenerator, HtmlGeneratorOptions], [4]>, HtmlGenerator, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [4]>, JavascriptGenerator, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [3, 4]>, void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [3, 4]>, void, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncBailHook<[HtmlParserOptions], HtmlParser, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptParserOptions], JavascriptParser, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptParserOptions], JavascriptParser, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncBailHook<[HtmlGeneratorOptions], HtmlGenerator, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.

@typescript-automation

Copy link
Copy Markdown

Jake Bailey (@jakebailey) Here are the results of running the top 400 repos with tsc comparing main and refs/pull/64432/merge:

Something interesting changed - please have a look.

Details

different-ai/openwork

16 of 43 projects failed to build with the old tsc and were ignored

packages/enterprise-mcp-mock-server/tsconfig.json

facebook/docusaurus

26 of 43 projects failed to build with the old tsc and were ignored

packages/docusaurus-faster/tsconfig.json

Distinct deferred references to equivalent mapped arrays and tuples
prevent member instantiations from sharing cached results. This adds
substantial work in webpack without changing the resulting types.

Member instantiation needs a regular reference for sharing, while the
original deferred reference must retain its alias and recursion
identity.

Measured with 16 interleaved runs after warmup. pr.bench is the
published PR; candidate.bench includes this change. The sec/op metric
measures check time.

        │  pr.bench  │          candidate.bench          │
        │   sec/op   │   sec/op    vs base               │
Webpack   1.873 ± 2%   1.787 ± 2%  -4.59% (p=0.000 n=16)
Xstate    1.033 ± 2%   1.026 ± 2%       ~ (p=0.570 n=16)
geomean   1.390        1.354       -2.66%

        │  pr.bench   │          candidate.bench           │
        │  allocs/op  │  allocs/op   vs base               │
Webpack   6.603M ± 0%   6.224M ± 0%  -5.74% (p=0.000 n=16)
Xstate    4.826M ± 0%   4.826M ± 0%       ~ (p=0.752 n=16)
geomean   5.645M        5.481M       -2.91%
@jakebailey
Jake Bailey (jakebailey) force-pushed the fix-recursive-type-checking-and-declaration-emit branch from e3e2b01 to e52d5a1 Compare September 25, 2026 04:37
@jakebailey

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) test it

@typescript-automation

typescript-automation Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
test top400 ✅ Started 👀 Results
user test this ✅ Started 👀 Results
run dt ✅ Started ❌ Results
perf test this faster ✅ Started 👀 Results

@typescript-automation

Copy link
Copy Markdown

Jake Bailey (@jakebailey)
The results of the perf run you requested are in!

Here they are:

tsc

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-Unions - native
Errors 41 41 ~ ~ ~ p=1.000 n=12
Symbols 115,480 115,480 ~ ~ ~ p=1.000 n=12
Types 96,949 96,949 ~ ~ ~ p=1.000 n=12
Memory Used 149,126k (± 0.69%) 148,403k (± 0.41%) ~ 147,140k 150,096k p=0.242 n=12
Memory Allocs 2,271,633 (± 0.01%) 2,271,722 (± 0.01%) ~ 2,271,341 2,272,000 p=0.347 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.040s (± 3.95%) 0.041s (± 4.17%) ~ 0.036s 0.044s p=0.679 n=12
Bind Time 0.011s (± 8.31%) 0.013s (±11.46%) ~ 0.010s 0.017s p=0.101 n=12
Check Time 0.500s (± 0.47%) 0.506s (± 0.77%) +0.006s (+ 1.20%) 0.498s 0.517s p=0.008 n=12
Emit Time 0.266s (± 2.38%) 0.272s (± 1.86%) ~ 0.262s 0.288s p=0.369 n=12
Total Time 0.824s (± 0.68%) 0.837s (± 0.88%) +0.014s (+ 1.65%) 0.819s 0.859s p=0.013 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 846,789 (± 0.10%) 849,750 (± 0.07%) +2,961 (+ 0.35%) 847,958 851,253 p=0.000 n=12
Types 250,004 (± 0.00%) 250,318 (± 0.00%) +314 (+ 0.13%) 250,314 250,326 p=0.000 n=12
Memory Used 793,389k (± 0.06%) 794,411k (± 0.04%) +1,022k (+ 0.13%) 793,777k 795,334k p=0.001 n=12
Memory Allocs 12,963,198 (± 0.06%) 12,964,200 (± 0.04%) ~ 12,958,228 12,986,893 p=0.089 n=12
Config Time 0.016s 0.016s ~ ~ ~ p=1.000 n=12
Parse Time 0.274s (± 2.32%) 0.272s (± 2.70%) ~ 0.256s 0.288s p=0.898 n=12
Bind Time 0.062s (± 8.15%) 0.061s (± 4.58%) ~ 0.058s 0.073s p=0.636 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.628s (± 1.43%) 1.617s (± 1.01%) ~ 1.582s 1.677s p=0.523 n=12
Total Time 1.998s (± 1.44%) 1.982s (± 0.92%) ~ 1.928s 2.050s p=0.855 n=12
mui-docs - native
Errors 11,397 (± 0.05%) 11,398 (± 0.06%) ~ 11,379 11,408 p=0.504 n=12
Symbols 4,402,219 4,402,287 +68 (+ 0.00%) ~ ~ p=0.000 n=12
Types 1,489,173 1,489,229 +56 (+ 0.00%) ~ ~ p=0.000 n=12
Memory Used 4,786,986k (± 0.05%) 4,787,860k (± 0.04%) ~ 4,782,140k 4,791,948k p=0.671 n=12
Memory Allocs 42,343,855 (± 0.07%) 42,337,807 (± 0.04%) ~ 42,283,470 42,380,941 p=1.000 n=12
Config Time 0.016s (± 2.08%) 0.015s (± 2.02%) ~ 0.015s 0.016s p=0.414 n=12
Parse Time 0.558s (± 1.97%) 0.561s (± 1.68%) ~ 0.533s 0.582s p=0.619 n=12
Bind Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Check Time 15.395s (± 0.45%) 15.377s (± 0.39%) ~ 15.247s 15.523s p=0.755 n=12
Emit Time 0.443s (± 2.58%) 0.448s (± 2.81%) ~ 0.431s 0.472s p=0.153 n=12
Total Time 17.178s (± 0.43%) 17.149s (± 0.36%) ~ 17.000s 17.302s p=0.469 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,394,252 1,394,318 +66 (+ 0.00%) ~ ~ p=0.000 n=12
Types 443,566 443,581 +15 (+ 0.00%) ~ ~ p=0.000 n=12
Memory Used 1,665,170k (± 0.63%) 1,667,520k (± 0.47%) ~ 1,652,904k 1,697,454k p=0.514 n=12
Memory Allocs 83,637,682 (± 0.05%) 83,602,399 (± 0.09%) ~ 83,249,821 83,712,470 p=0.443 n=12
Config Time 0.004s (±13.92%) 0.003s (±12.31%) ~ 0.003s 0.005s p=0.487 n=12
Parse Time 0.265s (± 1.85%) 0.267s (± 2.69%) ~ 0.250s 0.290s p=0.810 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 1.835s (± 0.42%) 1.847s (± 0.39%) +0.012s (+ 0.67%) 1.827s 1.862s p=0.018 n=12
Emit Time 0.286s (± 3.01%) 0.284s (± 3.48%) ~ 0.262s 0.310s p=0.702 n=12
Total Time 21.133s (± 0.59%) 21.277s (± 0.69%) ~ 20.886s 21.560s p=0.143 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 337,531 337,531 ~ ~ ~ p=1.000 n=12
Types 198,885 198,896 +11 (+ 0.01%) ~ ~ p=0.000 n=12
Memory Used 319,546k (± 0.02%) 319,605k (± 0.05%) ~ 319,085k 319,977k p=0.248 n=12
Memory Allocs 4,672,913 (± 0.01%) 4,672,796 (± 0.01%) ~ 4,671,594 4,673,821 p=0.671 n=12
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=12
Parse Time 0.114s (± 5.15%) 0.117s (± 4.53%) ~ 0.102s 0.128s p=0.599 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 1.076s (± 0.47%) 1.078s (± 0.39%) ~ 1.069s 1.093s p=0.659 n=12
Emit Time 0.136s (±11.35%) 0.124s (±12.47%) ~ 0.097s 0.160s p=0.213 n=12
Total Time 1.378s (± 1.06%) 1.374s (± 0.86%) ~ 1.351s 1.404s p=0.385 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 305,179 305,179 ~ ~ ~ p=1.000 n=12
Types 181,926 181,942 +16 (+ 0.01%) ~ ~ p=0.000 n=12
Memory Used 277,203k (± 0.03%) 277,182k (± 0.02%) ~ 277,034k 277,344k p=0.580 n=12
Memory Allocs 1,641,954 (± 0.01%) 1,642,095 (± 0.01%) ~ 1,641,659 1,642,654 p=0.378 n=12
Config Time 0.000s (±113.79%) 0.000s (±113.79%) ~ 0.000s 0.001s p=1.000 n=12
Parse Time 0.103s (± 4.50%) 0.099s (± 4.72%) ~ 0.087s 0.113s p=0.370 n=12
Bind Time 0.039s (±10.16%) 0.040s (±13.83%) ~ 0.029s 0.051s p=0.943 n=12
Check Time 0.851s (± 0.61%) 0.852s (± 0.64%) ~ 0.845s 0.869s p=0.963 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.007s (± 0.60%) 1.005s (± 0.63%) ~ 0.990s 1.017s p=0.744 n=12
vscode - native
Errors 371 371 ~ ~ ~ p=1.000 n=12
Symbols 9,719,839 9,748,643 +28,804 (+ 0.30%) ~ ~ p=0.000 n=12
Types 3,282,212 3,286,336 +4,124 (+ 0.13%) ~ ~ p=0.000 n=12
Memory Used 6,412,107k (± 0.02%) 6,421,474k (± 0.02%) +9,367k (+ 0.15%) 6,418,419k 6,424,072k p=0.000 n=12
Memory Allocs 49,278,796 (± 0.02%) 49,313,295 (± 0.02%) +34,499 (+ 0.07%) 49,301,655 49,361,708 p=0.000 n=12
Config Time 0.066s 0.066s (± 0.37%) ~ 0.066s 0.067s p=0.478 n=12
Parse Time 1.801s (± 2.95%) 1.768s (± 4.43%) ~ 1.655s 1.989s p=0.225 n=12
Bind Time 0.518s (±21.48%) 0.626s (±20.00%) ~ 0.402s 0.829s p=0.681 n=12
Check Time 13.219s (± 1.31%) 13.103s (± 1.37%) ~ 12.811s 13.441s p=0.236 n=12
Emit Time 4.348s (±12.78%) 4.546s (±12.33%) ~ 3.638s 5.528s p=0.713 n=12
Total Time 20.060s (± 2.29%) 20.222s (± 2.22%) ~ 19.472s 21.044s p=0.410 n=12
webpack - native
Errors 848 848 ~ ~ ~ p=1.000 n=12
Symbols 1,358,721 1,361,140 +2,419 (+ 0.18%) ~ ~ p=0.000 n=12
Types 597,693 599,282 +1,589 (+ 0.27%) ~ ~ p=0.000 n=12
Memory Used 954,277k (± 0.02%) 955,534k (± 0.01%) +1,257k (+ 0.13%) 955,031k 955,835k p=0.000 n=12
Memory Allocs 6,224,812 (± 0.03%) 6,239,250 (± 0.02%) +14,438 (+ 0.23%) 6,237,753 6,243,185 p=0.000 n=12
Config Time 0.009s 0.009s ~ ~ ~ p=1.000 n=12
Parse Time 0.267s (± 3.20%) 0.262s (± 4.20%) ~ 0.244s 0.302s p=0.340 n=12
Bind Time 0.067s (±17.20%) 0.080s (±18.54%) ~ 0.054s 0.116s p=0.116 n=12
Check Time 2.214s (± 0.94%) 2.218s (± 2.17%) ~ 2.163s 2.444s p=0.486 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 2.594s (± 0.57%) 2.607s (± 1.83%) ~ 2.558s 2.836s p=0.580 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,045,695 1,046,237 +542 (+ 0.05%) ~ ~ p=0.000 n=12
Types 383,049 383,519 +470 (+ 0.12%) ~ ~ p=0.000 n=12
Memory Used 611,251k (± 0.02%) 611,450k (± 0.02%) +199k (+ 0.03%) 611,047k 611,822k p=0.005 n=12
Memory Allocs 4,829,820 (± 0.02%) 4,835,834 (± 0.03%) +6,013 (+ 0.12%) 4,832,549 4,839,181 p=0.000 n=12
Config Time 0.003s (±13.14%) 0.003s (± 8.64%) ~ 0.002s 0.003s p=0.193 n=12
Parse Time 0.154s (± 4.03%) 0.149s (± 4.71%) ~ 0.134s 0.167s p=0.311 n=12
Bind Time 0.042s (±19.83%) 0.056s (±17.89%) 🔻+0.014s (+34.94%) 0.034s 0.074s p=0.027 n=12
Check Time 1.216s (± 1.33%) 1.227s (± 1.14%) ~ 1.199s 1.274s p=0.183 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.422s (± 1.33%) 1.446s (± 1.27%) +0.024s (+ 1.66%) 1.413s 1.498s p=0.025 n=12
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • mui-docs - native
  • strada-build-src - native
  • strada-compiler - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

Developer Information:

Download Benchmarks

@typescript-automation

Copy link
Copy Markdown

Hey Jake Bailey (@jakebailey), it looks like the DT test run failed. Please check the log for more details.

You can check the log here.

@typescript-automation

Copy link
Copy Markdown

Jake Bailey (@jakebailey) Here are the results of running the user tests with tsc comparing main and refs/pull/64432/merge:

There were infrastructure failures potentially unrelated to your change:

  • 1 instance of "Git clone failed"
  • 1 instance of "Package install failed"

Otherwise...

Something interesting changed - please have a look.

Details

puppeteer

test/tsconfig.json

webpack

tsconfig.json

  • [NEW] error TS2322: Type 'HookMap<SyncBailHook<[HtmlParserOptions], HtmlParser, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [2]>, JavascriptParser, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [1, 2]>, void, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncBailHook<[HtmlGeneratorOptions], HtmlGenerator, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [4]>, JavascriptGenerator, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [3, 4]>, void, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncBailHook<[HtmlParserOptions], HtmlParser, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptParserOptions], JavascriptParser, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptParserOptions], JavascriptParser, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncBailHook<[HtmlGeneratorOptions], HtmlGenerator, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.

tsconfig.types.json

  • [NEW] error TS2322: Type 'HookMap<SyncBailHook<[HtmlParserOptions], HtmlParser, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [2]>, JavascriptParser, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [1, 2]>, void, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncBailHook<[HtmlGeneratorOptions], HtmlGenerator, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [4]>, JavascriptGenerator, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [3, 4]>, void, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncBailHook<[HtmlParserOptions], HtmlParser, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptParserOptions], JavascriptParser, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptParserOptions], JavascriptParser, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncBailHook<[HtmlGeneratorOptions], HtmlGenerator, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.

tsconfig.types.test.json

  • [NEW] error TS2322: Type 'HookMap<SyncBailHook<[HtmlParserOptions], HtmlParser, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [2]>, JavascriptParser, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [1, 2]>, void, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncBailHook<[HtmlGeneratorOptions], HtmlGenerator, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [4]>, JavascriptGenerator, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [NEW] error TS2322: Type 'HookMap<SyncHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<ExtractTupleElements<[JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions], [3, 4]>, void, UnsetAdditionalOptions>> & ... 15 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncBailHook<[HtmlParserOptions], HtmlParser, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptParserOptions], JavascriptParser, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptParserOptions], JavascriptParser, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptParser, JavascriptParserOptions], void, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncBailHook<[HtmlGeneratorOptions], HtmlGenerator, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.
  • [MISSING] error TS2322: Type 'HookMap<SyncHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>>' is not assignable to type 'TypedHookMap<Record<JAVASCRIPT_MODULE_TYPE_AUTO, SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>> & Record<JAVASCRIPT_MODULE_TYPE_DYNAMIC, SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void, UnsetAdditionalOptions>> & ... 14 more ... & Record<...>>'.

@typescript-automation

Copy link
Copy Markdown

Hey Jake Bailey (@jakebailey), it looks like the DT test run failed. Please check the log for more details.

You can check the log here.

@typescript-automation

Copy link
Copy Markdown

Jake Bailey (@jakebailey) Here are the results of running the top 400 repos with tsc comparing main and refs/pull/64432/merge:

Something interesting changed - please have a look.

Details

different-ai/openwork

16 of 43 projects failed to build with the old tsc and were ignored

packages/enterprise-mcp-mock-server/tsconfig.json

facebook/docusaurus

26 of 43 projects failed to build with the old tsc and were ignored

packages/docusaurus-faster/tsconfig.json

teableio/teable

144 of 147 projects failed to build with the old tsc and were ignored

packages/sdk/tsconfig.json

@jakebailey

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) test top1000

@typescript-automation

typescript-automation Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
test top1000 ✅ Started 👀 Results

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I built this PR and main locally and ran the repros from #64405 and honojs/hono#5441. The #64405 cases are fixed: the a.ts + b.ts repro from the thread now keeps TS2322 at b.ts through the edit and the rerun, where main loses it.

Two cases still differ. Both pass a mapped type through infer A and check it against an array type, the pattern Hono's JSONParsed uses for arrays.

  1. Incremental. With "incremental": true, build, add a comment to the file, build again. The second build reports error TS4109: Type arguments for 'Array' circularly reference themselves. with no location, and a third build passes. main reports TS2589 at the same step; 6.0.3 passes.
type P<T> = { [K in keyof T]: P<T[K]> } extends infer A extends unknown[] ? A : { [K in keyof T]: P<T[K]> };
type Json = Json[];
declare function json<T>(object: T): P<T>;
const response = json({ value: null! as Json });
  1. Declaration emit. With --declaration, this PR reports TS5088 at response, where main and 7.0.2 emit value: Json (6.0.3 emits value: any). The Hono route from honojs/hono#5441 fails the same way.
type P<T> = { [K in keyof T]: P<T[K]> } extends infer A extends unknown[] ? A : { [K in keyof T]: P<T[K]> };
type Json = string | Json[];
declare const value: Json;
declare function json<T>(object: T): P<T>;
export const response = json({ value });

@typescript-automation

Copy link
Copy Markdown

Jake Bailey (@jakebailey) Here are the results of running the top 1000 repos with tsc comparing main and refs/pull/64432/merge:

Something interesting changed - please have a look.

Details

different-ai/openwork

16 of 43 projects failed to build with the old tsc and were ignored

packages/enterprise-mcp-mock-server/tsconfig.json

facebook/docusaurus

26 of 43 projects failed to build with the old tsc and were ignored

packages/docusaurus-faster/tsconfig.json

getsentry/sentry-javascript

296 of 365 projects failed to build with the old tsc and were ignored

dev-packages/node-integration-tests/tsconfig.types.json

Milkdown/milkdown

2 of 3 projects failed to build with the old tsc and were ignored

tsconfig.json

@typescript-automation

Copy link
Copy Markdown

Jake Bailey (@jakebailey) Here are some more interesting changes from running the top 1000 repos suite

Details

NomicFoundation/hardhat

6 of 12 projects failed to build with the old tsc and were ignored

packages/hardhat-toolbox-viem/tsconfig.json

@typescript-automation

Copy link
Copy Markdown

Jake Bailey (@jakebailey) Here are some more interesting changes from running the top 1000 repos suite

Details

teableio/teable

144 of 147 projects failed to build with the old tsc and were ignored

packages/sdk/tsconfig.json

@jakebailey

Copy link
Copy Markdown
Member Author

Thanks for the info. I guess more stuff to figure out.

@jakebailey

Copy link
Copy Markdown
Member Author

After talking with Anders Hejlsberg (@ahejlsberg), I have #64452 instead.

There are other things in this big PR that I will split out.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Author: Team For Backlog Bug PRs that fix a backlog bug

Projects

None yet

4 participants