Skip to content

[experiment] fully order independent type checking - #65064

Draft
Jake Bailey (jakebailey) wants to merge 50 commits into
microsoft:mainfrom
jakebailey:checker-db
Draft

Jake Bailey (jakebailey) wants to merge 50 commits into
microsoft:mainfrom
jakebailey:checker-db

Conversation

@jakebailey

@jakebailey Jake Bailey (jakebailey) commented Oct 30, 2026 •

Copy link
Copy Markdown
Member

There's too much here to explain, but at a high level, this is a massive change which aims to make the checker entirely order independent, that is, it doesn't matter when you call the checker, which nodes you walk first, if you do or do not pull something, check some other file, helicopter into the wrong part of a cycle, etc, the behavior, diagnostics, everything, will be the same.

Looking at individual commits is my suggested way to look inside, not the entire diff, which will surely crash your browser.

This is all AI driven, so it's a bit hard to unbox (I plan to break this apart since some stuff can be done early), but some interesting tidbits (handwritten by me!)


There's a new checkOrder test option, which makes certain tests variant on interesting orderings, like "what if we visit every single node before checking" or "what if we reverse the order of the files" or even "what if we use PRNG to randomly walk nodes and then check". This up front found on the order of 500 failing tests we already had that were secretly order dependent. These were all fuzzed out and kept.

There are a significant number of new tests which all show various ordering bugs never before discovered.

The first chunk of the PR are fixing places where code peeked at caches that "happened to be filled" instead of calling the actual function to pull on them.

Then, all of the ID-using code gets removed. At the end everything now has an ID independent ordering based on content, flags, the works. This caught a bunch of places where we were not caching things and ending up with types that were by all rights identical but had different IDs and then were unstable.

The big and scary change is the introduction of a new state management type dubbed "memo". Every single piece of checker state was moved into memos on a sidecar object on the checker (maybe for future sharing??). This memo system keeps track of the current computation, what depends on what else, eliminating basically all flags/bools that track "computed" or "resolved"-ness. This tracking also records side effects, including diagnostics, "referenced" marks, deferred checks, emit helper checks. The result is that if you query via the API and that calculates some error, those same errors will appear later if the checker runs.

With those data structures in place, now all of the cycles can be handled. Once a cycle is discovered, the checker starts logging what it's doing, and throws all of that info away assuming it's been poisoned.

All of the different recursion stacks get pulled into a single memo stack, which is a cool simplification too.

Variance is now a fixpoint algorithm, proceeding in rounds until stability. In practice, it doesn't iterate much.

Instantiation limits also stop being global numbers (since of course, that is order dependent side effect stuff). Instead, things get limited by the amount of work that's been done, and if you then pull on caches related to work, it tallies that work up to error consistently when needed. (I don't think this is fully done yet, though, since there are depth limits that are really hard to get right. Still thinking about that.)

In some cases, cycles still can't be fixed up, and so they're made consistent by doing what we've done previously for these cases, which is to pick a canonical place to restart to at least get it consistent.


Unfortunately, this all has a cost; the end of the PR tries to claw back perf, but at the end of the day, if we do more work tracking, we spend more CPU and memory tracking. It's still an open question whether this can be cheapened any more. But, my hope is that this idea is minimal enough that we could then optimize TS as a whole assuming this order-independence, e.g. work stealing, checker recycling, shared state, maybe even using LRU caches, or dumping data to disk.

But, it could also well be that this is slop and impossible to manage. But I don't want to sit on it anymore and want to see some real world effects.

Also, this is really meant to be rebased, so expect this all to be nasty nasty force pushes all the time as this gets tweaked. Unfortunately right now that's like 125+ commits, so that sucks.

However, I think that this will fix countless issues on the tracker. I have no idea how to evaluate all 5k issues to see if this PR fixes them. But it's gotta be a lot.


Why each remaining break in the extended tests is correct

From the latest runs, on b9f604d: DT, user tests, top1000, perf. Each was judged on whether the user code is actually wrong, not on whether the result matches main. The earlier rounds of these runs showed the same set.

  • DT d3-selection, TS2769 at d3-selection-tests.ts:1502 (DT): the test passes a TransitionLike<HTMLParagraphElement> where a TransitionLike<HTMLElement> is expected. That is unsound: through selection().merge, the paragraph selection would accept elements that are not paragraphs. Main reports the same TS2769 when the snippet is checked on its own, and accepts it in the full test only because earlier checking cached a laxer variance.
  • DT react-relay, TS2344 and TS2322 in relay-hooks-tests.tsx (DT): the test is unsound, as extraProps: {} and {} | null flow contravariantly through ComponentClass.getDerivedStateFromProps. Main measures the variances of EntryPointComponent and EntryPoint partway through their cycle and keeps the wrong answer (independent, though the parameters are used), so it contradicts itself: it accepts const whole: EntryPoint<any, any> = e but rejects the same for e.root. We reject both. Test: varianceCircularConsistency.ts.
  • effect, TS7023 on _rebuild and recur in SchemaAST.ts (user tests, top1000, and the +8 errors in the effect perf scenario): a real cycle. _rebuild returns this | A, and subtype reduction relates the class to A, which needs the return type of a method returning the result of _rebuild. Main silently gives one of the two any, depending on which return type is requested first. TS 6.0 reports these same TS7023s when the class is checked before its use. The fix in effect is a return type annotation. Test: circularReturnTypeSubtypeReductionOrder.ts.
  • uglify-js, TS2339 instead of TS2322 at compress.js:2544 (user tests): value_def is null narrowed by truthiness, so never, and both compilers report an error on the line; only the message differs. Main's TS2322 comes from caching a result computed from an incomplete flow type in a loop. Outside a loop, main reports TS2339 too. Test: narrowedNeverAfterLoopWithAndCondition.ts.
  • chart.js in PeerTube and Unleash, TS2322 (top1000): per chart.js's own typings, ScriptableContext is invariant, so Chart<"bar"> is not a Chart<ChartType>, and (chart: Chart) => void fits Plugin<"bar">.beforeDraw in neither direction. Main accepts it only through a variance measured partway through a cycle, and rejects it in other check orders. It is a practical break on a common pattern, but the error is right. Test: varianceCircularityChartjsPlugin.ts.
  • angular-1 perf scenario, +5 TS2345 in the compiler-cli partial linkers (perf): AstObject<R3PartialDeclaration> is passed as AstObject<R3DeclareClassMetadata>, an unchecked downcast through a covariant parameter. Main measures AstObject as bivariant only in the full build, through the AstObject/AstValue cycle. Main reports the same errors when that file is the only root, and main and TS 6.0 reject a standalone reproduction.
  • webpack perf scenario, +4 (perf):
    • zod's schemas.d.cts really does exceed the instantiation depth limit (TS5115). Main reports it once, at whichever node reaches the limit first; we report it at every node that reaches it, as each would if it were checked first.
    • tooling/generate-types.js TS2345 is a real error that main hides because its inference gives up. Main decides that inference is expanding by comparing type IDs, so for flatten(m) with m: string[][] it infers unknown[] or string[] depending on whether an unrelated for...of was checked first. We compare by structure and always infer string[], which exposes the error. Test: inferenceDeeplyNestedCheckOrder.ts.

@typescript-automation typescript-automation Bot added Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug labels Oct 30, 2026
@jakebailey

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) test it

@typescript-automation

typescript-automation Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

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

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

@typescript-automation

Copy link
Copy Markdown
Contributor

Hey Jake Bailey (@jakebailey), the results of running the DT tests are ready.

There were interesting changes:

Branch only errors: d3-selection

Package: d3-selection

Branch error:

Project scope: tsconfig.json

Error: types/d3-selection/d3-selection-tests.ts:1502:9
TypeScript@local compile error TS2769:
No overload matches this call.
The last overload gave the following error.
Argument of type '(enter: Selection<EnterElement, number, HTMLElement, unknown>) => TransitionLike<HTMLParagraphElement, number>' is not assignable to parameter of type 'string | ((elem: Selection<EnterElement, number, HTMLElement, unknown>) => Selection<BaseType, number, HTMLElement, unknown> | TransitionLike<...>)'.
Type '(enter: Selection<EnterElement, number, HTMLElement, unknown>) => TransitionLike<HTMLParagraphElement, number>' is not assignable to type '(elem: Selection<EnterElement, number, HTMLElement, unknown>) => Selection<BaseType, number, HTMLElement, unknown> | TransitionLike<...>'.
Type 'TransitionLike<HTMLParagraphElement, number>' is not assignable to type 'Selection<BaseType, number, HTMLElement, unknown> | TransitionLike<HTMLElement, number>'.
Type 'TransitionLike<HTMLParagraphElement, number>' is not assignable to type 'TransitionLike<HTMLElement, number>'.
The types returned by 'selection().selectAll(...)' are incompatible between these types.
Type 'Selection<null, undefined, HTMLParagraphElement, number>' is not assignable to type 'Selection<null, undefined, HTMLElement, number>'.
Property 'align' is missing in type 'HTMLElement' but required in type 'HTMLParagraphElement'.
    at combineErrorsAndWarnings (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:200:28)
    at runTests (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:192:20)
Branch only errors: absinthe__socket

Package: absinthe__socket

Branch error:

Project scope: tsconfig.json

Error: types/absinthe__socket/absinthe__socket-tests.ts:29:47
TypeScript@local compile error TS2345:
Argument of type 'Notifier<{ userId: number; }, {}>' is not assignable to parameter of type 'Notifier<{}, {}>'.
Types of property 'activeObservers' are incompatible.
Type 'readonly Observer<{ userId: number; }, {}>[]' is not assignable to type 'readonly Observer<{}, {}>[]'.
Type 'Observer<{ userId: number; }, {}>' is not assignable to type 'Observer<{}, {}>'.
Types of property 'onStart' are incompatible.
Type '((notifier: Notifier<{ userId: number; }, {}>) => any) | undefined' is not assignable to type '((notifier: Notifier<{}, {}>) => any) | undefined'.
Type '(notifier: Notifier<{ userId: number; }, {}>) => any' is not assignable to type '(notifier: Notifier<{}, {}>) => any'.
Types of parameters 'notifier' and 'notifier' are incompatible.
Type 'Notifier<{}, {}>' is not assignable to type 'Notifier<{ userId: number; }, {}>'.
Types of property 'activeObservers' are incompatible.
Type 'readonly Observer<{}, {}>[]' is not assignable to type 'readonly Observer<{ userId: number; }, {}>[]'.
Type 'Observer<{}, {}>' is not assignable to type 'Observer<{ userId: number; }, {}>'.
Property 'userId' is missing in type '{}' but required in type '{ userId: number; }'.
    at combineErrorsAndWarnings (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:200:28)
    at runTests (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:192:20)
Branch only errors: react-relay

Package: react-relay

Branch error:

Project scope: tsconfig.json

Error: types/react-relay/test/relay-hooks-tests.tsx:987:13
TypeScript@local compile error TS2344:
Type '{ mainPanelA?: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params> | undefined; mainPanelB?: EntryPoint<...> | undefined; }' does not satisfy the constraint 'Record<string, EntryPoint<any, any> | undefined>'.
Property 'mainPanelA' is incompatible with index signature.
Type 'EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>' is not assignable to type 'InternalEntryPointRepresentation<any, Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Types of property 'root' are incompatible.
Type 'JSResourceReference<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>' is not assignable to type 'JSResourceReference<EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>'.
Type 'EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'ComponentClass<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
Types of property 'getDerivedStateFromProps' are incompatible.
Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any> | undefined' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any> | undefined'.
Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
Types of parameters 'nextProps' and 'nextProps' are incompatible.
Type 'Readonly<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>' is not assignable to type 'Readonly<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>'.
Types of property 'extraProps' are incompatible.
Type '{} | null' is not assignable to type '{}'.
Type 'null' is not assignable to type '{}'.

types/react-relay/test/relay-hooks-tests.tsx:1023:13
TypeScript@local compile error TS2322:
Type '(params: { route: string; }) => { entryPoints: { mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: ...; }; mainPanelB?: undefined; } | ...; queries: ...; extraProps: ...; }' is not assignable to type '(entryPointParams: { route: string; }) => PreloadProps<{ route: string; }, {}, Record<string, EntryPoint<any, any> | undefined>, { foo: "bar"; }>'.
Type '{ entryPoints: { mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: { slug: string; }; }; mainPanelB?: undefined; } | ...; queries: {}; extraProps: ...; }' is not assignable to type 'PreloadProps<{ route: string; }, {}, Record<string, EntryPoint<any, any> | undefined>, { foo: "bar"; }>'.
Types of property 'entryPoints' are incompatible.
Type '{ mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: ...; }; mainPanelB?: undefined; } | ...' is not assignable to type 'ThinNestedEntryPointParamsObject<Record<string, EntryPoint<any, any> | undefined>> | undefined'.
Type '{ mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: { slug: string; }; }; mainPanelB?: undefined; }' is not assignable to type 'ThinNestedEntryPointParamsObject<Record<string, EntryPoint<any, any> | undefined>>'.
Property 'mainPanelA' is incompatible with index signature.
Type '{ entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: { slug: string; }; }' is not assignable to type 'ThinNestedEntryPointParams<EntryPoint<any, any> | undefined>'.
The types of 'entryPoint.root' are incompatible between these types.
Type 'JSResourceReference<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>' is not assignable to type 'JSResourceReference<EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>'.
Type 'EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'ComponentClass<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
Types of property 'getDerivedStateFromProps' are incompatible.
Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any> | undefined' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any> | undefined'.
Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
Types of parameters 'nextProps' and 'nextProps' are incompatible.
Type 'Readonly<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>' is not assignable to type 'Readonly<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>'.
Types of property 'extraProps' are incompatible.
Type '{} | null' is not assignable to type '{}'.
Type 'null' is not assignable to type '{}'.

types/react-relay/test/relay-hooks-tests.tsx:1054:15
TypeScript@local compile error TS2322:
Type 'Readonly<{ dispose: DisposeFn; entryPoints: { [x: string]: Readonly<...>; }; extraProps: {} | null; getComponent: () => any; isDisposed: boolean; queries: { [x: string]: PreloadedQuery<OperationType, Record<...>>; }; rootModuleID: string; }>' is not assignable to type 'PreloadedEntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>> | undefined'.
Type 'Readonly<{ dispose: DisposeFn; entryPoints: { [x: string]: Readonly<...>; }; extraProps: {} | null; getComponent: () => any; isDisposed: boolean; queries: { [x: string]: PreloadedQuery<OperationType, Record<...>>; }; rootModuleID: string; }>' is not assignable to type 'Readonly<{ dispose: DisposeFn; entryPoints: {}; extraProps: {}; getComponent: () => FunctionComponent<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>; isDisposed: boolean; queries: ...; rootModuleID: string; }>'.
Types of property 'extraProps' are incompatible.
Type '{} | null' is not assignable to type '{}'.
Type 'null' is not assignable to type '{}'.
    at combineErrorsAndWarnings (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:200:28)
    at runTests (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:192:20)

Full output in the log.

@typescript-automation

Copy link
Copy Markdown
Contributor

Jake Bailey (@jakebailey) Here are the results of running the user tests with tsc comparing baseline and pr:

Something interesting changed - please have a look.

Details

effect

packages/tools/ai-docgen/tsconfig.json

puppeteer

packages/puppeteer-core/tsconfig.json

uglify-js

/mnt/vss/work/1/s/ts_downloads//m/uglify-js/tsconfig.json

  • [NEW] error TS2339: Property 'last_ref' does not exist on type 'never'.
    • /mnt/vss/work/1/s/ts_downloads//m/uglify-js/node_modules/uglify-js/lib/compress.js(2544,35)
  • [MISSING] error TS2322: Type 'false' is not assignable to type 'never'.
    • /mnt/vss/work/1/s/ts_downloads//m/uglify-js/node_modules/uglify-js/lib/compress.js(2544,25)

webpack

tsconfig.json

  • [NEW] error TS2345: Argument of type '[unknown]' is not assignable to parameter of type '[] | [boldQuantity?: boolean | undefined] | [direction?: "child" | "parent" | "sibling" | undefined] | [oversize?: boolean | undefined]'.
  • [NEW] error TS2345: Argument of type 'string | number | boolean | Type' is not assignable to parameter of type 'Type'.

tsconfig.types.json

  • [NEW] error TS2345: Argument of type '[unknown]' is not assignable to parameter of type '[] | [boldQuantity?: boolean | undefined] | [direction?: "child" | "parent" | "sibling" | undefined] | [oversize?: boolean | undefined]'.

tsconfig.types.test.json

@typescript-automation

Copy link
Copy Markdown
Contributor

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=20
Symbols 88,466 88,464 -2 (- 0.00%) ~ ~ p=0.000 n=20
Types 79,607 79,570 -37 (- 0.05%) ~ ~ p=0.000 n=20
Memory Used 103,896k (± 0.02%) 111,077k (± 0.04%) 🔻+7,181k (+ 6.91%) 110,925k 111,227k p=0.000 n=20
Memory Allocs 1,262,232 (± 0.01%) 1,382,888 (± 0.01%) 🔻+120,657 (+ 9.56%) 1,382,595 1,383,138 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.023s (± 2.38%) 0.024s (± 2.35%) ~ 0.022s 0.025s p=0.273 n=20
Bind Time 0.008s (± 4.19%) 0.009s (± 6.30%) ~ 0.007s 0.011s p=0.503 n=20
Check Time 0.214s (± 2.44%) 0.238s (± 0.84%) 🔻+0.023s (+10.82%) 0.232s 0.248s p=0.000 n=20
Emit Time 0.142s (± 1.09%) 0.149s (± 0.98%) 🔻+0.007s (+ 5.16%) 0.141s 0.154s p=0.000 n=20
Total Time 0.391s (± 1.34%) 0.422s (± 0.73%) 🔻+0.031s (+ 8.05%) 0.412s 0.437s p=0.000 n=20
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=20
Symbols 586,461 (± 0.01%) 582,012 (± 0.03%) -4,449 (- 0.76%) 581,488 582,966 p=0.000 n=20
Types 241,684 (± 0.00%) 244,833 (± 0.04%) +3,149 (+ 1.30%) 244,649 245,409 p=0.000 n=20
Memory Used 518,997k (± 0.03%) 799,196k (± 0.04%) 🔻+280,200k (+53.99%) 798,221k 801,135k p=0.000 n=20
Memory Allocs 7,793,838 (± 0.11%) 14,777,317 (± 0.08%) 🔻+6,983,478 (+89.60%) 14,743,392 14,830,518 p=0.000 n=20
Config Time 0.009s 0.009s ~ ~ ~ p=1.000 n=20
Parse Time 0.126s (± 4.43%) 0.124s (± 2.06%) ~ 0.116s 0.136s p=0.473 n=20
Bind Time 0.042s (± 9.91%) 0.045s (±11.57%) ~ 0.036s 0.067s p=0.533 n=20
Check Time 0s 0s ~ ~ ~ p=1.000 n=20
Emit Time 0.827s (± 0.92%) 1.358s (± 1.06%) 🔻+0.531s (+64.19%) 1.297s 1.406s p=0.000 n=20
Total Time 1.015s (± 1.00%) 1.547s (± 0.75%) 🔻+0.532s (+52.46%) 1.499s 1.587s p=0.000 n=20
arktype - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 685,920 737,025 🔻+51,105 (+ 7.45%) ~ ~ p=0.000 n=20
Types 939,467 954,543 +15,076 (+ 1.60%) ~ ~ p=0.000 n=20
Memory Used 495,298k (± 0.01%) 568,199k (± 0.01%) 🔻+72,901k (+14.72%) 567,987k 568,454k p=0.000 n=20
Memory Allocs 12,061,856 (± 0.01%) 15,942,771 (± 0.01%) 🔻+3,880,915 (+32.18%) 15,938,341 15,948,882 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.041s (± 4.12%) 0.042s (± 2.99%) ~ 0.037s 0.047s p=0.793 n=20
Bind Time 0.014s (±10.49%) 0.013s (± 8.24%) ~ 0.011s 0.019s p=0.616 n=20
Check Time 0.883s (± 0.99%) 1.199s (± 0.78%) 🔻+0.316s (+35.81%) 1.158s 1.246s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.966s (± 0.86%) 1.283s (± 0.66%) 🔻+0.317s (+32.79%) 1.253s 1.328s p=0.000 n=20
class-transformer - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 45,376 45,319 -57 (- 0.13%) ~ ~ p=0.000 n=20
Types 7,573 7,219 🟩-354 (- 4.67%) ~ ~ p=0.000 n=20
Memory Used 27,890k (± 0.03%) 30,925k (± 0.02%) 🔻+3,035k (+10.88%) 30,899k 30,943k p=0.000 n=20
Memory Allocs 248,137 (± 0.04%) 267,547 (± 0.05%) 🔻+19,409 (+ 7.82%) 267,126 268,373 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.011s (± 4.90%) 0.011s (± 4.44%) ~ 0.009s 0.013s p=0.870 n=20
Bind Time 0.003s (± 4.63%) 0.003s (± 6.23%) ~ 0.002s 0.004s p=0.381 n=20
Check Time 0.008s (± 5.14%) 0.010s (± 3.52%) 🔻+0.002s (+20.50%) 0.008s 0.011s p=0.000 n=20
Emit Time 0.008s (± 5.95%) 0.010s (± 4.57%) 🔻+0.001s (+17.79%) 0.008s 0.012s p=0.000 n=20
Total Time 0.031s (± 1.77%) 0.035s (± 1.61%) 🔻+0.003s (+ 9.86%) 0.032s 0.036s p=0.000 n=20
effect - native
Errors 12 20 🔻+8 (+66.67%) ~ ~ p=0.000 n=20
Symbols 1,235,115 1,234,949 -166 (- 0.01%) ~ ~ p=0.000 n=20
Types 894,113 890,634 -3,479 (- 0.39%) ~ ~ p=0.000 n=20
Memory Used 939,429k (± 0.03%) 1,015,968k (± 0.01%) 🔻+76,539k (+ 8.15%) 1,015,553k 1,016,675k p=0.000 n=20
Memory Allocs 12,635,077 (± 0.03%) 15,907,879 (± 0.02%) 🔻+3,272,802 (+25.90%) 15,898,929 15,928,234 p=0.000 n=20
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=20
Parse Time 0.147s (± 1.86%) 0.149s (± 2.22%) ~ 0.138s 0.174s p=0.357 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.865s (± 1.97%) 1.183s (± 0.59%) 🔻+0.318s (+36.79%) 1.163s 1.216s p=0.000 n=20
Emit Time 0.492s (± 1.97%) 0.509s (± 2.29%) +0.017s (+ 3.47%) 0.459s 0.547s p=0.042 n=20
Total Time 1.597s (± 0.81%) 1.934s (± 0.61%) 🔻+0.337s (+21.11%) 1.896s 2.009s p=0.000 n=20
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=20
Symbols 3,784,019 3,745,693 -38,326 (- 1.01%) ~ ~ p=0.000 n=20
Types 1,355,974 1,292,461 🟩-63,513 (- 4.68%) ~ ~ p=0.000 n=20
Memory Used 1,769,157k (± 0.06%) 2,355,727k (± 0.06%) 🔻+586,570k (+33.16%) 2,350,729k 2,362,054k p=0.000 n=20
Memory Allocs 25,751,249 (± 0.13%) 46,425,057 (± 0.07%) 🔻+20,673,808 (+80.28%) 46,305,744 46,597,622 p=0.000 n=20
Config Time 0.009s (± 2.52%) 0.009s (± 2.18%) ~ 0.008s 0.009s p=0.716 n=20
Parse Time 0.301s (± 1.40%) 0.300s (± 2.37%) ~ 0.263s 0.329s p=0.836 n=20
Bind Time 0.001s 0.001s (±34.77%) ~ 0.001s 0.005s p=1.000 n=20
Check Time 3.016s (± 0.63%) 4.953s (± 0.87%) 🔻+1.937s (+64.22%) 4.775s 5.186s p=0.000 n=20
Emit Time 0.246s (± 1.33%) 0.252s (± 8.48%) +0.006s (+ 2.23%) 0.225s 0.388s p=0.014 n=20
Total Time 4.079s (± 0.56%) 6.019s (± 0.68%) 🔻+1.940s (+47.57%) 5.929s 6.305s p=0.000 n=20
sentry - native
Errors 2 3 🔻+1 (+50.00%) ~ ~ p=0.000 n=20
Symbols 4,793,245 4,780,779 -12,466 (- 0.26%) ~ ~ p=0.000 n=20
Types 2,606,905 2,536,142 -70,763 (- 2.71%) ~ ~ p=0.000 n=20
Memory Used 2,846,141k (± 0.03%) 3,074,910k (± 0.03%) 🔻+228,769k (+ 8.04%) 3,071,117k 3,078,986k p=0.000 n=20
Memory Allocs 75,140,192 (± 0.36%) 84,474,429 (± 0.31%) 🔻+9,334,237 (+12.42%) 83,951,658 85,589,151 p=0.000 n=20
Config Time 0.026s (± 0.79%) 0.026s (± 0.89%) ~ 0.026s 0.027s p=0.501 n=20
Parse Time 0.518s (± 8.15%) 0.491s (± 4.59%) ~ 0.436s 0.643s p=0.417 n=20
Bind Time 0.176s (±10.76%) 0.178s (±10.44%) ~ 0.133s 0.256s p=0.995 n=20
Check Time 7.021s (± 0.59%) 8.232s (± 0.56%) 🔻+1.211s (+17.25%) 8.060s 8.449s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.794s (± 0.74%) 8.984s (± 0.70%) 🔻+1.190s (+15.27%) 8.778s 9.236s p=0.000 n=20
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,883,074 1,905,657 +22,583 (+ 1.20%) ~ ~ p=0.000 n=20
Types 1,158,168 1,165,271 +7,103 (+ 0.61%) ~ ~ p=0.000 n=20
Memory Used 966,839k (± 0.01%) 1,075,252k (± 0.01%) 🔻+108,413k (+11.21%) 1,074,815k 1,075,931k p=0.000 n=20
Memory Allocs 13,509,034 (± 0.22%) 17,764,359 (± 0.25%) 🔻+4,255,325 (+31.50%) 17,692,748 18,046,398 p=0.000 n=20
Config Time 0.008s (± 1.82%) 0.008s (± 1.82%) ~ 0.007s 0.008s p=1.000 n=20
Parse Time 0.180s (± 5.61%) 0.179s (± 5.35%) ~ 0.153s 0.246s p=0.857 n=20
Bind Time 0.050s (±11.47%) 0.045s (± 8.92%) ~ 0.039s 0.077s p=0.118 n=20
Check Time 1.548s (± 1.99%) 2.076s (± 1.68%) 🔻+0.529s (+34.15%) 1.949s 2.238s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.804s (± 1.92%) 2.326s (± 1.58%) 🔻+0.522s (+28.91%) 2.198s 2.500s p=0.000 n=20
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,184,972 1,186,616 +1,644 (+ 0.14%) ~ ~ p=0.000 n=20
Types 438,959 437,306 -1,653 (- 0.38%) ~ ~ p=0.000 n=20
Memory Used 1,168,821k (± 0.22%) 1,236,045k (± 0.27%) 🔻+67,224k (+ 5.75%) 1,219,892k 1,255,324k p=0.000 n=20
Memory Allocs 47,504,318 (± 0.08%) 54,063,076 (± 0.05%) 🔻+6,558,758 (+13.81%) 53,965,768 54,192,344 p=0.000 n=20
Config Time 0.002s (±15.67%) 0.002s (±12.34%) ~ 0.001s 0.003s p=0.418 n=20
Parse Time 0.140s (± 2.31%) 0.141s (± 1.84%) ~ 0.129s 0.150s p=0.702 n=20
Bind Time 0.000s 0.000s (±208.60%) ~ 0.000s 0.001s p=1.000 n=20
Check Time 0.799s (± 0.52%) 0.942s (± 0.47%) 🔻+0.142s (+17.81%) 0.928s 0.963s p=0.000 n=20
Emit Time 0.139s (± 1.14%) 0.137s (± 0.80%) -0.002s (- 1.47%) 0.131s 0.140s p=0.029 n=20
Total Time 9.331s (± 0.53%) 10.385s (± 0.46%) 🔻+1.055s (+11.30%) 10.236s 10.661s p=0.000 n=20
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 263,511 263,733 +222 (+ 0.08%) ~ ~ p=0.000 n=20
Types 196,116 195,818 -298 (- 0.15%) ~ ~ p=0.000 n=20
Memory Used 223,533k (± 0.02%) 239,287k (± 0.01%) 🔻+15,754k (+ 7.05%) 239,129k 239,421k p=0.000 n=20
Memory Allocs 2,388,520 (± 0.01%) 2,816,004 (± 0.01%) 🔻+427,484 (+17.90%) 2,815,196 2,816,908 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.050s (± 2.96%) 0.051s (± 3.17%) ~ 0.046s 0.058s p=0.930 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.368s (± 0.70%) 0.429s (± 0.58%) 🔻+0.061s (+16.54%) 0.422s 0.440s p=0.000 n=20
Emit Time 0.048s (± 5.30%) 0.051s (± 6.28%) ~ 0.042s 0.065s p=0.193 n=20
Total Time 0.494s (± 0.69%) 0.558s (± 0.53%) 🔻+0.064s (+12.93%) 0.548s 0.573s p=0.000 n=20
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 4,350,661 4,283,060 -67,601 (- 1.55%) ~ ~ p=0.000 n=20
Types 3,040,644 3,016,451 -24,193 (- 0.80%) ~ ~ p=0.000 n=20
Memory Used 2,417,400k (± 0.02%) 2,720,850k (± 0.02%) 🔻+303,450k (+12.55%) 2,718,807k 2,724,832k p=0.000 n=20
Memory Allocs 37,173,527 (± 0.11%) 54,364,231 (± 0.06%) 🔻+17,190,703 (+46.24%) 54,296,137 54,552,967 p=0.000 n=20
Config Time 0.003s 0.003s (± 3.54%) ~ 0.002s 0.003s p=1.000 n=20
Parse Time 0.252s (± 1.91%) 0.255s (± 1.67%) ~ 0.241s 0.274s p=0.213 n=20
Bind Time 0.083s (± 9.76%) 0.087s (± 9.44%) ~ 0.073s 0.139s p=0.439 n=20
Check Time 5.974s (± 1.72%) 8.439s (± 1.55%) 🔻+2.465s (+41.25%) 7.958s 8.722s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 6.323s (± 1.67%) 8.795s (± 1.54%) 🔻+2.472s (+39.10%) 8.285s 9.112s p=0.000 n=20
tanstack-router - native
Errors 1 1 ~ ~ ~ p=1.000 n=20
Symbols 571,756 570,271 -1,485 (- 0.26%) ~ ~ p=0.000 n=20
Types 397,689 391,059 -6,630 (- 1.67%) ~ ~ p=0.000 n=20
Memory Used 326,453k (± 0.02%) 360,984k (± 0.02%) 🔻+34,531k (+10.58%) 360,761k 361,214k p=0.000 n=20
Memory Allocs 4,339,125 (± 0.20%) 5,432,212 (± 0.14%) 🔻+1,093,088 (+25.19%) 5,414,800 5,461,739 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.041s (± 4.12%) 0.040s (± 4.57%) ~ 0.034s 0.047s p=0.488 n=20
Bind Time 0.013s (±11.55%) 0.012s (± 8.91%) ~ 0.010s 0.019s p=0.913 n=20
Check Time 0.498s (± 0.65%) 0.647s (± 0.63%) 🔻+0.149s (+29.93%) 0.631s 0.665s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.570s (± 0.80%) 0.719s (± 0.56%) 🔻+0.149s (+26.12%) 0.704s 0.736s p=0.000 n=20
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=20
Symbols 231,616 231,759 +143 (+ 0.06%) ~ ~ p=0.000 n=20
Types 181,195 181,047 -148 (- 0.08%) ~ ~ p=0.000 n=20
Memory Used 193,023k (± 0.01%) 207,199k (± 0.01%) 🔻+14,176k (+ 7.34%) 207,099k 207,341k p=0.000 n=20
Memory Allocs 1,310,342 (± 0.02%) 1,688,280 (± 0.02%) 🔻+377,938 (+28.84%) 1,687,127 1,689,848 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.049s (± 3.79%) 0.049s (± 3.83%) ~ 0.044s 0.058s p=0.692 n=20
Bind Time 0.024s (± 4.74%) 0.023s (± 4.89%) ~ 0.019s 0.027s p=0.138 n=20
Check Time 0.322s (± 0.94%) 0.380s (± 1.11%) 🔻+0.058s (+18.02%) 0.369s 0.405s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.401s (± 0.96%) 0.459s (± 1.14%) 🔻+0.058s (+14.36%) 0.441s 0.483s p=0.000 n=20
vscode - native
Errors 11 12 🔻+1 (+ 9.09%) ~ ~ p=0.000 n=20
Symbols 7,581,393 7,409,825 -171,568 (- 2.26%) ~ ~ p=0.000 n=20
Types 4,453,103 4,223,626 🟩-229,477 (- 5.15%) ~ ~ p=0.000 n=20
Memory Used 5,238,870k (± 0.01%) 5,410,766k (± 0.02%) +171,895k (+ 3.28%) 5,407,037k 5,413,361k p=0.000 n=20
Memory Allocs 57,460,124 (± 0.01%) 68,502,245 (± 0.02%) 🔻+11,042,120 (+19.22%) 68,476,208 68,590,077 p=0.000 n=20
Config Time 0.038s (± 1.78%) 0.038s (± 1.20%) ~ 0.036s 0.039s p=0.605 n=20
Parse Time 0.938s (± 1.31%) 0.947s (± 2.19%) ~ 0.844s 1.027s p=0.465 n=20
Bind Time 0.351s (± 7.68%) 0.362s (± 9.33%) ~ 0.292s 0.567s p=0.952 n=20
Check Time 7.945s (± 1.56%) 9.364s (± 1.45%) 🔻+1.419s (+17.86%) 8.645s 9.814s p=0.000 n=20
Emit Time 2.970s (± 5.87%) 3.369s (± 4.07%) 🔻+0.399s (+13.45%) 2.990s 4.186s p=0.000 n=20
Total Time 12.303s (± 1.97%) 14.143s (± 1.64%) 🔻+1.840s (+14.96%) 13.304s 15.144s p=0.000 n=20
webpack - native
Errors 612 620 +8 (+ 1.31%) ~ ~ p=0.000 n=20
Symbols 925,190 1,082,647 🔻+157,457 (+17.02%) ~ ~ p=0.000 n=20
Types 643,199 2,133,243 🔻+1,490,044 (+231.66%) ~ ~ p=0.000 n=20
Memory Used 697,711k (± 0.02%) 1,371,751k (± 0.01%) 🔻+674,040k (+96.61%) 1,371,408k 1,372,322k p=0.000 n=20
Memory Allocs 6,473,690 (± 0.05%) 47,254,840 (± 0.01%) 🔻+40,781,151 (+629.95%) 47,247,152 47,271,226 p=0.000 n=20
Config Time 0.004s 0.004s ~ ~ ~ p=1.000 n=20
Parse Time 0.143s (± 3.09%) 0.147s (± 3.62%) ~ 0.126s 0.170s p=0.298 n=20
Bind Time 0.049s (±12.18%) 0.046s (± 9.74%) ~ 0.039s 0.072s p=0.825 n=20
Check Time 0.982s (± 0.54%) 72.903s (± 1.96%) 🔻+71.921s (+7,322.82%) 66.626s 79.005s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.201s (± 0.76%) 73.124s (± 1.96%) 🔻+71.923s (+5,988.87%) 66.840s 79.236s p=0.000 n=20
xstate-main - native
Errors 0 1 🔻+1 (+ ∞%) ~ ~ p=0.000 n=20
Symbols 640,490 856,593 🔻+216,103 (+33.74%) ~ ~ p=0.000 n=20
Types 387,984 457,702 🔻+69,718 (+17.97%) ~ ~ p=0.000 n=20
Memory Used 350,159k (± 0.02%) 455,995k (± 0.01%) 🔻+105,835k (+30.22%) 455,690k 456,211k p=0.000 n=20
Memory Allocs 3,968,869 (± 0.10%) 11,780,642 (± 0.03%) 🔻+7,811,773 (+196.83%) 11,766,097 11,790,998 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.064s (± 4.85%) 0.064s (± 5.34%) ~ 0.054s 0.082s p=0.835 n=20
Bind Time 0.020s (±11.79%) 0.021s (± 9.16%) ~ 0.017s 0.032s p=0.439 n=20
Check Time 0.406s (± 1.92%) 0.909s (± 1.89%) 🔻+0.503s (+123.95%) 0.875s 1.034s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.496s (± 1.97%) 1.000s (± 2.01%) 🔻+0.504s (+101.72%) 0.962s 1.143s p=0.000 n=20
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • arktype - native
  • class-transformer - native
  • effect - native
  • mui-docs - native
  • sentry - native
  • social-app - native
  • strada-build-src - native
  • strada-compiler - native
  • t3code-server - native
  • tanstack-router - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 20
Baseline baseline 20

Developer Information:

Download Benchmarks

@jakebailey

Copy link
Copy Markdown
Member Author

Well, that's a little bleak.

@jakebailey

Copy link
Copy Markdown
Member Author

Not sure why top400 didn't come back either

@jakebailey

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) test it

@typescript-automation

Copy link
Copy Markdown
Contributor

Hey Jake Bailey (@jakebailey), this PR is in an unmergable state, so is missing a merge commit to run against; please resolve conflicts and try again.

@jakebailey

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) test it

@typescript-automation

typescript-automation Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

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
Contributor

Hey Jake Bailey (@jakebailey), the results of running the DT tests are ready.

There were interesting changes:

Branch only errors: d3-selection

Package: d3-selection

Branch error:

Project scope: tsconfig.json

Error: types/d3-selection/d3-selection-tests.ts:1502:9
TypeScript@local compile error TS2769:
No overload matches this call.
The last overload gave the following error.
Argument of type '(enter: Selection<EnterElement, number, HTMLElement, unknown>) => TransitionLike<HTMLParagraphElement, number>' is not assignable to parameter of type 'string | ((elem: Selection<EnterElement, number, HTMLElement, unknown>) => Selection<BaseType, number, HTMLElement, unknown> | TransitionLike<...>)'.
Type '(enter: Selection<EnterElement, number, HTMLElement, unknown>) => TransitionLike<HTMLParagraphElement, number>' is not assignable to type '(elem: Selection<EnterElement, number, HTMLElement, unknown>) => Selection<BaseType, number, HTMLElement, unknown> | TransitionLike<...>'.
Type 'TransitionLike<HTMLParagraphElement, number>' is not assignable to type 'Selection<BaseType, number, HTMLElement, unknown> | TransitionLike<HTMLElement, number>'.
Type 'TransitionLike<HTMLParagraphElement, number>' is not assignable to type 'TransitionLike<HTMLElement, number>'.
The types returned by 'selection().merge' are incompatible between these types.
Type '(other: Selection<HTMLParagraphElement, number, any, any> | TransitionLike<HTMLParagraphElement, number>) => Selection<...>' is not assignable to type '(other: Selection<HTMLElement, number, any, any> | TransitionLike<HTMLElement, number>) => Selection<HTMLElement, number, any, any>'.
Types of parameters 'other' and 'other' are incompatible.
Type 'Selection<HTMLElement, number, any, any> | TransitionLike<HTMLElement, number>' is not assignable to type 'Selection<HTMLParagraphElement, number, any, any> | TransitionLike<HTMLParagraphElement, number>'.
Type 'Selection<HTMLElement, number, any, any>' is not assignable to type 'Selection<HTMLParagraphElement, number, any, any> | TransitionLike<HTMLParagraphElement, number>'.
Type 'Selection<HTMLElement, number, any, any>' is not assignable to type 'Selection<HTMLParagraphElement, number, any, any>'.
Types of property 'select' are incompatible.
Type '{ <DescElement extends BaseType>(selector: string): import("/mnt/vss/_work/1/s/DefinitelyTyped/types/d3-selection/index").Selection<DescElement, number, any, any>; <DescElement extends BaseType>(selector: null): import("/mnt/vss/_work/1/s/DefinitelyTyped/types/d3-selection/index").Selection<...>; <DescElement extend...' is not assignable to type '{ <DescElement extends BaseType>(selector: string): import("/mnt/vss/_work/1/s/DefinitelyTyped/types/d3-selection/index").Selection<DescElement, number, any, any>; <DescElement extends BaseType>(selector: null): import("/mnt/vss/_work/1/s/DefinitelyTyped/types/d3-selection/index").Selection<...>; <DescElement extend...'. Two different types with this name exist, but they are unrelated.
Types of parameters 'selector' and 'selector' are incompatible.
Types of parameters 'groups' and 'groups' are incompatible.
Type 'HTMLElement[] | ArrayLike<HTMLElement>' is not assignable to type 'HTMLParagraphElement[] | ArrayLike<HTMLParagraphElement>'.
Type 'HTMLElement[]' is not assignable to type 'HTMLParagraphElement[] | ArrayLike<HTMLParagraphElement>'.
Type 'HTMLElement[]' is not assignable to type 'HTMLParagraphElement[]'.
Property 'align' is missing in type 'HTMLElement' but required in type 'HTMLParagraphElement'.
    at combineErrorsAndWarnings (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:200:28)
    at runTests (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:192:20)
Branch only errors: react-relay

Package: react-relay

Branch error:

Project scope: tsconfig.json

Error: types/react-relay/test/relay-hooks-tests.tsx:987:13
TypeScript@local compile error TS2344:
Type '{ mainPanelA?: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params> | undefined; mainPanelB?: EntryPoint<...> | undefined; }' does not satisfy the constraint 'Record<string, EntryPoint<any, any> | undefined>'.
Property 'mainPanelA' is incompatible with index signature.
Type 'EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>' is not assignable to type 'InternalEntryPointRepresentation<any, Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Types of property 'root' are incompatible.
Type 'JSResourceReference<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>' is not assignable to type 'JSResourceReference<EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>'.
Type 'EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'ComponentClass<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
Types of property 'getDerivedStateFromProps' are incompatible.
Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any> | undefined' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any> | undefined'.
Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
Types of parameters 'nextProps' and 'nextProps' are incompatible.
Type 'Readonly<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>' is not assignable to type 'Readonly<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>'.
Types of property 'extraProps' are incompatible.
Type '{} | null' is not assignable to type '{}'.
Type 'null' is not assignable to type '{}'.

types/react-relay/test/relay-hooks-tests.tsx:1023:13
TypeScript@local compile error TS2322:
Type '(params: { route: string; }) => { entryPoints: { mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: ...; }; mainPanelB?: undefined; } | ...; queries: ...; extraProps: ...; }' is not assignable to type '(entryPointParams: { route: string; }) => PreloadProps<{ route: string; }, {}, Record<string, EntryPoint<any, any> | undefined>, { foo: "bar"; }>'.
Type '{ entryPoints: { mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: { slug: string; }; }; mainPanelB?: undefined; } | ...; queries: {}; extraProps: ...; }' is not assignable to type 'PreloadProps<{ route: string; }, {}, Record<string, EntryPoint<any, any> | undefined>, { foo: "bar"; }>'.
Types of property 'entryPoints' are incompatible.
Type '{ mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: ...; }; mainPanelB?: undefined; } | ...' is not assignable to type 'ThinNestedEntryPointParamsObject<Record<string, EntryPoint<any, any> | undefined>> | undefined'.
Type '{ mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: { slug: string; }; }; mainPanelB?: undefined; }' is not assignable to type 'ThinNestedEntryPointParamsObject<Record<string, EntryPoint<any, any> | undefined>>'.
Property 'mainPanelA' is incompatible with index signature.
Type '{ entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: { slug: string; }; }' is not assignable to type 'ThinNestedEntryPointParams<EntryPoint<any, any> | undefined>'.
The types of 'entryPoint.root' are incompatible between these types.
Type 'JSResourceReference<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>' is not assignable to type 'JSResourceReference<EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>'.
Type 'EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'ComponentClass<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
Types of property 'getDerivedStateFromProps' are incompatible.
Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any> | undefined' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any> | undefined'.
Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
Types of parameters 'nextProps' and 'nextProps' are incompatible.
Type 'Readonly<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>' is not assignable to type 'Readonly<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>'.
Types of property 'extraProps' are incompatible.
Type '{} | null' is not assignable to type '{}'.
Type 'null' is not assignable to type '{}'.

types/react-relay/test/relay-hooks-tests.tsx:1054:15
TypeScript@local compile error TS2322:
Type 'Readonly<{ dispose: DisposeFn; entryPoints: { [x: string]: Readonly<...>; }; extraProps: {} | null; getComponent: () => any; isDisposed: boolean; queries: { [x: string]: PreloadedQuery<OperationType, Record<...>>; }; rootModuleID: string; }>' is not assignable to type 'PreloadedEntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>> | undefined'.
Type 'Readonly<{ dispose: DisposeFn; entryPoints: { [x: string]: Readonly<...>; }; extraProps: {} | null; getComponent: () => any; isDisposed: boolean; queries: { [x: string]: PreloadedQuery<OperationType, Record<...>>; }; rootModuleID: string; }>' is not assignable to type 'Readonly<{ dispose: DisposeFn; entryPoints: {}; extraProps: {}; getComponent: () => FunctionComponent<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>; isDisposed: boolean; queries: ...; rootModuleID: string; }>'.
Types of property 'extraProps' are incompatible.
Type '{} | null' is not assignable to type '{}'.
Type 'null' is not assignable to type '{}'.
    at combineErrorsAndWarnings (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:200:28)
    at runTests (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:192:20)

Full output in the log.

@typescript-automation

Copy link
Copy Markdown
Contributor

Jake Bailey (@jakebailey) Here are the results of running the user tests with tsc comparing baseline and pr:

Something interesting changed - please have a look.

Details

effect

packages/tools/ai-docgen/tsconfig.json

uglify-js

/mnt/vss/work/1/s/ts_downloads//m/uglify-js/tsconfig.json

  • [NEW] error TS2339: Property 'last_ref' does not exist on type 'never'.
    • /mnt/vss/work/1/s/ts_downloads//m/uglify-js/node_modules/uglify-js/lib/compress.js(2544,35)
  • [MISSING] error TS2322: Type 'false' is not assignable to type 'never'.
    • /mnt/vss/work/1/s/ts_downloads//m/uglify-js/node_modules/uglify-js/lib/compress.js(2544,25)

webpack

tsconfig.json

  • [NEW] error TS2345: Argument of type '[unknown]' is not assignable to parameter of type '[] | [boldQuantity?: boolean | undefined] | [direction?: "child" | "parent" | "sibling" | undefined] | [oversize?: boolean | undefined]'.
  • [NEW] error TS2345: Argument of type 'string | number | boolean | Type' is not assignable to parameter of type 'Type'.

tsconfig.types.json

  • [NEW] error TS2345: Argument of type '[unknown]' is not assignable to parameter of type '[] | [boldQuantity?: boolean | undefined] | [direction?: "child" | "parent" | "sibling" | undefined] | [oversize?: boolean | undefined]'.

tsconfig.types.test.json

@typescript-automation

Copy link
Copy Markdown
Contributor

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=20
Symbols 88,466 88,464 -2 (- 0.00%) ~ ~ p=0.000 n=20
Types 79,607 79,569 -38 (- 0.05%) ~ ~ p=0.000 n=20
Memory Used 107,509k (± 0.03%) 109,739k (± 0.03%) +2,230k (+ 2.07%) 109,565k 109,940k p=0.000 n=20
Memory Allocs 1,262,217 (± 0.01%) 1,297,990 (± 0.01%) +35,772 (+ 2.83%) 1,297,588 1,298,546 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.023s (± 2.29%) 0.023s (± 3.24%) ~ 0.019s 0.027s p=0.868 n=20
Bind Time 0.008s (± 4.65%) 0.008s (± 5.20%) ~ 0.007s 0.009s p=0.250 n=20
Check Time 0.208s (± 0.86%) 0.225s (± 0.54%) 🔻+0.018s (+ 8.44%) 0.219s 0.230s p=0.000 n=20
Emit Time 0.132s (± 1.31%) 0.134s (± 0.91%) +0.002s (+ 1.75%) 0.130s 0.141s p=0.002 n=20
Total Time 0.374s (± 0.42%) 0.394s (± 0.45%) 🔻+0.020s (+ 5.27%) 0.385s 0.401s p=0.000 n=20
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=20
Symbols 586,553 580,825 -5,728 (- 0.98%) ~ ~ p=0.000 n=20
Types 241,682 238,891 -2,791 (- 1.15%) ~ ~ p=0.000 n=20
Memory Used 519,729k (± 0.02%) 835,446k (± 0.01%) 🔻+315,717k (+60.75%) 835,120k 835,702k p=0.000 n=20
Memory Allocs 7,794,013 (± 0.11%) 14,367,341 (± 0.04%) 🔻+6,573,329 (+84.34%) 14,358,229 14,407,785 p=0.000 n=20
Config Time 0.008s (± 2.79%) 0.008s (± 2.79%) ~ 0.008s 0.009s p=1.000 n=20
Parse Time 0.123s (± 3.74%) 0.123s (± 3.44%) ~ 0.114s 0.154s p=0.952 n=20
Bind Time 0.046s (±10.12%) 0.045s (±11.44%) ~ 0.035s 0.066s p=0.629 n=20
Check Time 0s 0s ~ ~ ~ p=1.000 n=20
Emit Time 0.649s (± 2.10%) 1.132s (± 0.84%) 🔻+0.483s (+74.53%) 1.102s 1.193s p=0.000 n=20
Total Time 0.838s (± 1.62%) 1.319s (± 1.06%) 🔻+0.481s (+57.41%) 1.281s 1.402s p=0.000 n=20
arktype - native
Errors 0 4 🔻+4 (+ ∞%) ~ ~ p=0.000 n=20
Symbols 685,920 693,349 +7,429 (+ 1.08%) ~ ~ p=0.000 n=20
Types 939,467 921,185 -18,282 (- 1.95%) ~ ~ p=0.000 n=20
Memory Used 495,347k (± 0.01%) 517,923k (± 0.01%) 🔻+22,576k (+ 4.56%) 517,630k 518,211k p=0.000 n=20
Memory Allocs 12,061,962 (± 0.01%) 12,440,391 (± 0.01%) +378,429 (+ 3.14%) 12,436,747 12,452,115 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.042s (± 3.73%) 0.041s (± 3.67%) ~ 0.034s 0.048s p=0.422 n=20
Bind Time 0.014s (±11.75%) 0.013s (± 8.91%) ~ 0.011s 0.020s p=0.662 n=20
Check Time 0.897s (± 0.59%) 1.049s (± 0.40%) 🔻+0.152s (+16.94%) 1.030s 1.064s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.981s (± 0.54%) 1.107s (± 0.42%) 🔻+0.126s (+12.84%) 1.088s 1.126s p=0.000 n=20
class-transformer - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 45,376 45,319 -57 (- 0.13%) ~ ~ p=0.000 n=20
Types 7,573 7,219 🟩-354 (- 4.67%) ~ ~ p=0.000 n=20
Memory Used 27,895k (± 0.02%) 28,255k (± 0.02%) +360k (+ 1.29%) 28,229k 28,282k p=0.000 n=20
Memory Allocs 248,354 (± 0.06%) 253,495 (± 0.06%) +5,141 (+ 2.07%) 252,977 254,243 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.011s (± 3.57%) 0.011s (± 3.85%) ~ 0.008s 0.012s p=0.495 n=20
Bind Time 0.003s (±10.28%) 0.003s (± 6.03%) ~ 0.002s 0.004s p=0.401 n=20
Check Time 0.008s (± 5.48%) 0.009s (± 6.56%) 🔻+0.001s (+14.84%) 0.007s 0.012s p=0.001 n=20
Emit Time 0.007s (± 6.78%) 0.008s (± 5.88%) ~ 0.006s 0.009s p=0.314 n=20
Total Time 0.030s (± 1.82%) 0.032s (± 2.42%) 🔻+0.001s (+ 4.27%) 0.027s 0.036s p=0.001 n=20
effect - native
Errors 12 20 🔻+8 (+66.67%) ~ ~ p=0.000 n=20
Symbols 1,235,115 1,232,773 -2,342 (- 0.19%) ~ ~ p=0.000 n=20
Types 894,113 888,476 -5,637 (- 0.63%) ~ ~ p=0.000 n=20
Memory Used 949,861k (± 0.02%) 978,931k (± 0.02%) +29,069k (+ 3.06%) 978,314k 979,543k p=0.000 n=20
Memory Allocs 12,642,015 (± 0.04%) 13,094,072 (± 0.03%) +452,057 (+ 3.58%) 13,086,793 13,118,087 p=0.000 n=20
Config Time 0.002s 0.002s (±10.62%) ~ 0.002s 0.004s p=0.487 n=20
Parse Time 0.161s (± 1.51%) 0.166s (± 5.47%) ~ 0.151s 0.231s p=1.000 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.959s (± 1.19%) 1.079s (± 0.62%) 🔻+0.119s (+12.45%) 1.051s 1.110s p=0.000 n=20
Emit Time 0.544s (± 2.17%) 0.555s (± 2.14%) ~ 0.502s 0.588s p=0.147 n=20
Total Time 1.769s (± 0.76%) 1.906s (± 0.90%) 🔻+0.136s (+ 7.70%) 1.840s 1.995s p=0.000 n=20
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=20
Symbols 3,784,019 3,713,239 -70,780 (- 1.87%) ~ ~ p=0.000 n=20
Types 1,355,974 1,262,950 🟩-93,024 (- 6.86%) ~ ~ p=0.000 n=20
Memory Used 1,769,289k (± 0.08%) 1,910,697k (± 0.07%) 🔻+141,408k (+ 7.99%) 1,903,194k 1,914,087k p=0.000 n=20
Memory Allocs 25,737,944 (± 0.08%) 25,508,701 (± 0.10%) -229,243 (- 0.89%) 25,424,785 25,635,372 p=0.000 n=20
Config Time 0.008s 0.008s (± 1.30%) ~ 0.008s 0.009s p=1.000 n=20
Parse Time 0.282s (± 2.57%) 0.281s (± 2.12%) ~ 0.266s 0.311s p=0.733 n=20
Bind Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Check Time 2.947s (± 0.69%) 3.108s (± 0.79%) 🔻+0.161s (+ 5.45%) 3.059s 3.300s p=0.000 n=20
Emit Time 0.239s (± 1.29%) 0.242s (± 1.49%) ~ 0.232s 0.260s p=0.147 n=20
Total Time 3.960s (± 0.56%) 4.121s (± 0.67%) 🔻+0.161s (+ 4.06%) 4.057s 4.319s p=0.000 n=20
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=20
Symbols 4,793,245 4,693,680 -99,565 (- 2.08%) ~ ~ p=0.000 n=20
Types 2,606,905 2,496,397 🟩-110,508 (- 4.24%) ~ ~ p=0.000 n=20
Memory Used 2,846,388k (± 0.04%) 2,984,965k (± 0.03%) 🔻+138,577k (+ 4.87%) 2,982,330k 2,991,104k p=0.000 n=20
Memory Allocs 75,267,408 (± 0.48%) 75,544,825 (± 0.43%) +277,417 (+ 0.37%) 74,959,977 78,022,569 p=0.009 n=20
Config Time 0.025s (± 1.35%) 0.025s (± 1.48%) ~ 0.024s 0.026s p=0.502 n=20
Parse Time 0.484s (± 6.21%) 0.465s (± 3.53%) ~ 0.411s 0.555s p=0.533 n=20
Bind Time 0.158s (±12.69%) 0.148s (±10.66%) ~ 0.118s 0.228s p=0.653 n=20
Check Time 6.560s (± 0.84%) 7.073s (± 0.97%) 🔻+0.513s (+ 7.82%) 6.872s 7.390s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.278s (± 0.90%) 7.760s (± 0.89%) 🔻+0.482s (+ 6.62%) 7.580s 8.109s p=0.000 n=20
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,883,074 1,883,995 +921 (+ 0.05%) ~ ~ p=0.000 n=20
Types 1,158,168 1,148,842 -9,326 (- 0.81%) ~ ~ p=0.000 n=20
Memory Used 966,930k (± 0.02%) 1,012,042k (± 0.01%) 🔻+45,113k (+ 4.67%) 1,011,607k 1,012,445k p=0.000 n=20
Memory Allocs 13,492,108 (± 0.15%) 13,795,368 (± 0.12%) +303,260 (+ 2.25%) 13,752,233 13,858,849 p=0.000 n=20
Config Time 0.007s 0.007s (± 1.48%) ~ 0.007s 0.008s p=1.000 n=20
Parse Time 0.150s (± 2.06%) 0.153s (± 2.83%) ~ 0.139s 0.174s p=0.343 n=20
Bind Time 0.043s (± 8.79%) 0.042s (±10.17%) ~ 0.036s 0.066s p=0.995 n=20
Check Time 1.391s (± 1.00%) 1.578s (± 1.25%) 🔻+0.187s (+13.41%) 1.547s 1.749s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.610s (± 0.77%) 1.798s (± 1.05%) 🔻+0.188s (+11.66%) 1.758s 1.954s p=0.000 n=20
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,184,972 1,186,601 +1,629 (+ 0.14%) ~ ~ p=0.000 n=20
Types 438,959 437,226 -1,733 (- 0.39%) ~ ~ p=0.000 n=20
Memory Used 1,170,629k (± 0.29%) 1,181,393k (± 0.30%) +10,764k (+ 0.92%) 1,166,273k 1,202,215k p=0.000 n=20
Memory Allocs 47,548,831 (± 0.12%) 49,016,550 (± 0.09%) +1,467,719 (+ 3.09%) 48,867,549 49,204,863 p=0.000 n=20
Config Time 0.002s (±15.36%) 0.002s (±22.85%) ~ 0.000s 0.003s p=1.000 n=20
Parse Time 0.138s (± 1.56%) 0.140s (± 2.05%) ~ 0.130s 0.156s p=0.542 n=20
Bind Time 0.000s (±208.60%) 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.800s (± 0.63%) 0.870s (± 0.45%) 🔻+0.070s (+ 8.70%) 0.854s 0.889s p=0.000 n=20
Emit Time 0.140s (± 1.64%) 0.139s (± 1.69%) ~ 0.134s 0.156s p=0.226 n=20
Total Time 9.284s (± 0.46%) 9.870s (± 0.43%) 🔻+0.586s (+ 6.31%) 9.771s 10.035s p=0.000 n=20
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 263,511 263,733 +222 (+ 0.08%) ~ ~ p=0.000 n=20
Types 196,116 195,818 -298 (- 0.15%) ~ ~ p=0.000 n=20
Memory Used 223,535k (± 0.02%) 230,455k (± 0.03%) +6,920k (+ 3.10%) 230,135k 230,640k p=0.000 n=20
Memory Allocs 2,389,691 (± 0.01%) 2,497,315 (± 0.02%) 🔻+107,625 (+ 4.50%) 2,495,875 2,499,365 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.050s (± 3.71%) 0.051s (± 2.57%) ~ 0.046s 0.056s p=0.161 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.381s (± 0.93%) 0.416s (± 0.98%) 🔻+0.035s (+ 9.27%) 0.404s 0.437s p=0.000 n=20
Emit Time 0.048s (± 5.64%) 0.054s (± 4.39%) 🔻+0.006s (+13.36%) 0.042s 0.063s p=0.003 n=20
Total Time 0.505s (± 0.93%) 0.550s (± 0.93%) 🔻+0.045s (+ 8.90%) 0.525s 0.576s p=0.000 n=20
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 4,350,661 4,275,656 -75,005 (- 1.72%) ~ ~ p=0.000 n=20
Types 3,040,644 3,011,403 -29,241 (- 0.96%) ~ ~ p=0.000 n=20
Memory Used 2,417,888k (± 0.04%) 2,543,920k (± 0.03%) 🔻+126,032k (+ 5.21%) 2,541,436k 2,547,953k p=0.000 n=20
Memory Allocs 37,180,852 (± 0.10%) 40,063,160 (± 0.07%) 🔻+2,882,308 (+ 7.75%) 39,971,629 40,177,112 p=0.000 n=20
Config Time 0.003s (± 3.54%) 0.003s (± 7.54%) ~ 0.002s 0.003s p=0.182 n=20
Parse Time 0.248s (± 1.53%) 0.255s (± 3.03%) ~ 0.218s 0.289s p=0.087 n=20
Bind Time 0.085s (± 9.69%) 0.081s (±10.15%) ~ 0.072s 0.132s p=0.363 n=20
Check Time 5.769s (± 0.37%) 6.590s (± 0.56%) 🔻+0.822s (+14.25%) 6.462s 6.756s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 6.117s (± 0.36%) 6.939s (± 0.55%) 🔻+0.823s (+13.45%) 6.807s 7.091s p=0.000 n=20
tanstack-router - native
Errors 1 1 ~ ~ ~ p=1.000 n=20
Symbols 571,756 566,635 -5,121 (- 0.90%) ~ ~ p=0.000 n=20
Types 397,689 388,905 -8,784 (- 2.21%) ~ ~ p=0.000 n=20
Memory Used 326,482k (± 0.02%) 342,986k (± 0.01%) 🔻+16,503k (+ 5.05%) 342,803k 343,237k p=0.000 n=20
Memory Allocs 4,333,452 (± 0.19%) 4,545,914 (± 0.22%) 🔻+212,462 (+ 4.90%) 4,523,627 4,599,950 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.040s (± 4.30%) 0.040s (± 5.09%) ~ 0.034s 0.051s p=0.762 n=20
Bind Time 0.014s (±12.50%) 0.012s (± 6.92%) 🟩-0.003s (-18.69%) 0.011s 0.018s p=0.014 n=20
Check Time 0.513s (± 0.79%) 0.580s (± 0.78%) 🔻+0.067s (+13.10%) 0.565s 0.602s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.584s (± 0.97%) 0.650s (± 0.86%) 🔻+0.066s (+11.31%) 0.631s 0.681s p=0.000 n=20
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=20
Symbols 231,616 231,759 +143 (+ 0.06%) ~ ~ p=0.000 n=20
Types 181,195 181,047 -148 (- 0.08%) ~ ~ p=0.000 n=20
Memory Used 192,974k (± 0.02%) 198,440k (± 0.02%) +5,466k (+ 2.83%) 198,326k 198,555k p=0.000 n=20
Memory Allocs 1,310,034 (± 0.01%) 1,397,371 (± 0.02%) 🔻+87,338 (+ 6.67%) 1,396,512 1,398,322 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.041s (± 3.09%) 0.041s (± 3.45%) ~ 0.036s 0.049s p=1.000 n=20
Bind Time 0.021s (± 4.51%) 0.020s (± 5.12%) ~ 0.016s 0.024s p=0.792 n=20
Check Time 0.295s (± 1.02%) 0.326s (± 1.27%) 🔻+0.031s (+10.36%) 0.310s 0.343s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.364s (± 0.86%) 0.394s (± 0.94%) 🔻+0.030s (+ 8.35%) 0.383s 0.407s p=0.000 n=20
vscode - native
Errors 11 11 ~ ~ ~ p=1.000 n=20
Symbols 7,563,659 7,324,552 🟩-239,107 (- 3.16%) ~ ~ p=0.000 n=20
Types 4,408,914 4,166,398 🟩-242,516 (- 5.50%) ~ ~ p=0.000 n=20
Memory Used 5,227,175k (± 0.02%) 5,314,280k (± 0.01%) +87,105k (+ 1.67%) 5,311,440k 5,316,190k p=0.000 n=20
Memory Allocs 57,320,945 (± 0.02%) 61,181,545 (± 0.02%) 🔻+3,860,600 (+ 6.74%) 61,163,144 61,253,877 p=0.000 n=20
Config Time 0.034s (± 1.39%) 0.034s (± 1.25%) ~ 0.033s 0.035s p=0.217 n=20
Parse Time 0.883s (± 1.92%) 0.887s (± 1.40%) ~ 0.836s 0.943s p=0.693 n=20
Bind Time 0.317s (±10.03%) 0.298s (± 1.71%) ~ 0.284s 0.326s p=0.213 n=20
Check Time 7.229s (± 0.94%) 7.961s (± 0.72%) 🔻+0.732s (+10.12%) 7.848s 8.303s p=0.000 n=20
Emit Time 2.022s (± 7.54%) 2.103s (± 5.93%) +0.080s (+ 3.97%) 1.954s 2.827s p=0.004 n=20
Total Time 10.545s (± 1.37%) 11.340s (± 1.19%) 🔻+0.795s (+ 7.54%) 11.082s 12.138s p=0.000 n=20
webpack - native
Errors 595 601 +6 (+ 1.01%) ~ ~ p=0.000 n=20
Symbols 861,433 861,788 +355 (+ 0.04%) ~ ~ p=0.000 n=20
Types 595,020 593,458 -1,562 (- 0.26%) ~ ~ p=0.000 n=20
Memory Used 632,862k (± 0.02%) 666,983k (± 0.01%) 🔻+34,121k (+ 5.39%) 666,571k 667,330k p=0.000 n=20
Memory Allocs 5,885,837 (± 0.05%) 6,472,281 (± 0.04%) 🔻+586,444 (+ 9.96%) 6,464,935 6,484,476 p=0.000 n=20
Config Time 0.004s 0.004s ~ ~ ~ p=1.000 n=20
Parse Time 0.121s (± 2.89%) 0.123s (± 1.93%) ~ 0.115s 0.131s p=0.198 n=20
Bind Time 0.039s (± 9.77%) 0.041s (±11.91%) ~ 0.033s 0.064s p=0.973 n=20
Check Time 0.983s (± 0.54%) 1.127s (± 0.37%) 🔻+0.144s (+14.64%) 1.113s 1.141s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.170s (± 0.42%) 1.317s (± 0.57%) 🔻+0.147s (+12.55%) 1.295s 1.349s p=0.000 n=20
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 640,490 659,984 +19,494 (+ 3.04%) ~ ~ p=0.000 n=20
Types 387,984 372,710 🟩-15,274 (- 3.94%) ~ ~ p=0.000 n=20
Memory Used 350,143k (± 0.04%) 370,185k (± 0.02%) 🔻+20,043k (+ 5.72%) 369,925k 370,682k p=0.000 n=20
Memory Allocs 3,970,556 (± 0.07%) 4,510,639 (± 0.10%) 🔻+540,083 (+13.60%) 4,495,377 4,533,864 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.059s (± 3.18%) 0.059s (± 1.43%) ~ 0.055s 0.062s p=0.326 n=20
Bind Time 0.019s (± 9.09%) 0.020s (±11.42%) ~ 0.016s 0.032s p=0.903 n=20
Check Time 0.382s (± 0.89%) 0.447s (± 1.19%) 🔻+0.065s (+17.12%) 0.433s 0.468s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.466s (± 0.80%) 0.531s (± 1.08%) 🔻+0.065s (+14.02%) 0.512s 0.550s p=0.000 n=20
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • arktype - native
  • class-transformer - native
  • effect - native
  • mui-docs - native
  • sentry - native
  • social-app - native
  • strada-build-src - native
  • strada-compiler - native
  • t3code-server - native
  • tanstack-router - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 20
Baseline baseline 20

Developer Information:

Download Benchmarks

@jakebailey

Copy link
Copy Markdown
Member Author

Now we're talking

@typescript-automation

Copy link
Copy Markdown
Contributor

Jake Bailey (@jakebailey) Here are the results of running the top 400 repos with tsc comparing baseline and pr:

Something interesting changed - please have a look.

Details

cheaper-inference/OmniRoute

5 of 11 projects failed to build with the old tsc and were ignored

open-sse/tsconfig.json

  • error TS2322: Type 'Promise<ImageResult | MagnificImageResult | { success: boolean; data: { created: any; data: any; }; } | { success: boolean; status: number; error: unknown; } | { data?: undefined; success: boolean; status: number; error: any; }>' is not assignable to type 'Promise<ImageResult>'.

nexu-io/open-design

23 of 53 projects failed to build with the old tsc and were ignored

apps/web/tsconfig.build.json

@jakebailey

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) test it

@typescript-automation

typescript-automation Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

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
Contributor

Hey Jake Bailey (@jakebailey), the results of running the DT tests are ready.

There were interesting changes:

Branch only errors: d3-selection

Package: d3-selection

Branch error:

Project scope: tsconfig.json

Error: types/d3-selection/d3-selection-tests.ts:1502:9
TypeScript@local compile error TS2769:
No overload matches this call.
The last overload gave the following error.
Argument of type '(enter: Selection<EnterElement, number, HTMLElement, unknown>) => TransitionLike<HTMLParagraphElement, number>' is not assignable to parameter of type 'string | ((elem: Selection<EnterElement, number, HTMLElement, unknown>) => Selection<BaseType, number, HTMLElement, unknown> | TransitionLike<...>)'.
Type '(enter: Selection<EnterElement, number, HTMLElement, unknown>) => TransitionLike<HTMLParagraphElement, number>' is not assignable to type '(elem: Selection<EnterElement, number, HTMLElement, unknown>) => Selection<BaseType, number, HTMLElement, unknown> | TransitionLike<...>'.
Type 'TransitionLike<HTMLParagraphElement, number>' is not assignable to type 'Selection<BaseType, number, HTMLElement, unknown> | TransitionLike<HTMLElement, number>'.
Type 'TransitionLike<HTMLParagraphElement, number>' is not assignable to type 'TransitionLike<HTMLElement, number>'.
The types returned by 'selection().merge' are incompatible between these types.
Type '(other: Selection<HTMLParagraphElement, number, any, any> | TransitionLike<HTMLParagraphElement, number>) => Selection<...>' is not assignable to type '(other: Selection<HTMLElement, number, any, any> | TransitionLike<HTMLElement, number>) => Selection<HTMLElement, number, any, any>'.
Types of parameters 'other' and 'other' are incompatible.
Type 'Selection<HTMLElement, number, any, any> | TransitionLike<HTMLElement, number>' is not assignable to type 'Selection<HTMLParagraphElement, number, any, any> | TransitionLike<HTMLParagraphElement, number>'.
Type 'Selection<HTMLElement, number, any, any>' is not assignable to type 'Selection<HTMLParagraphElement, number, any, any> | TransitionLike<HTMLParagraphElement, number>'.
Type 'Selection<HTMLElement, number, any, any>' is not assignable to type 'Selection<HTMLParagraphElement, number, any, any>'.
Types of property 'select' are incompatible.
Type '{ <DescElement extends BaseType>(selector: string): import("/mnt/vss/_work/1/s/DefinitelyTyped/types/d3-selection/index").Selection<DescElement, number, any, any>; <DescElement extends BaseType>(selector: null): import("/mnt/vss/_work/1/s/DefinitelyTyped/types/d3-selection/index").Selection<...>; <DescElement extend...' is not assignable to type '{ <DescElement extends BaseType>(selector: string): import("/mnt/vss/_work/1/s/DefinitelyTyped/types/d3-selection/index").Selection<DescElement, number, any, any>; <DescElement extends BaseType>(selector: null): import("/mnt/vss/_work/1/s/DefinitelyTyped/types/d3-selection/index").Selection<...>; <DescElement extend...'. Two different types with this name exist, but they are unrelated.
Types of parameters 'selector' and 'selector' are incompatible.
Types of parameters 'groups' and 'groups' are incompatible.
Type 'HTMLElement[] | ArrayLike<HTMLElement>' is not assignable to type 'HTMLParagraphElement[] | ArrayLike<HTMLParagraphElement>'.
Type 'HTMLElement[]' is not assignable to type 'HTMLParagraphElement[] | ArrayLike<HTMLParagraphElement>'.
Type 'HTMLElement[]' is not assignable to type 'HTMLParagraphElement[]'.
Property 'align' is missing in type 'HTMLElement' but required in type 'HTMLParagraphElement'.
    at combineErrorsAndWarnings (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:200:28)
    at runTests (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:192:20)
Branch only errors: react-relay

Package: react-relay

Branch error:

Project scope: tsconfig.json

Error: types/react-relay/test/relay-hooks-tests.tsx:987:13
TypeScript@local compile error TS2344:
Type '{ mainPanelA?: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params> | undefined; mainPanelB?: EntryPoint<...> | undefined; }' does not satisfy the constraint 'Record<string, EntryPoint<any, any> | undefined>'.
Property 'mainPanelA' is incompatible with index signature.
Type 'EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>' is not assignable to type 'InternalEntryPointRepresentation<any, Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Types of property 'root' are incompatible.
Type 'JSResourceReference<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>' is not assignable to type 'JSResourceReference<EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>'.
Type 'EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'ComponentClass<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
Types of property 'getDerivedStateFromProps' are incompatible.
Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any> | undefined' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any> | undefined'.
Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
Types of parameters 'nextProps' and 'nextProps' are incompatible.
Type 'Readonly<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>' is not assignable to type 'Readonly<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>'.
Types of property 'extraProps' are incompatible.
Type '{} | null' is not assignable to type '{}'.
Type 'null' is not assignable to type '{}'.

types/react-relay/test/relay-hooks-tests.tsx:1023:13
TypeScript@local compile error TS2322:
Type '(params: { route: string; }) => { entryPoints: { mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: ...; }; mainPanelB?: undefined; } | ...; queries: ...; extraProps: ...; }' is not assignable to type '(entryPointParams: { route: string; }) => PreloadProps<{ route: string; }, {}, Record<string, EntryPoint<any, any> | undefined>, { foo: "bar"; }>'.
Type '{ entryPoints: { mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: { slug: string; }; }; mainPanelB?: undefined; } | ...; queries: {}; extraProps: ...; }' is not assignable to type 'PreloadProps<{ route: string; }, {}, Record<string, EntryPoint<any, any> | undefined>, { foo: "bar"; }>'.
Types of property 'entryPoints' are incompatible.
Type '{ mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: ...; }; mainPanelB?: undefined; } | ...' is not assignable to type 'ThinNestedEntryPointParamsObject<Record<string, EntryPoint<any, any> | undefined>> | undefined'.
Type '{ mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: { slug: string; }; }; mainPanelB?: undefined; }' is not assignable to type 'ThinNestedEntryPointParamsObject<Record<string, EntryPoint<any, any> | undefined>>'.
Property 'mainPanelA' is incompatible with index signature.
Type '{ entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: { slug: string; }; }' is not assignable to type 'ThinNestedEntryPointParams<EntryPoint<any, any> | undefined>'.
The types of 'entryPoint.root' are incompatible between these types.
Type 'JSResourceReference<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>' is not assignable to type 'JSResourceReference<EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>'.
Type 'EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'ComponentClass<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
Types of property 'getDerivedStateFromProps' are incompatible.
Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any> | undefined' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any> | undefined'.
Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
Types of parameters 'nextProps' and 'nextProps' are incompatible.
Type 'Readonly<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>' is not assignable to type 'Readonly<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>'.
Types of property 'extraProps' are incompatible.
Type '{} | null' is not assignable to type '{}'.
Type 'null' is not assignable to type '{}'.

types/react-relay/test/relay-hooks-tests.tsx:1054:15
TypeScript@local compile error TS2322:
Type 'Readonly<{ dispose: DisposeFn; entryPoints: { [x: string]: Readonly<...>; }; extraProps: {} | null; getComponent: () => any; isDisposed: boolean; queries: { [x: string]: PreloadedQuery<OperationType, Record<...>>; }; rootModuleID: string; }>' is not assignable to type 'PreloadedEntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>> | undefined'.
Type 'Readonly<{ dispose: DisposeFn; entryPoints: { [x: string]: Readonly<...>; }; extraProps: {} | null; getComponent: () => any; isDisposed: boolean; queries: { [x: string]: PreloadedQuery<OperationType, Record<...>>; }; rootModuleID: string; }>' is not assignable to type 'Readonly<{ dispose: DisposeFn; entryPoints: {}; extraProps: {}; getComponent: () => FunctionComponent<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>; isDisposed: boolean; queries: ...; rootModuleID: string; }>'.
Types of property 'extraProps' are incompatible.
Type '{} | null' is not assignable to type '{}'.
Type 'null' is not assignable to type '{}'.
    at combineErrorsAndWarnings (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:200:28)
    at runTests (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:192:20)

Full output in the log.

@typescript-automation

Copy link
Copy Markdown
Contributor

Jake Bailey (@jakebailey) Here are the results of running the user tests with tsc comparing baseline and pr:

Something interesting changed - please have a look.

Details

effect

packages/tools/ai-docgen/tsconfig.json

uglify-js

/mnt/vss/work/1/s/ts_downloads//m/uglify-js/tsconfig.json

  • [NEW] error TS2339: Property 'last_ref' does not exist on type 'never'.
    • /mnt/vss/work/1/s/ts_downloads//m/uglify-js/node_modules/uglify-js/lib/compress.js(2544,35)
  • [MISSING] error TS2322: Type 'false' is not assignable to type 'never'.
    • /mnt/vss/work/1/s/ts_downloads//m/uglify-js/node_modules/uglify-js/lib/compress.js(2544,25)

webpack

tsconfig.json

  • [NEW] error TS2345: Argument of type '[unknown]' is not assignable to parameter of type '[] | [boldQuantity?: boolean | undefined] | [direction?: "child" | "parent" | "sibling" | undefined] | [oversize?: boolean | undefined]'.
  • [NEW] error TS2345: Argument of type 'string | number | boolean | Type' is not assignable to parameter of type 'Type'.

tsconfig.types.json

  • [NEW] error TS2345: Argument of type '[unknown]' is not assignable to parameter of type '[] | [boldQuantity?: boolean | undefined] | [direction?: "child" | "parent" | "sibling" | undefined] | [oversize?: boolean | undefined]'.

tsconfig.types.test.json

@typescript-automation

Copy link
Copy Markdown
Contributor

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=20
Symbols 88,466 88,464 -2 (- 0.00%) ~ ~ p=0.000 n=20
Types 79,607 79,569 -38 (- 0.05%) ~ ~ p=0.000 n=20
Memory Used 107,502k (± 0.02%) 109,575k (± 0.03%) +2,072k (+ 1.93%) 109,454k 109,693k p=0.000 n=20
Memory Allocs 1,262,200 (± 0.01%) 1,297,565 (± 0.01%) +35,365 (+ 2.80%) 1,297,305 1,297,943 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.023s (± 2.64%) 0.023s (± 2.83%) ~ 0.019s 0.025s p=0.966 n=20
Bind Time 0.008s (± 3.69%) 0.008s (± 6.64%) ~ 0.007s 0.010s p=0.166 n=20
Check Time 0.207s (± 0.69%) 0.226s (± 0.59%) 🔻+0.018s (+ 8.81%) 0.220s 0.230s p=0.000 n=20
Emit Time 0.133s (± 1.70%) 0.135s (± 1.13%) +0.002s (+ 1.58%) 0.131s 0.143s p=0.016 n=20
Total Time 0.374s (± 0.58%) 0.395s (± 0.57%) 🔻+0.020s (+ 5.44%) 0.384s 0.408s p=0.000 n=20
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=20
Symbols 586,553 580,825 -5,728 (- 0.98%) ~ ~ p=0.000 n=20
Types 241,682 238,891 -2,791 (- 1.15%) ~ ~ p=0.000 n=20
Memory Used 519,802k (± 0.02%) 834,242k (± 0.01%) 🔻+314,440k (+60.49%) 833,968k 834,507k p=0.000 n=20
Memory Allocs 7,794,702 (± 0.17%) 14,362,449 (± 0.04%) 🔻+6,567,747 (+84.26%) 14,355,366 14,408,139 p=0.000 n=20
Config Time 0.009s 0.009s ~ ~ ~ p=1.000 n=20
Parse Time 0.122s (± 2.70%) 0.117s (± 2.28%) ~ 0.107s 0.125s p=0.089 n=20
Bind Time 0.041s (± 7.76%) 0.045s (±11.91%) ~ 0.037s 0.070s p=0.258 n=20
Check Time 0s 0s ~ ~ ~ p=1.000 n=20
Emit Time 0.646s (± 1.12%) 1.135s (± 0.81%) 🔻+0.489s (+75.76%) 1.107s 1.177s p=0.000 n=20
Total Time 0.828s (± 0.89%) 1.316s (± 0.88%) 🔻+0.488s (+58.88%) 1.283s 1.352s p=0.000 n=20
arktype - native
Errors 0 4 🔻+4 (+ ∞%) ~ ~ p=0.000 n=20
Symbols 685,920 693,349 +7,429 (+ 1.08%) ~ ~ p=0.000 n=20
Types 939,467 921,165 -18,302 (- 1.95%) ~ ~ p=0.000 n=20
Memory Used 495,347k (± 0.01%) 514,865k (± 0.01%) +19,518k (+ 3.94%) 514,631k 515,252k p=0.000 n=20
Memory Allocs 12,062,425 (± 0.01%) 12,433,424 (± 0.01%) +371,000 (+ 3.08%) 12,430,754 12,443,969 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.041s (± 3.84%) 0.041s (± 3.23%) ~ 0.036s 0.047s p=0.421 n=20
Bind Time 0.014s (±10.02%) 0.013s (± 8.35%) ~ 0.011s 0.020s p=0.711 n=20
Check Time 0.877s (± 0.77%) 1.029s (± 0.47%) 🔻+0.152s (+17.30%) 1.011s 1.050s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.960s (± 0.51%) 1.086s (± 0.53%) 🔻+0.126s (+13.07%) 1.065s 1.106s p=0.000 n=20
class-transformer - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 45,376 45,319 -57 (- 0.13%) ~ ~ p=0.000 n=20
Types 7,573 7,219 🟩-354 (- 4.67%) ~ ~ p=0.000 n=20
Memory Used 27,890k (± 0.02%) 28,232k (± 0.02%) +342k (+ 1.23%) 28,209k 28,254k p=0.000 n=20
Memory Allocs 248,432 (± 0.05%) 253,295 (± 0.05%) +4,864 (+ 1.96%) 252,849 253,751 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.011s (± 3.83%) 0.011s (± 4.67%) ~ 0.008s 0.013s p=0.149 n=20
Bind Time 0.003s (±12.18%) 0.003s (± 9.29%) ~ 0.003s 0.005s p=0.861 n=20
Check Time 0.008s (± 6.42%) 0.009s (± 5.45%) 🔻+0.001s (+12.50%) 0.007s 0.010s p=0.004 n=20
Emit Time 0.008s (± 7.47%) 0.008s (± 5.04%) ~ 0.007s 0.009s p=0.967 n=20
Total Time 0.031s (± 2.17%) 0.032s (± 1.79%) +0.001s (+ 3.43%) 0.029s 0.034s p=0.025 n=20
effect - native
Errors 12 20 🔻+8 (+66.67%) ~ ~ p=0.000 n=20
Symbols 1,235,115 1,232,770 -2,345 (- 0.19%) ~ ~ p=0.000 n=20
Types 894,113 887,221 -6,892 (- 0.77%) ~ ~ p=0.000 n=20
Memory Used 949,874k (± 0.02%) 969,975k (± 0.02%) +20,101k (+ 2.12%) 969,328k 970,741k p=0.000 n=20
Memory Allocs 12,635,940 (± 0.02%) 13,075,043 (± 0.07%) +439,103 (+ 3.48%) 13,063,558 13,161,490 p=0.000 n=20
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=20
Parse Time 0.157s (± 2.99%) 0.156s (± 1.85%) ~ 0.144s 0.166s p=0.542 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.906s (± 1.79%) 1.018s (± 1.38%) 🔻+0.112s (+12.31%) 0.982s 1.094s p=0.000 n=20
Emit Time 0.509s (± 2.99%) 0.519s (± 2.14%) ~ 0.490s 0.578s p=0.351 n=20
Total Time 1.667s (± 1.81%) 1.786s (± 1.29%) 🔻+0.119s (+ 7.12%) 1.704s 1.881s p=0.000 n=20
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=20
Symbols 3,784,019 3,713,239 -70,780 (- 1.87%) ~ ~ p=0.000 n=20
Types 1,355,974 1,262,950 🟩-93,024 (- 6.86%) ~ ~ p=0.000 n=20
Memory Used 1,768,756k (± 0.09%) 1,906,500k (± 0.05%) 🔻+137,744k (+ 7.79%) 1,902,431k 1,911,427k p=0.000 n=20
Memory Allocs 25,747,582 (± 0.14%) 25,500,783 (± 0.13%) -246,800 (- 0.96%) 25,399,458 25,639,157 p=0.000 n=20
Config Time 0.008s 0.008s ~ ~ ~ p=1.000 n=20
Parse Time 0.281s (± 2.19%) 0.280s (± 2.28%) ~ 0.235s 0.302s p=0.713 n=20
Bind Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Check Time 2.927s (± 0.51%) 3.071s (± 0.36%) 🔻+0.144s (+ 4.90%) 3.038s 3.116s p=0.000 n=20
Emit Time 0.238s (± 1.14%) 0.240s (± 1.06%) ~ 0.230s 0.247s p=0.303 n=20
Total Time 3.934s (± 0.42%) 4.075s (± 0.27%) +0.141s (+ 3.59%) 4.011s 4.113s p=0.000 n=20
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=20
Symbols 4,793,245 4,693,680 -99,565 (- 2.08%) ~ ~ p=0.000 n=20
Types 2,606,905 2,496,340 🟩-110,565 (- 4.24%) ~ ~ p=0.000 n=20
Memory Used 2,846,746k (± 0.03%) 2,973,537k (± 0.03%) 🔻+126,791k (+ 4.45%) 2,969,722k 2,976,277k p=0.000 n=20
Memory Allocs 75,043,909 (± 0.25%) 75,318,966 (± 0.17%) +275,056 (+ 0.37%) 74,959,266 75,940,441 p=0.001 n=20
Config Time 0.025s (± 0.92%) 0.025s (± 1.04%) ~ 0.024s 0.026s p=0.624 n=20
Parse Time 0.467s (± 4.44%) 0.460s (± 3.46%) ~ 0.420s 0.532s p=0.482 n=20
Bind Time 0.149s (±11.33%) 0.166s (± 9.32%) ~ 0.129s 0.215s p=0.062 n=20
Check Time 6.522s (± 0.78%) 7.012s (± 0.92%) 🔻+0.489s (+ 7.50%) 6.852s 7.356s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.210s (± 0.73%) 7.718s (± 0.75%) 🔻+0.508s (+ 7.05%) 7.563s 8.016s p=0.000 n=20
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,883,074 1,883,995 +921 (+ 0.05%) ~ ~ p=0.000 n=20
Types 1,158,168 1,148,768 -9,400 (- 0.81%) ~ ~ p=0.000 n=20
Memory Used 966,922k (± 0.01%) 1,009,494k (± 0.01%) 🔻+42,572k (+ 4.40%) 1,008,813k 1,010,239k p=0.000 n=20
Memory Allocs 13,521,383 (± 0.26%) 13,801,133 (± 0.27%) +279,750 (+ 2.07%) 13,744,905 14,101,853 p=0.000 n=20
Config Time 0.007s (± 2.39%) 0.007s (± 2.66%) ~ 0.007s 0.008s p=1.000 n=20
Parse Time 0.155s (± 2.40%) 0.157s (± 3.65%) ~ 0.141s 0.198s p=0.578 n=20
Bind Time 0.041s (± 8.64%) 0.043s (± 9.52%) ~ 0.035s 0.060s p=0.632 n=20
Check Time 1.407s (± 0.93%) 1.593s (± 0.66%) 🔻+0.186s (+13.24%) 1.566s 1.648s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.628s (± 0.76%) 1.818s (± 0.68%) 🔻+0.190s (+11.68%) 1.785s 1.874s p=0.000 n=20
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,184,972 1,186,601 +1,629 (+ 0.14%) ~ ~ p=0.000 n=20
Types 438,959 437,226 -1,733 (- 0.39%) ~ ~ p=0.000 n=20
Memory Used 1,169,503k (± 0.25%) 1,179,387k (± 0.33%) +9,884k (+ 0.85%) 1,168,695k 1,204,029k p=0.000 n=20
Memory Allocs 47,586,666 (± 0.08%) 49,003,892 (± 0.10%) +1,417,226 (+ 2.98%) 48,858,952 49,278,060 p=0.000 n=20
Config Time 0.002s (±10.63%) 0.002s (±13.83%) ~ 0.001s 0.002s p=0.480 n=20
Parse Time 0.138s (± 1.08%) 0.137s (± 1.98%) ~ 0.130s 0.153s p=0.175 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.788s (± 0.55%) 0.864s (± 0.65%) 🔻+0.076s (+ 9.61%) 0.849s 0.892s p=0.000 n=20
Emit Time 0.139s (± 1.73%) 0.137s (± 1.64%) ~ 0.131s 0.153s p=0.089 n=20
Total Time 9.191s (± 0.49%) 9.824s (± 0.73%) 🔻+0.633s (+ 6.89%) 9.595s 10.099s p=0.000 n=20
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 263,511 263,733 +222 (+ 0.08%) ~ ~ p=0.000 n=20
Types 196,116 195,818 -298 (- 0.15%) ~ ~ p=0.000 n=20
Memory Used 223,552k (± 0.02%) 230,107k (± 0.02%) +6,555k (+ 2.93%) 229,830k 230,220k p=0.000 n=20
Memory Allocs 2,389,670 (± 0.01%) 2,495,679 (± 0.01%) 🔻+106,009 (+ 4.44%) 2,494,328 2,497,196 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.049s (± 3.41%) 0.049s (± 2.72%) ~ 0.044s 0.054s p=0.671 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.405s (± 0.37%) 0.445s (± 0.84%) 🔻+0.041s (+10.04%) 0.429s 0.468s p=0.000 n=20
Emit Time 0.051s (± 6.07%) 0.054s (± 6.58%) ~ 0.043s 0.066s p=0.179 n=20
Total Time 0.534s (± 0.75%) 0.578s (± 1.11%) 🔻+0.044s (+ 8.22%) 0.549s 0.608s p=0.000 n=20
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 4,350,661 4,275,656 -75,005 (- 1.72%) ~ ~ p=0.000 n=20
Types 3,040,644 3,011,289 -29,355 (- 0.97%) ~ ~ p=0.000 n=20
Memory Used 2,417,813k (± 0.05%) 2,499,686k (± 0.03%) +81,872k (+ 3.39%) 2,497,624k 2,503,166k p=0.000 n=20
Memory Allocs 37,162,703 (± 0.07%) 39,936,827 (± 0.05%) 🔻+2,774,124 (+ 7.46%) 39,867,361 40,066,053 p=0.000 n=20
Config Time 0.003s (± 6.00%) 0.003s (± 6.84%) ~ 0.002s 0.003s p=1.000 n=20
Parse Time 0.251s (± 2.05%) 0.250s (± 2.05%) ~ 0.236s 0.268s p=0.683 n=20
Bind Time 0.085s (±10.33%) 0.090s (±11.32%) ~ 0.074s 0.137s p=0.472 n=20
Check Time 5.821s (± 0.50%) 6.554s (± 0.50%) 🔻+0.733s (+12.60%) 6.429s 6.720s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 6.170s (± 0.43%) 6.909s (± 0.50%) 🔻+0.739s (+11.98%) 6.755s 7.066s p=0.000 n=20
tanstack-router - native
Errors 1 1 ~ ~ ~ p=1.000 n=20
Symbols 571,756 566,635 -5,121 (- 0.90%) ~ ~ p=0.000 n=20
Types 397,689 388,675 -9,014 (- 2.27%) ~ ~ p=0.000 n=20
Memory Used 326,441k (± 0.01%) 341,109k (± 0.01%) 🔻+14,669k (+ 4.49%) 340,953k 341,307k p=0.000 n=20
Memory Allocs 4,335,751 (± 0.29%) 4,537,255 (± 0.23%) 🔻+201,505 (+ 4.65%) 4,518,598 4,593,233 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.040s (± 4.98%) 0.041s (± 4.70%) ~ 0.032s 0.047s p=0.558 n=20
Bind Time 0.015s (±10.48%) 0.013s (±10.95%) ~ 0.011s 0.021s p=0.051 n=20
Check Time 0.521s (± 1.75%) 0.586s (± 1.65%) 🔻+0.065s (+12.48%) 0.555s 0.630s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.595s (± 1.72%) 0.661s (± 1.59%) 🔻+0.066s (+11.05%) 0.627s 0.717s p=0.000 n=20
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=20
Symbols 231,616 231,759 +143 (+ 0.06%) ~ ~ p=0.000 n=20
Types 181,195 181,047 -148 (- 0.08%) ~ ~ p=0.000 n=20
Memory Used 193,003k (± 0.02%) 197,873k (± 0.01%) +4,870k (+ 2.52%) 197,773k 197,967k p=0.000 n=20
Memory Allocs 1,310,290 (± 0.02%) 1,395,656 (± 0.02%) 🔻+85,366 (+ 6.52%) 1,394,798 1,397,134 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.043s (± 2.89%) 0.043s (± 2.94%) ~ 0.039s 0.048s p=0.602 n=20
Bind Time 0.019s (± 6.27%) 0.019s (± 5.14%) ~ 0.016s 0.024s p=0.412 n=20
Check Time 0.287s (± 1.03%) 0.314s (± 0.85%) 🔻+0.027s (+ 9.38%) 0.305s 0.322s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.355s (± 0.75%) 0.382s (± 0.73%) 🔻+0.028s (+ 7.82%) 0.372s 0.394s p=0.000 n=20
vscode - native
Errors 11 11 ~ ~ ~ p=1.000 n=20
Symbols 7,586,320 7,347,532 🟩-238,788 (- 3.15%) ~ ~ p=0.000 n=20
Types 4,457,051 4,214,558 🟩-242,493 (- 5.44%) ~ ~ p=0.000 n=20
Memory Used 5,252,899k (± 0.01%) 5,318,875k (± 0.01%) +65,976k (+ 1.26%) 5,316,277k 5,321,964k p=0.000 n=20
Memory Allocs 57,393,643 (± 0.02%) 61,340,408 (± 0.02%) 🔻+3,946,766 (+ 6.88%) 61,316,480 61,396,589 p=0.000 n=20
Config Time 0.033s (± 0.63%) 0.033s (± 1.59%) ~ 0.033s 0.038s p=0.113 n=20
Parse Time 0.879s (± 0.97%) 0.886s (± 1.76%) ~ 0.805s 0.957s p=0.417 n=20
Bind Time 0.286s (± 0.56%) 0.294s (± 6.95%) ~ 0.277s 0.479s p=0.290 n=20
Check Time 6.945s (± 0.28%) 7.570s (± 0.50%) 🔻+0.625s (+ 9.00%) 7.311s 7.653s p=0.000 n=20
Emit Time 1.910s (± 1.16%) 2.158s (± 6.36%) 🔻+0.247s (+12.94%) 1.956s 2.819s p=0.000 n=20
Total Time 10.108s (± 0.22%) 10.995s (± 1.01%) 🔻+0.887s (+ 8.78%) 10.793s 11.504s p=0.000 n=20
webpack - native
Errors 595 601 +6 (+ 1.01%) ~ ~ p=0.000 n=20
Symbols 861,433 861,788 +355 (+ 0.04%) ~ ~ p=0.000 n=20
Types 595,020 593,447 -1,573 (- 0.26%) ~ ~ p=0.000 n=20
Memory Used 632,911k (± 0.01%) 664,642k (± 0.01%) 🔻+31,731k (+ 5.01%) 664,341k 664,993k p=0.000 n=20
Memory Allocs 5,887,614 (± 0.06%) 6,464,785 (± 0.03%) 🔻+577,170 (+ 9.80%) 6,458,477 6,473,145 p=0.000 n=20
Config Time 0.004s 0.004s ~ ~ ~ p=1.000 n=20
Parse Time 0.117s (± 2.00%) 0.120s (± 2.27%) +0.002s (+ 2.14%) 0.104s 0.128s p=0.043 n=20
Bind Time 0.039s (±11.64%) 0.038s (±11.49%) ~ 0.032s 0.064s p=0.622 n=20
Check Time 0.938s (± 0.59%) 1.063s (± 0.34%) 🔻+0.125s (+13.33%) 1.049s 1.076s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.119s (± 0.41%) 1.245s (± 0.49%) 🔻+0.126s (+11.23%) 1.221s 1.274s p=0.000 n=20
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 640,490 659,984 +19,494 (+ 3.04%) ~ ~ p=0.000 n=20
Types 387,984 372,422 🟩-15,562 (- 4.01%) ~ ~ p=0.000 n=20
Memory Used 350,143k (± 0.03%) 368,495k (± 0.01%) 🔻+18,352k (+ 5.24%) 368,296k 368,790k p=0.000 n=20
Memory Allocs 3,969,092 (± 0.07%) 4,502,684 (± 0.07%) 🔻+533,593 (+13.44%) 4,492,934 4,516,926 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.060s (± 2.89%) 0.060s (± 3.55%) ~ 0.053s 0.068s p=0.984 n=20
Bind Time 0.019s (±11.38%) 0.020s (± 9.43%) ~ 0.016s 0.028s p=0.327 n=20
Check Time 0.382s (± 0.70%) 0.448s (± 1.27%) 🔻+0.065s (+17.09%) 0.437s 0.486s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.467s (± 0.92%) 0.533s (± 1.11%) 🔻+0.066s (+14.12%) 0.516s 0.572s p=0.000 n=20
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • arktype - native
  • class-transformer - native
  • effect - native
  • mui-docs - native
  • sentry - native
  • social-app - native
  • strada-build-src - native
  • strada-compiler - native
  • t3code-server - native
  • tanstack-router - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 20
Baseline baseline 20

Developer Information:

Download Benchmarks

@typescript-automation

Copy link
Copy Markdown
Contributor

Jake Bailey (@jakebailey) Here are the results of running the top 400 repos with tsc comparing baseline and pr:

Something interesting changed - please have a look.

Details

cheaper-inference/OmniRoute

5 of 11 projects failed to build with the old tsc and were ignored

open-sse/tsconfig.json

  • error TS2322: Type 'Promise<ImageResult | MagnificImageResult | { success: boolean; data: { created: any; data: any; }; } | { success: boolean; status: number; error: unknown; } | { data?: undefined; success: boolean; status: number; error: any; }>' is not assignable to type 'Promise<ImageResult>'.

@jakebailey

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) test it

Building the error for a nonexistent property prints types. In code
that is not checked, such as a generated "// @ts-nocheck" validator,
printing a function type infers its return type from its body, which
can report more nonexistent properties, whose errors are built in turn.
Since the errors are built once the check finishes, nothing in progress
cuts this short: on webpack, it builds 1400 errors in one schema file,
inferring the return types of most of its validators, though the
program never reports any error in that file.

So the checker asks the program whether it would report errors in the
file before reporting one there.

webpack and vscode, default GC, default checkers:

        │ before.txt  │             after.txt             │
        │   sec/op    │   sec/op     vs base              │
webpack   2.980 ± 24%   2.685 ± 36%  -9.90% (p=0.007 n=8)
vscode    14.32 ±  3%   14.57 ±  8%       ~ (p=0.878 n=8)
geomean   6.531         6.254        -4.25%

        │   before.txt   │              after.txt               │
        │ peak-RSS-bytes │ peak-RSS-bytes  vs base              │
webpack     983.3Mi ± 3%     919.1Mi ± 6%  -6.53% (p=0.000 n=8)
vscode      5.034Gi ± 3%     4.943Gi ± 2%       ~ (p=0.195 n=8)
geomean     2.199Gi          2.106Gi       -4.20%

        │   before.txt    │               after.txt               │
        │ instructions/op │ instructions/op  vs base              │
webpack       50.95G ± 3%       46.17G ± 4%  -9.37% (p=0.000 n=8)
vscode        224.3G ± 2%       228.0G ± 3%       ~ (p=0.382 n=8)
geomean       106.9G            102.6G       -4.02%
A declared type parameter with a circular constraint is circular no
matter how it is used, and checking its declaration reports it. Which
use happened to resolve the constraint before that is an accident of
check order, so pointing at it as the origin of the cycle made the
diagnostic depend on that order. Only an instantiated type parameter
has a cycle that originates at a use.
A mapped type resolves its constraint eagerly so that errors in the
constraint are reported at the mapped type. It did so only when the
type was created, so when the type was first created while checking
another node, the mapped type itself never reported those errors.
A cycle through return types gave different results depending on where
it was entered. Entered at rebuild's return type, re-entering it fails
rebuild, so both members report an implicit any. Entered at b's return
type, subtype reduction of rebuild's return type finds b in progress
and compares as if it returned any, without failing anything, so
rebuild returns B and was kept as a participant of the cycle, though
computing it from scratch fails.

Cycles through the types of symbols are already resolved from the
member declared first (see yieldCycle). The same now applies to the
return types of declared signatures, both when a cycle re-enters a
return type and when it only observes one in progress, so that each
order gives the result of resolving the first declared member first
(seen in effect's SchemaAST).

Contextually checking a function expression infers its return type
from its body, and that inference was pushed as a return type
resolution of the function's signature. When the body calls a function
whose return type depends on the call enclosing the function
expression, resolving that call requests the function expression's
return type, which, seen in progress, returned any without detecting a
cycle, so the enclosing function's return type was inferred from a
provisional any instead of reporting the circularity (seen in
OmniRoute). The inference now runs without marking the signature in
progress, as in TypeScript: the nested request computes the return
type itself, reaches the enclosing function, and the cycle is reported
on both. The result is cached only if no request has already cached
one, the same as when the return type is requested directly.

The flag marking a function as contextually checked is set before its
return type is inferred, and is TypeScript's guard against re-checking
the function from within its own check, so it is never discarded. The
inferred return type is now kept whenever the flag is, so that a
discarded cycle in between cannot leave the flag without the return
type, which made a const assertion in the body readonly when queried
before its binding pattern.
Completing contextual signatures before anyone reads them switched
parameter assignment from the signature of the function's symbol to
the signature built from its declaration. In JavaScript the symbol's
signature comes from a @type tag when one is present, and the
function's parameters take their types from that tag. Using the
declaration's signature wrote the outer contextual types onto those
parameters instead, producing errors inside the function body that the
tag rules out (seen in webpack).

Prefer the tag's signature, as before, and fall back to the
declaration's signature otherwise.
An instantiation stopped by the limit on the depth of the whole
instantiation names every type that recurs in it, in the order in which
they recur. Which type of the cycle the instantiation entered first
depends on the results cached before, so checkers that had checked
different files named the same cycle starting from different types, and
reported the same error twice with different messages (seen in zod, with
checkers running concurrently).

The names now start from the type declared first, so the message is the
same wherever the cycle is entered. The limit on the depth of a single
computation already names only the types that computation instantiated,
which does not depend on where it was entered, so its messages keep the
order in which the types recur.
While the type implied by a binding pattern is computed as the
contextual type of its initializer, references to the pattern's
elements from the elements' defaults are any. The calls and types
computed from them were cached anyway, so asking for the contextual
type of the initializer first left `extra` in

    const { kind, payload, extra = kind === "a" ? ... : ... } = u;

as any rather than unknown. TypeScript behaves the same way.

Track the patterns as resolutions in progress rather than a separate
stack, so that a reference returning any marks the computation circular
and the results cached from it are discarded.

(seen in check order fuzzing)
A call resolution hides the resolutions below it, so a symbol whose
initializer reaches itself through a call argument is computed again,
nested in itself, as in main. The nested computation observes things
in progress that the outer one entered: here, a mapped property whose
contextual type is skipped, and the reverse mapping whose depth cutoff
it reaches. Those mark everything since as circular, so the nested
result was discarded, and the outer computation, reaching the same
types again outside that context, then failed with a circularity.

When everything the nested computation observed in progress was entered
by the outermost hidden resolution of the same target, the nested
computation is the one that resolution always computes first from
scratch, whichever entry led to it, so its result is kept as a cycle
participant, as main keeps the first result set.

Main also keeps the reverse-mapped property type computed under the
depth cutoff, so it types the property as unknown. That result still
depends on the cutoff and is discarded, so the property is computed
again from scratch afterwards, giving its full type: an improvement
over main rather than a match (seen in arktype).
When a query enters a cycle somewhere other than its program-order
entry, the cycle yields to its first member and recomputes it with the
resolutions below hidden. Two things made that recomputation differ
from computing the member first:

- The reverse mapping stacks, contextual types and inference contexts
  of the hidden resolutions stayed visible, so the recomputation saw
  contexts that a computation from scratch never has. A yield now hides
  them along with the resolutions and restores them when it ends.

- Results were kept as cycle participants only by comparing the
  outermost cycle head in progress against the resolution. A cycle
  headed below the yield, which the yield cannot observe, caused the
  yield root and the hidden re-entries of itself to be discarded, so
  the member was computed again and genuinely re-entered itself.

Each type resolution now tracks the lowest cycle head it observed, and a
result is kept when the computations it observed were entered from
scratch: by the outer resolution of itself, by the yield it is the root
of, or by the outermost measurement of variances.

(seen in circularScopeThunkReverseMapped)
Which symbols are referenced, which nodes need deferred or unused
checks, and which aliases are referenced are facts about a node that
only the check of its file consumes. Recording them as effects made
nearly every query result carry effects, so emit and other queries
without a check retained and walked a large effect graph: --noCheck
emit of VS Code used twice the time and memory of main.

Each fact now depends only on its node, and the check reaches every
node, so the first computation reaching a fact records it. Write-only
names are not uses wherever a name is resolved. The check now also
checks methods and accessors in destructuring targets and decorators
where they are not valid, which only a query computing their types
reached before, and follows referenced import = declarations itself once
the file's references are marked, so that following them reports errors
regardless of which computation cached them first.

Marks are written only by checking, or by a computation a check started
that entered a cycle. A query records them on its result, and they are
replayed even when its other effects are dropped, as whether a
computation reaches the nodes they mark does not depend on the results
it read. Following a referenced alias to the aliases it refers to
computes, so it happens where the alias is referenced, and the mark only
records the aliases found. A test finds marks written anywhere else.
When no overload applies, call resolution caches its result before
reporting errors, so that a circular request for the call while they
are reported finds it. Discarding that result in a cycle restored the
marker put in place when resolution began, leaving the call marked as
being resolved. Caching it like the final result clears the marker
instead.
Signature help resolves a call from the arguments typed so far, without
reporting errors, and string literal completions resolve it with
inference from the argument being typed blocked. The results those
requests cache depend on that state, which is not part of their keys, so
checking that reuses them could infer other types or miss errors.
Nothing such a request caches is kept: it runs in a cycle headed below
every computation, which ends with the request.

The state of such a request, the number of arguments typed so far and
the nodes inference is blocked from, is held in a request that exists
only while it runs, rather than in fields of the checker that any
computation could read.
A checker's memos are not its only state: it also holds the state of the
computations in progress, such as the contextual types pushed for the
nodes being checked, the resolutions on the stack, and the cycles being
resolved. The next request reads anything a request leaves there, so
none of it may outlast the request that set it.

Every field of Checker is now either listed as the state of the
computations in progress, which the test harness checks is at rest
after every request it makes, or listed with the reason it is not, as
the fields of the memo store and links already are. A few fields kept
indices or flags after the computation using them finished, which
nothing read: the lowest cycle head observed, the cycle flag of errors
collected at the current node, the start of a circularity, of a
reverse mapping and of a depth limit. They are now left at rest too.
When a variance measurement reaches a type whose measurement is in
progress, the results cached until the outermost measurement finishes
may be discarded, in case the measurement did not start at the
canonical entry of its circularity. Until then, checking switched to
recording: storing the effects of each result to apply later, and
accounting for them on every read of a cached result. Few measurements
are ever discarded, a handful per project, but recording roughly
doubles the cost of the work done in the meantime, and each checker
measures the shared types again, so with several checkers it accounts
for most of the extra time these changes cost on xstate.

So checking keeps applying effects during a variance cycle, except
those that discarding the measurement would have to take back: errors,
suggestions and deferred diagnostics are held until nothing can
discard them, and dropped with the results if the measurement is.
Every memoized computation records its key as in progress and removes
it when it finishes, so that re-entering it is caught as a cycle.
Nearly every lookup finds nothing, yet the hash table made each
computation pay for an insertion and a deletion that shifts probe
sequences. Counting keys per slot makes the common case one load and
one increment; the rare hit searches the resolution stack, which
already holds the keys.
Each memo map kept its own record of the entries being computed: their
keys, where on the resolution stack each was, and, once there were
many, a count of each key. The checker already counts every other
computation in progress and finds it on the resolution stack, so map
entries are now counted with the rest by a hash of the map and key,
and found on the resolution stack when the count says one may be in
progress. A map keeps only the keys themselves, which a resolution has
no room for.
@blickly

Copy link
Copy Markdown
Contributor

The getIndexedAccessKey change in this PR also fixes a user-visible regression from 6.0 that the PR's tests don't cover. On the current main branch, obj[key] with a union key isn't assignable to its own type (playground):

function f<T, K1 extends keyof T, K2 extends keyof T>(obj: T, key: K1 | K2) {
    const value: T[K1 | K2] = obj[key];
    return value;
}

declare function set<T>(obj: T, key: keyof T, value: T[keyof T]): void;
function g<A, B>(obj: A & B, key: keyof (A & B)) {
    set<A & B>(obj, key, obj[key]);
}

function h<T, K1 extends keyof T, K2 extends keyof T>(obj: T, key: K1 | K2) {
    const a = obj[key];
    const value: typeof a = obj[key];
    return value;
}

f and g fail with Type 'T[K1] | T[K2]' is not assignable to type 'T[K1] & T[K2]' (TS2322 and TS2345), while TS6 accepts all three. Applying this PR's getIndexedAccessKey line to v7.1-beta makes f and g compile too. h already compiles because typeof a reuses the type object created for obj[key].

We hit this migrating a large codebase to 7.1: one shared generic helper passes props[key] to a T[keyof T] parameter, and that single error breaks everything that depends on it. It might be worthwhile to add the above as a regression test.

@jakebailey

Copy link
Copy Markdown
Member Author

I looked into that, and that's actually just a straight up bug that's a one line fix, somehow applied in this PR

…ested

Finding a computation in progress searched the whole resolution stack
whenever its slot of the resolving table was taken, and marking the
computations that read an incomplete result walked the stack above it.
With thousands of computations in progress, as in an instantiation that
runs away, nearly every slot is taken, so both cost time proportional to
the depth on every step, and nesting deeply took quadratic time.
The limit on the depth of the whole instantiation stack failed an
instantiation at whatever depth the stack reached, which depends on how
much of what it needed was cached before, so whether a finite but deep
instantiation failed depended on the order types were checked in.

Caching only ever shortens the stack, so an instantiation that would stay
below a limit computed from scratch stays below it in any order. The
limit is now a guard against runaway instantiations, far above any finite
one in real code (the deepest measured, in arktype's tests, nests 189
instantiations computed from scratch), while the limit on each
computation still reports deep ones. An instantiation reaching the guard
fails as a whole wherever it is computed or reused, so an infinite one
fails the same way in any order.
@jakebailey

Copy link
Copy Markdown
Member Author

#65450

@jakebailey

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) run dt
TypeScript Bot (@typescript-bot) user test this
TypeScript Bot (@typescript-bot) test top1000
TypeScript Bot (@typescript-bot) perf test this faster

@typescript-automation

typescript-automation Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

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

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

@typescript-automation

Copy link
Copy Markdown
Contributor

Hey Jake Bailey (@jakebailey), the results of running the DT tests are ready.

There were interesting changes:

Branch only errors: d3-selection

Package: d3-selection

Branch error:

Project scope: tsconfig.json

Error: types/d3-selection/d3-selection-tests.ts:1502:9
TypeScript@local compile error TS2769:
No overload matches this call.
  The last overload gave the following error.
    Argument of type '(enter: Selection<EnterElement, number, HTMLElement, unknown>) => TransitionLike<HTMLParagraphElement, number>' is not assignable to parameter of type 'string | ((elem: Selection<EnterElement, number, HTMLElement, unknown>) => Selection<BaseType, number, HTMLElement, unknown> | TransitionLike<...>)'.
      Type '(enter: Selection<EnterElement, number, HTMLElement, unknown>) => TransitionLike<HTMLParagraphElement, number>' is not assignable to type '(elem: Selection<EnterElement, number, HTMLElement, unknown>) => Selection<BaseType, number, HTMLElement, unknown> | TransitionLike<...>'.
        Type 'TransitionLike<HTMLParagraphElement, number>' is not assignable to type 'Selection<BaseType, number, HTMLElement, unknown> | TransitionLike<HTMLElement, number>'.
          Type 'TransitionLike<HTMLParagraphElement, number>' is not assignable to type 'TransitionLike<HTMLElement, number>'.
            The types returned by 'selection().merge' are incompatible between these types.
              Type '(other: Selection<HTMLParagraphElement, number, any, any> | TransitionLike<HTMLParagraphElement, number>) => Selection<...>' is not assignable to type '(other: Selection<HTMLElement, number, any, any> | TransitionLike<HTMLElement, number>) => Selection<HTMLElement, number, any, any>'.
                Types of parameters 'other' and 'other' are incompatible.
                  Type 'Selection<HTMLElement, number, any, any> | TransitionLike<HTMLElement, number>' is not assignable to type 'Selection<HTMLParagraphElement, number, any, any> | TransitionLike<HTMLParagraphElement, number>'.
                    Type 'Selection<HTMLElement, number, any, any>' is not assignable to type 'Selection<HTMLParagraphElement, number, any, any> | TransitionLike<HTMLParagraphElement, number>'.
                      Type 'Selection<HTMLElement, number, any, any>' is not assignable to type 'Selection<HTMLParagraphElement, number, any, any>'.
                        Types of property 'select' are incompatible.
                          Type '{ <DescElement extends BaseType>(selector: string): import("/mnt/vss/_work/1/s/DefinitelyTyped/types/d3-selection/index").Selection<DescElement, number, any, any>; <DescElement extends BaseType>(selector: null): import("/mnt/vss/_work/1/s/DefinitelyTyped/types/d3-selection/index").Selection<...>; <DescElement extend...' is not assignable to type '{ <DescElement extends BaseType>(selector: string): import("/mnt/vss/_work/1/s/DefinitelyTyped/types/d3-selection/index").Selection<DescElement, number, any, any>; <DescElement extends BaseType>(selector: null): import("/mnt/vss/_work/1/s/DefinitelyTyped/types/d3-selection/index").Selection<...>; <DescElement extend...'. Two different types with this name exist, but they are unrelated.
                            Types of parameters 'selector' and 'selector' are incompatible.
                              Types of parameters 'groups' and 'groups' are incompatible.
                                Type 'HTMLElement[] | ArrayLike<HTMLElement>' is not assignable to type 'HTMLParagraphElement[] | ArrayLike<HTMLParagraphElement>'.
                                  Type 'HTMLElement[]' is not assignable to type 'HTMLParagraphElement[] | ArrayLike<HTMLParagraphElement>'.
                                    Type 'HTMLElement[]' is not assignable to type 'HTMLParagraphElement[]'.
                                      Property 'align' is missing in type 'HTMLElement' but required in type 'HTMLParagraphElement'.
    at combineErrorsAndWarnings (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:200:28)
    at runTests (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:192:20)
Branch only errors: react-relay

Package: react-relay

Branch error:

Project scope: tsconfig.json

Error: types/react-relay/test/relay-hooks-tests.tsx:987:13
TypeScript@local compile error TS2344:
Type '{ mainPanelA?: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params> | undefined; mainPanelB?: EntryPoint<...> | undefined; }' does not satisfy the constraint 'Record<string, EntryPoint<any, any> | undefined>'.
  Property 'mainPanelA' is incompatible with index signature.
    Type 'EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>' is not assignable to type 'InternalEntryPointRepresentation<any, Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
      Types of property 'root' are incompatible.
        Type 'JSResourceReference<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>' is not assignable to type 'JSResourceReference<EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>'.
          Type 'EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
            Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
              Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'ComponentClass<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
                Types of property 'getDerivedStateFromProps' are incompatible.
                  Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any> | undefined' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any> | undefined'.
                    Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
                      Types of parameters 'nextProps' and 'nextProps' are incompatible.
                        Type 'Readonly<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>' is not assignable to type 'Readonly<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>'.
                          Types of property 'extraProps' are incompatible.
                            Type '{} | null' is not assignable to type '{}'.
                              Type 'null' is not assignable to type '{}'.

types/react-relay/test/relay-hooks-tests.tsx:1023:13
TypeScript@local compile error TS2322:
Type '(params: { route: string; }) => { entryPoints: { mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: ...; }; mainPanelB?: undefined; } | ...; queries: ...; extraProps: ...; }' is not assignable to type '(entryPointParams: { route: string; }) => PreloadProps<{ route: string; }, {}, Record<string, EntryPoint<any, any> | undefined>, { foo: "bar"; }>'.
  Type '{ entryPoints: { mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: { slug: string; }; }; mainPanelB?: undefined; } | ...; queries: {}; extraProps: ...; }' is not assignable to type 'PreloadProps<{ route: string; }, {}, Record<string, EntryPoint<any, any> | undefined>, { foo: "bar"; }>'.
    Types of property 'entryPoints' are incompatible.
      Type '{ mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: ...; }; mainPanelB?: undefined; } | ...' is not assignable to type 'ThinNestedEntryPointParamsObject<Record<string, EntryPoint<any, any> | undefined>> | undefined'.
        Type '{ mainPanelA: { entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: { slug: string; }; }; mainPanelB?: undefined; }' is not assignable to type 'ThinNestedEntryPointParamsObject<Record<string, EntryPoint<any, any> | undefined>>'.
          Property 'mainPanelA' is incompatible with index signature.
            Type '{ entryPoint: EntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>, Params>; entryPointParams: { slug: string; }; }' is not assignable to type 'ThinNestedEntryPointParams<EntryPoint<any, any> | undefined>'.
              The types of 'entryPoint.root' are incompatible between these types.
                Type 'JSResourceReference<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>' is not assignable to type 'JSResourceReference<EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>'.
                  Type 'EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
                    Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'EntryPointComponent<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>'.
                      Type 'ComponentClass<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'ComponentClass<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
                        Types of property 'getDerivedStateFromProps' are incompatible.
                          Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any> | undefined' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any> | undefined'.
                            Type 'GetDerivedStateFromProps<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>, any>' is not assignable to type 'GetDerivedStateFromProps<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>, any>'.
                              Types of parameters 'nextProps' and 'nextProps' are incompatible.
                                Type 'Readonly<EntryPointProps<Record<string, OperationType>, Record<string, EntryPoint<any, any> | undefined>, {}, {} | null>>' is not assignable to type 'Readonly<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>'.
                                  Types of property 'extraProps' are incompatible.
                                    Type '{} | null' is not assignable to type '{}'.
                                      Type 'null' is not assignable to type '{}'.

types/react-relay/test/relay-hooks-tests.tsx:1054:15
TypeScript@local compile error TS2322:
Type 'Readonly<{ dispose: DisposeFn; entryPoints: { [x: string]: Readonly<...>; }; extraProps: {} | null; getComponent: () => any; isDisposed: boolean; queries: { [x: string]: PreloadedQuery<OperationType, Record<...>>; }; rootModuleID: string; }>' is not assignable to type 'PreloadedEntryPoint<EntryPointComponent<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }>> | undefined'.
  Type 'Readonly<{ dispose: DisposeFn; entryPoints: { [x: string]: Readonly<...>; }; extraProps: {} | null; getComponent: () => any; isDisposed: boolean; queries: { [x: string]: PreloadedQuery<OperationType, Record<...>>; }; rootModuleID: string; }>' is not assignable to type 'Readonly<{ dispose: DisposeFn; entryPoints: {}; extraProps: {}; getComponent: () => FunctionComponent<EntryPointProps<{ someQueryRef: SomeQuery; }, {}, { onClick: () => void; }, {}>>; isDisposed: boolean; queries: ...; rootModuleID: string; }>'.
    Types of property 'extraProps' are incompatible.
      Type '{} | null' is not assignable to type '{}'.
        Type 'null' is not assignable to type '{}'.
    at combineErrorsAndWarnings (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:200:28)
    at runTests (/mnt/vss/_work/1/s/DefinitelyTyped-tools/packages/dtslint/dist/index.js:192:20)

Full output in the log.

@typescript-automation

Copy link
Copy Markdown
Contributor

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=40
Symbols 88,466 101,563 🔻+13,097 (+14.80%) ~ ~ p=0.000 n=40
Types 79,607 79,944 +337 (+ 0.42%) ~ ~ p=0.000 n=40
Memory Used 106,409k (± 0.02%) 109,897k (± 0.02%) +3,492k (+ 3.28%) 109,712k 110,048k p=0.000 n=40
Memory Allocs 1,261,974 (± 0.01%) 1,455,985 (± 0.00%) 🔻+194,014 (+15.37%) 1,455,384 1,456,299 p=0.000 n=40
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Parse Time 0.021s (± 2.67%) 0.021s (± 1.81%) ~ 0.018s 0.023s p=0.789 n=40
Bind Time 0.008s (± 4.05%) 0.008s (± 3.37%) ~ 0.007s 0.011s p=0.977 n=40
Check Time 0.206s (± 1.50%) 0.228s (± 1.01%) 🔻+0.023s (+11.29%) 0.220s 0.255s p=0.000 n=40
Emit Time 0.135s (± 2.54%) 0.144s (± 1.36%) 🔻+0.010s (+ 7.43%) 0.137s 0.166s p=0.000 n=40
Total Time 0.374s (± 1.41%) 0.404s (± 1.02%) 🔻+0.033s (+ 8.93%) 0.391s 0.451s p=0.000 n=40
angular-1 - native
Errors 63 68 🔻+5 (+ 7.94%) ~ ~ p=0.000 n=40
Symbols 756,637 817,855 🔻+61,218 (+ 8.09%) ~ ~ p=0.000 n=40
Types 549,451 547,483 -1,968 (- 0.36%) ~ ~ p=0.000 n=40
Memory Used 643,915k (± 0.01%) 670,933k (± 0.01%) 🔻+27,026k (+ 4.20%) 670,441k 671,596k p=0.000 n=40
Memory Allocs 9,557,027 (± 0.05%) 10,725,738 (± 0.05%) 🔻+1,169,379 (+12.24%) 10,717,498 10,796,598 p=0.000 n=40
Config Time 0.007s (± 2.35%) 0.007s (± 2.09%) ~ 0.006s 0.007s p=0.949 n=40
Parse Time 0.117s (± 2.24%) 0.116s (± 2.05%) ~ 0.103s 0.134s p=0.972 n=40
Bind Time 0.039s (± 5.68%) 0.041s (± 6.90%) ~ 0.033s 0.064s p=0.409 n=40
Check Time 0.628s (± 0.80%) 0.723s (± 0.84%) 🔻+0.096s (+15.24%) 0.682s 0.752s p=0.000 n=40
Emit Time 0.392s (± 0.62%) 0.408s (± 0.54%) 🔻+0.017s (+ 4.23%) 0.399s 0.432s p=0.000 n=40
Total Time 1.194s (± 0.50%) 1.307s (± 0.44%) 🔻+0.112s (+ 9.38%) 1.275s 1.349s p=0.000 n=40
arktype - native
Errors 0 1 🔻NaN (+ ∞%) ~ ~ p=0.000 n=40
Symbols 686,116 743,695 🔻+57,579 (+ 8.39%) ~ ~ p=0.000 n=40
Types 939,797 901,929 🟩-37,868 (- 4.03%) ~ ~ p=0.000 n=40
Memory Used 475,964k (± 0.01%) 484,638k (± 0.01%) +8,660k (+ 1.82%) 484,443k 484,951k p=0.000 n=40
Memory Allocs 12,063,810 (± 0.01%) 11,113,714 (± 0.02%) 🟩-950,991 (- 7.88%) 11,108,760 11,134,156 p=0.000 n=40
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=40
Parse Time 0.044s (± 2.71%) 0.043s (± 2.45%) ~ 0.038s 0.052s p=0.432 n=40
Bind Time 0.014s (± 6.12%) 0.014s (± 7.02%) ~ 0.010s 0.022s p=0.317 n=40
Check Time 0.884s (± 1.28%) 1.004s (± 1.32%) 🔻+0.120s (+13.53%) 0.946s 1.109s p=0.000 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 0.971s (± 1.29%) 1.065s (± 1.33%) 🔻+0.094s (+ 9.69%) 1.000s 1.175s p=0.000 n=40
class-transformer - native
Errors 0 0 ~ ~ ~ p=1.000 n=40
Symbols 45,376 45,827 +451 (+ 0.99%) ~ ~ p=0.000 n=40
Types 7,573 7,220 🟩-353 (- 4.66%) ~ ~ p=0.000 n=40
Memory Used 27,746k (± 0.02%) 28,284k (± 0.02%) +540k (+ 1.95%) 28,234k 28,306k p=0.000 n=40
Memory Allocs 248,467 (± 0.04%) 263,341 (± 0.03%) 🔻+14,856 (+ 5.98%) 262,426 263,960 p=0.000 n=40
Config Time 0.001s (±21.87%) 0.001s (±18.22%) ~ 0.000s 0.001s p=0.798 n=40
Parse Time 0.011s (± 3.46%) 0.011s (± 3.30%) ~ 0.008s 0.012s p=0.592 n=40
Bind Time 0.003s (± 6.86%) 0.003s (± 8.23%) ~ 0.002s 0.005s p=0.379 n=40
Check Time 0.008s (± 4.32%) 0.009s (± 3.64%) 🔻+0.001s (+12.50%) 0.007s 0.011s p=0.001 n=40
Emit Time 0.007s (± 3.88%) 0.008s (± 5.49%) 🔻+0.001s (+16.67%) 0.007s 0.014s p=0.000 n=40
Total Time 0.030s (± 1.77%) 0.033s (± 1.72%) 🔻+0.002s (+ 6.51%) 0.028s 0.039s p=0.000 n=40
effect - native
Errors 12 20 🔻+8 (+66.67%) ~ ~ p=0.000 n=40
Symbols 1,235,134 1,354,328 🔻+119,194 (+ 9.65%) ~ ~ p=0.000 n=40
Types 893,436 895,342 +1,906 (+ 0.21%) ~ ~ p=0.000 n=40
Memory Used 941,346k (± 0.02%) 979,343k (± 0.01%) 🔻+37,989k (+ 4.04%) 978,284k 980,356k p=0.000 n=40
Memory Allocs 12,629,171 (± 0.03%) 13,010,638 (± 0.03%) +381,554 (+ 3.02%) 12,996,083 13,070,199 p=0.000 n=40
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=40
Parse Time 0.148s (± 0.96%) 0.147s (± 1.00%) ~ 0.138s 0.156s p=0.305 n=40
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Check Time 0.875s (± 0.82%) 1.016s (± 0.42%) 🔻+0.143s (+16.33%) 0.986s 1.039s p=0.000 n=40
Emit Time 0.481s (± 1.18%) 0.494s (± 0.73%) +0.014s (+ 2.86%) 0.464s 0.510s p=0.001 n=40
Total Time 1.597s (± 0.56%) 1.750s (± 0.25%) 🔻+0.157s (+ 9.80%) 1.727s 1.781s p=0.000 n=40
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=40
Symbols 3,782,394 4,007,114 🔻+224,720 (+ 5.94%) ~ ~ p=0.000 n=40
Types 1,355,778 1,264,039 🟩-91,739 (- 6.77%) ~ ~ p=0.000 n=40
Memory Used 1,678,849k (± 0.05%) 1,865,712k (± 0.04%) 🔻+186,848k (+11.13%) 1,860,552k 1,869,638k p=0.000 n=40
Memory Allocs 25,605,509 (± 0.05%) 25,854,675 (± 0.05%) +249,228 (+ 0.97%) 25,789,211 26,027,833 p=0.000 n=40
Config Time 0.006s (± 3.20%) 0.006s (± 0.32%) ~ 0.006s 0.006s p=0.500 n=40
Parse Time 0.266s (± 1.48%) 0.269s (± 1.67%) ~ 0.242s 0.297s p=0.395 n=40
Bind Time 0.001s 0.001s ~ ~ ~ p=1.000 n=40
Check Time 2.812s (± 0.63%) 3.058s (± 0.36%) 🔻+0.250s (+ 8.89%) 2.992s 3.187s p=0.000 n=40
Emit Time 0.245s (± 2.62%) 0.252s (± 3.36%) ~ 0.231s 0.333s p=0.327 n=40
Total Time 3.806s (± 0.60%) 4.068s (± 0.42%) 🔻+0.268s (+ 7.04%) 3.946s 4.169s p=0.000 n=40
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=40
Symbols 4,793,266 5,190,959 🔻+397,693 (+ 8.30%) ~ ~ p=0.000 n=40
Types 2,607,066 2,503,860 🟩-103,206 (- 3.96%) ~ ~ p=0.000 n=40
Memory Used 2,798,375k (± 0.03%) 3,010,693k (± 0.03%) 🔻+212,594k (+ 7.60%) 3,006,677k 3,019,848k p=0.000 n=40
Memory Allocs 74,683,186 (± 0.05%) 76,005,102 (± 0.05%) +1,322,297 (+ 1.77%) 75,758,456 76,235,017 p=0.000 n=40
Config Time 0.017s (± 0.81%) 0.017s (± 0.67%) 0.000s ( 0.00%) 0.017s 0.018s p=0.036 n=40
Parse Time 0.451s (± 3.19%) 0.458s (± 3.06%) ~ 0.407s 0.638s p=0.599 n=40
Bind Time 0.137s (± 6.46%) 0.135s (± 5.06%) ~ 0.116s 0.209s p=0.504 n=40
Check Time 6.322s (± 0.29%) 7.089s (± 0.22%) 🔻+0.763s (+12.07%) 7.000s 7.232s p=0.000 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 6.974s (± 0.29%) 7.747s (± 0.29%) 🔻+0.770s (+11.04%) 7.619s 7.917s p=0.000 n=40
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=40
Symbols 1,883,060 2,045,114 🔻+162,054 (+ 8.61%) ~ ~ p=0.000 n=40
Types 1,158,093 1,158,936 +843 (+ 0.07%) ~ ~ p=0.000 n=40
Memory Used 952,349k (± 0.01%) 1,021,055k (± 0.01%) 🔻+68,707k (+ 7.21%) 1,020,518k 1,022,172k p=0.000 n=40
Memory Allocs 13,444,759 (± 0.13%) 14,153,893 (± 0.09%) 🔻+712,783 (+ 5.30%) 14,111,062 14,353,955 p=0.000 n=40
Config Time 0.006s (± 3.29%) 0.006s (± 3.54%) ~ 0.005s 0.009s p=0.186 n=40
Parse Time 0.157s (± 2.60%) 0.154s (± 2.35%) ~ 0.138s 0.195s p=0.347 n=40
Bind Time 0.040s (± 5.62%) 0.041s (± 5.69%) ~ 0.034s 0.066s p=0.406 n=40
Check Time 1.404s (± 0.50%) 1.637s (± 0.34%) 🔻+0.233s (+16.60%) 1.606s 1.681s p=0.000 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 1.625s (± 0.42%) 1.855s (± 0.43%) 🔻+0.232s (+14.26%) 1.813s 1.919s p=0.000 n=40
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=40
Symbols 1,184,972 1,245,439 🔻+60,467 (+ 5.10%) ~ ~ p=0.000 n=40
Types 438,823 440,609 +1,786 (+ 0.41%) ~ ~ p=0.000 n=40
Memory Used 1,157,342k (± 0.26%) 1,175,795k (± 0.20%) +19,084k (+ 1.65%) 1,165,704k 1,200,233k p=0.000 n=40
Memory Allocs 47,846,288 (± 0.07%) 49,823,436 (± 0.04%) 🔻+1,978,918 (+ 4.14%) 49,745,362 49,999,715 p=0.000 n=40
Config Time 0.002s (± 8.01%) 0.002s (± 9.04%) ~ 0.001s 0.003s p=0.549 n=40
Parse Time 0.133s (± 1.10%) 0.134s (± 1.08%) ~ 0.125s 0.145s p=0.366 n=40
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Check Time 0.786s (± 0.36%) 0.902s (± 0.37%) 🔻+0.117s (+14.88%) 0.877s 0.933s p=0.000 n=40
Emit Time 0.136s (± 1.27%) 0.134s (± 1.01%) ~ 0.128s 0.150s p=0.071 n=40
Total Time 9.151s (± 0.32%) 10.141s (± 0.37%) 🔻+0.979s (+10.70%) 9.914s 10.421s p=0.000 n=40
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=40
Symbols 263,481 293,949 🔻+30,468 (+11.56%) ~ ~ p=0.000 n=40
Types 196,103 197,632 +1,529 (+ 0.78%) ~ ~ p=0.000 n=40
Memory Used 221,500k (± 0.01%) 231,193k (± 0.02%) 🔻+9,673k (+ 4.37%) 230,863k 231,430k p=0.000 n=40
Memory Allocs 2,412,291 (± 0.01%) 2,550,573 (± 0.01%) 🔻+138,287 (+ 5.73%) 2,547,831 2,552,045 p=0.000 n=40
Config Time 0.000s (±83.62%) 0.000s (±136.80%) ~ 0.000s 0.001s p=0.251 n=40
Parse Time 0.051s (± 2.82%) 0.051s (± 4.78%) ~ 0.044s 0.096s p=0.384 n=40
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Check Time 0.405s (± 0.85%) 0.470s (± 0.81%) 🔻+0.065s (+16.16%) 0.439s 0.495s p=0.000 n=40
Emit Time 0.050s (± 3.73%) 0.055s (± 4.33%) 🔻+0.006s (+11.07%) 0.043s 0.065s p=0.003 n=40
Total Time 0.535s (± 0.64%) 0.605s (± 0.95%) 🔻+0.070s (+13.12%) 0.570s 0.662s p=0.000 n=40
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=40
Symbols 4,349,937 4,651,360 🔻+301,423 (+ 6.93%) ~ ~ p=0.000 n=40
Types 3,042,465 3,024,606 -17,859 (- 0.59%) ~ ~ p=0.000 n=40
Memory Used 2,395,112k (± 0.02%) 2,541,959k (± 0.02%) 🔻+147,060k (+ 6.14%) 2,539,716k 2,544,388k p=0.000 n=40
Memory Allocs 37,082,878 (± 0.04%) 40,098,626 (± 0.03%) 🔻+3,010,344 (+ 8.12%) 40,040,428 40,176,145 p=0.000 n=40
Config Time 0.002s (± 6.13%) 0.002s (± 6.78%) ~ 0.002s 0.004s p=0.225 n=40
Parse Time 0.245s (± 2.05%) 0.247s (± 1.65%) ~ 0.212s 0.274s p=0.421 n=40
Bind Time 0.086s (± 6.65%) 0.087s (± 6.36%) ~ 0.071s 0.128s p=0.896 n=40
Check Time 5.747s (± 0.49%) 6.679s (± 0.51%) 🔻+0.926s (+16.11%) 6.514s 6.891s p=0.000 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 6.093s (± 0.50%) 7.028s (± 0.50%) 🔻+0.930s (+15.26%) 6.832s 7.246s p=0.000 n=40
tanstack-router - native
Errors 1 1 ~ ~ ~ p=1.000 n=40
Symbols 570,149 641,183 🔻+71,034 (+12.46%) ~ ~ p=0.000 n=40
Types 396,551 395,509 -1,042 (- 0.26%) ~ ~ p=0.000 n=40
Memory Used 315,273k (± 0.01%) 341,951k (± 0.01%) 🔻+26,668k (+ 8.46%) 341,757k 342,147k p=0.000 n=40
Memory Allocs 4,332,642 (± 0.11%) 4,647,663 (± 0.07%) 🔻+316,296 (+ 7.30%) 4,633,424 4,677,312 p=0.000 n=40
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=40
Parse Time 0.039s (± 2.45%) 0.038s (± 2.22%) ~ 0.033s 0.044s p=0.313 n=40
Bind Time 0.012s (± 7.91%) 0.012s (± 6.41%) ~ 0.010s 0.020s p=0.404 n=40
Check Time 0.455s (± 0.52%) 0.554s (± 0.67%) 🔻+0.101s (+22.13%) 0.531s 0.582s p=0.000 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 0.523s (± 0.59%) 0.624s (± 0.45%) 🔻+0.103s (+19.71%) 0.606s 0.648s p=0.000 n=40
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=40
Symbols 231,607 260,499 🔻+28,892 (+12.47%) ~ ~ p=0.000 n=40
Types 181,163 182,816 +1,653 (+ 0.91%) ~ ~ p=0.000 n=40
Memory Used 190,865k (± 0.01%) 198,624k (± 0.01%) 🔻+7,761k (+ 4.07%) 198,476k 198,769k p=0.000 n=40
Memory Allocs 1,310,229 (± 0.01%) 1,393,545 (± 0.01%) 🔻+83,377 (+ 6.36%) 1,392,672 1,394,517 p=0.000 n=40
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Parse Time 0.043s (± 1.91%) 0.042s (± 1.57%) ~ 0.037s 0.047s p=0.632 n=40
Bind Time 0.020s (± 4.18%) 0.020s (± 4.82%) ~ 0.015s 0.028s p=0.456 n=40
Check Time 0.296s (± 1.84%) 0.346s (± 1.64%) 🔻+0.050s (+17.02%) 0.313s 0.416s p=0.000 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 0.365s (± 1.52%) 0.416s (± 1.41%) 🔻+0.051s (+13.91%) 0.380s 0.485s p=0.000 n=40
vscode - native
Errors 0 0 ~ ~ ~ p=1.000 n=40
Symbols 8,213,497 8,644,553 🔻+431,056 (+ 5.25%) ~ ~ p=0.000 n=40
Types 4,776,196 4,521,692 🟩-254,504 (- 5.33%) ~ ~ p=0.000 n=40
Memory Used 5,479,398k (± 0.01%) 5,637,101k (± 0.01%) +157,720k (+ 2.88%) 5,632,919k 5,643,229k p=0.000 n=40
Memory Allocs 61,191,808 (± 0.01%) 73,460,825 (± 0.01%) 🔻+12,270,698 (+20.05%) 73,439,812 73,576,710 p=0.000 n=40
Config Time 0.023s (± 0.55%) 0.023s (± 0.74%) ~ 0.022s 0.024s p=0.115 n=40
Parse Time 0.894s (± 0.93%) 0.897s (± 1.14%) ~ 0.815s 0.951s p=0.566 n=40
Bind Time 0.314s (± 3.92%) 0.319s (± 4.85%) ~ 0.283s 0.498s p=0.473 n=40
Check Time 7.236s (± 0.61%) 8.364s (± 0.58%) 🔻+1.130s (+15.62%) 7.989s 8.651s p=0.000 n=40
Emit Time 2.234s (± 4.59%) 2.652s (± 3.73%) 🔻+0.464s (+20.79%) 2.372s 3.188s p=0.000 n=40
Total Time 10.761s (± 0.77%) 12.314s (± 0.61%) 🔻+1.576s (+14.65%) 11.922s 12.699s p=0.000 n=40
webpack - native
Errors 618 618 ~ ~ ~ p=1.000 n=40
Symbols 910,313 986,068 🔻+75,755 (+ 8.32%) ~ ~ p=0.000 n=40
Types 636,663 621,730 -14,933 (- 2.35%) ~ ~ p=0.000 n=40
Memory Used 666,730k (± 0.01%) 697,183k (± 0.01%) 🔻+30,472k (+ 4.57%) 696,625k 697,686k p=0.000 n=40
Memory Allocs 6,228,738 (± 0.09%) 6,694,953 (± 0.05%) 🔻+467,446 (+ 7.50%) 6,680,819 6,729,012 p=0.000 n=40
Config Time 0.003s (± 2.67%) 0.003s (± 1.59%) ~ 0.003s 0.004s p=0.186 n=40
Parse Time 0.126s (± 1.68%) 0.126s (± 1.90%) ~ 0.113s 0.148s p=0.595 n=40
Bind Time 0.043s (± 7.85%) 0.042s (± 6.43%) ~ 0.032s 0.061s p=0.982 n=40
Check Time 1.111s (± 0.50%) 1.331s (± 0.68%) 🔻+0.216s (+19.43%) 1.290s 1.450s p=0.000 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 1.306s (± 0.40%) 1.526s (± 0.69%) 🔻+0.217s (+16.63%) 1.469s 1.656s p=0.000 n=40
xstate-main - native
Errors 1 1 ~ ~ ~ p=1.000 n=40
Symbols 3,931,440 4,403,558 🔻+472,118 (+12.01%) ~ ~ p=0.000 n=40
Types 3,960,073 3,476,938 🟩-483,135 (-12.20%) ~ ~ p=0.000 n=40
Memory Used 2,137,603k (± 0.01%) 2,232,511k (± 0.01%) 🔻+94,950k (+ 4.44%) 2,231,530k 2,233,201k p=0.000 n=40
Memory Allocs 42,225,701 (± 0.01%) 43,631,078 (± 0.01%) +1,405,301 (+ 3.33%) 43,617,376 43,663,222 p=0.000 n=40
Config Time 0.002s (± 4.68%) 0.002s (± 0.39%) ~ 0.002s 0.002s p=1.000 n=40
Parse Time 0.110s (± 1.97%) 0.107s (± 1.59%) ~ 0.096s 0.123s p=0.114 n=40
Bind Time 0.040s (± 8.12%) 0.042s (± 8.02%) ~ 0.032s 0.067s p=0.538 n=40
Check Time 4.190s (± 0.78%) 4.910s (± 0.69%) 🔻+0.726s (+17.34%) 4.731s 5.215s p=0.000 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 4.349s (± 0.78%) 5.069s (± 0.71%) 🔻+0.726s (+16.70%) 4.876s 5.394s p=0.000 n=40
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • arktype - native
  • class-transformer - native
  • effect - native
  • mui-docs - native
  • sentry - native
  • social-app - native
  • strada-build-src - native
  • strada-compiler - native
  • t3code-server - native
  • tanstack-router - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 20
Baseline baseline 20

Developer Information:

Download Benchmarks

@typescript-automation

Copy link
Copy Markdown
Contributor

Jake Bailey (@jakebailey) Here are the results of running the user tests with tsc comparing baseline and pr:

Something interesting changed - please have a look.

Details

effect

packages/tools/ai-docgen/tsconfig.json

packages/platform/cloudflare/tsconfig.alchemy.json

uglify-js

/mnt/vss/work/1/s/ts_downloads//m/uglify-js/tsconfig.json

  • [NEW] error TS2339: Property 'last_ref' does not exist on type 'never'.
    • /mnt/vss/work/1/s/ts_downloads//m/uglify-js/node_modules/uglify-js/lib/compress.js(2544,35)
  • [MISSING] error TS2322: Type 'false' is not assignable to type 'never'.
    • /mnt/vss/work/1/s/ts_downloads//m/uglify-js/node_modules/uglify-js/lib/compress.js(2544,25)

@typescript-automation

Copy link
Copy Markdown
Contributor

Jake Bailey (@jakebailey) Here are the results of running the top 1000 repos with tsc comparing baseline and pr:

Something interesting changed - please have a look.

Details

Chocobozzz/PeerTube

7 of 13 projects failed to build with the old tsc and were ignored

client/tsconfig.json

  • error TS2322: Type '{ parsing?: false | _DeepPartialObject<{ [key: string]: string; }>; normalized?: boolean; skipNull?: boolean; datasets?: _DeepPartialObject<{ bar: BarControllerDatasetOptions; ... 6 more ...; scatter: LineControllerDatasetOptions; }>; ... 27 more ...; bar?: _DeepPartialObject<...>; }' is not assignable to type '_DeepPartialObject<CoreChartOptions<"bar" | "line"> & ElementChartOptions<"bar" | "line"> & PluginChartOptions<"bar" | "line"> & DatasetChartOptions<...> & ScaleChartOptions<...> & BarControllerChartOptions> | _DeepPartialObject<...>'.

Effect-TS/effect

1 of 5 projects failed to build with the old tsc and were ignored

packages/tools/ai-docgen/tsconfig.json

packages/platform/cloudflare/tsconfig.alchemy.json

Unleash/unleash

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

frontend/tsconfig.json

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 Uncommitted Bug PR for untriaged, rejected, closed or missing bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants