Skip to content

[experiment] order independence + dynamic checkers / work stealing - #65367

Draft
Jake Bailey (jakebailey) wants to merge 64 commits into
microsoft:mainfrom
jakebailey:checker-work-stealing
Draft

Jake Bailey (jakebailey) wants to merge 64 commits into
microsoft:mainfrom
jakebailey:checker-work-stealing

Conversation

@jakebailey

Copy link
Copy Markdown
Member

This is #65064 + more dynamic checker counts + work stealing between checkers, as this should actually be safe now.

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

This comment was marked as outdated.

@typescript-automation

This comment was marked as outdated.

@typescript-automation

This comment was marked as outdated.

@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 6, 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

@jakebailey Jake Bailey (jakebailey) added the Domain: Performance Performance related label Nov 6, 2026
@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 89,706 (± 0.12%) +1,240 (+ 1.40%) 89,370 89,944 p=0.000 n=20
Types 79,607 80,192 (± 0.12%) +585 (+ 0.73%) 79,895 80,485 p=0.000 n=20
Memory Used 106,408k (± 0.03%) 108,868k (± 0.08%) +2,461k (+ 2.31%) 108,574k 109,138k p=0.000 n=20
Memory Allocs 1,261,870 (± 0.01%) 1,299,393 (± 0.04%) +37,523 (+ 2.97%) 1,297,848 1,302,319 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.022s (± 2.32%) 0.022s (± 1.84%) ~ 0.021s 0.024s p=0.392 n=20
Bind Time 0.009s (± 4.50%) 0.008s (± 3.74%) 🟩-0.001s (-11.70%) 0.007s 0.009s p=0.000 n=20
Check Time 0.209s (± 1.34%) 0.231s (± 1.40%) 🔻+0.022s (+10.57%) 0.218s 0.241s p=0.000 n=20
Emit Time 0.135s (± 1.53%) 0.140s (± 3.34%) +0.005s (+ 3.58%) 0.131s 0.178s p=0.040 n=20
Total Time 0.379s (± 1.15%) 0.405s (± 1.55%) 🔻+0.026s (+ 6.92%) 0.382s 0.438s p=0.000 n=20
angular-1 - native
Errors 63 68 🔻+5 (+ 7.94%) ~ ~ p=0.000 n=20
Symbols 756,637 834,259 (± 0.06%) 🔻+77,622 (+10.26%) 833,144 836,783 p=0.000 n=20
Types 549,451 648,795 (± 0.13%) 🔻+99,344 (+18.08%) 646,496 653,444 p=0.000 n=20
Memory Used 643,899k (± 0.02%) 752,242k (± 0.10%) 🔻+108,343k (+16.83%) 749,895k 755,380k p=0.000 n=20
Memory Allocs 9,497,054 (± 0.13%) 10,500,946 (± 0.10%) 🔻+1,003,892 (+10.57%) 10,469,348 10,535,797 p=0.000 n=20
Config Time 0.007s (± 2.08%) 0.007s (± 1.50%) ~ 0.006s 0.007s p=1.000 n=20
Parse Time 0.115s (± 4.33%) 0.117s (± 4.86%) ~ 0.104s 0.158s p=0.379 n=20
Bind Time 0.044s (±11.08%) 0.043s (±10.40%) ~ 0.035s 0.062s p=0.751 n=20
Check Time 0.631s (± 1.12%) 0.494s (± 2.60%) 🟩-0.136s (-21.64%) 0.455s 0.549s p=0.000 n=20
Emit Time 0.393s (± 0.93%) 0.418s (± 1.46%) 🔻+0.025s (+ 6.38%) 0.392s 0.436s p=0.000 n=20
Total Time 1.202s (± 0.76%) 1.095s (± 0.86%) 🟩-0.107s (- 8.91%) 1.060s 1.133s p=0.000 n=20
arktype - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 686,116 765,562 (± 0.13%) 🔻+79,446 (+11.58%) 760,641 768,772 p=0.000 n=20
Types 939,797 1,052,850 (± 0.15%) 🔻+113,053 (+12.03%) 1,046,188 1,057,980 p=0.000 n=20
Memory Used 475,945k (± 0.01%) 566,790k (± 0.10%) 🔻+90,846k (+19.09%) 564,151k 568,884k p=0.000 n=20
Memory Allocs 12,052,669 (± 0.03%) 12,958,611 (± 0.16%) 🔻+905,942 (+ 7.52%) 12,881,667 13,033,526 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.040s (± 3.10%) 0.041s (± 3.57%) ~ 0.036s 0.046s p=0.538 n=20
Bind Time 0.013s (±10.98%) 0.013s (± 8.79%) ~ 0.011s 0.018s p=0.492 n=20
Check Time 0.830s (± 0.68%) 0.643s (± 1.88%) 🟩-0.187s (-22.48%) 0.593s 0.678s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.909s (± 0.68%) 0.720s (± 1.52%) 🟩-0.189s (-20.79%) 0.676s 0.755s p=0.000 n=20
class-transformer - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 45,376 45,341 (± 0.10%) -35 (- 0.08%) 45,313 45,699 p=0.000 n=20
Types 7,573 7,250 (± 0.78%) 🟩-323 (- 4.27%) 7,198 7,729 p=0.000 n=20
Memory Used 27,756k (± 0.03%) 28,149k (± 0.14%) +393k (+ 1.41%) 28,086k 28,475k p=0.000 n=20
Memory Allocs 247,796 (± 0.06%) 249,602 (± 0.16%) +1,806 (+ 0.73%) 248,921 252,827 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.012s (± 6.80%) 0.011s (± 6.40%) ~ 0.008s 0.014s p=0.822 n=20
Bind Time 0.004s (±13.63%) 0.004s (±10.63%) ~ 0.002s 0.005s p=1.000 n=20
Check Time 0.009s (± 6.68%) 0.010s (± 8.15%) ~ 0.007s 0.013s p=0.088 n=20
Emit Time 0.009s (±13.16%) 0.009s (± 6.31%) ~ 0.007s 0.012s p=0.156 n=20
Total Time 0.034s (± 5.46%) 0.035s (± 3.21%) ~ 0.031s 0.039s p=0.071 n=20
effect - native
Errors 12 20 🔻+8 (+66.67%) ~ ~ p=0.000 n=20
Symbols 1,235,134 1,114,816 (± 0.04%) 🟩-120,318 (- 9.74%) 1,113,921 1,118,806 p=0.000 n=20
Types 893,436 734,760 (± 0.06%) 🟩-158,676 (-17.76%) 733,640 737,495 p=0.000 n=20
Memory Used 941,297k (± 0.02%) 886,561k (± 0.03%) 🟩-54,736k (- 5.81%) 885,449k 888,232k p=0.000 n=20
Memory Allocs 12,592,389 (± 0.04%) 12,065,865 (± 0.08%) 🟩-526,524 (- 4.18%) 12,050,480 12,151,153 p=0.000 n=20
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=20
Parse Time 0.144s (± 1.73%) 0.144s (± 1.51%) ~ 0.136s 0.151s p=0.673 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.845s (± 0.88%) 1.306s (± 0.38%) 🔻+0.461s (+54.63%) 1.286s 1.324s p=0.000 n=20
Emit Time 0.466s (± 1.30%) 0.860s (± 1.86%) 🔻+0.394s (+84.60%) 0.824s 0.932s p=0.000 n=20
Total Time 1.546s (± 0.34%) 2.399s (± 0.68%) 🔻+0.854s (+55.22%) 2.358s 2.476s p=0.000 n=20
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=20
Symbols 3,782,394 4,976,277 (± 0.27%) 🔻+1,193,883 (+31.56%) 4,908,137 5,020,013 p=0.000 n=20
Types 1,355,778 1,866,045 (± 0.36%) 🔻+510,267 (+37.64%) 1,835,692 1,901,227 p=0.000 n=20
Memory Used 1,678,607k (± 0.09%) 2,598,922k (± 0.33%) 🔻+920,315k (+54.83%) 2,587,014k 2,673,786k p=0.000 n=20
Memory Allocs 25,525,845 (± 0.07%) 35,055,135 (± 0.33%) 🔻+9,529,290 (+37.33%) 34,904,586 36,055,512 p=0.000 n=20
Config Time 0.006s (± 3.66%) 0.006s (± 3.59%) ~ 0.006s 0.007s p=1.000 n=20
Parse Time 0.268s (± 1.80%) 0.267s (± 2.45%) ~ 0.252s 0.312s p=0.317 n=20
Bind Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Check Time 2.870s (± 0.64%) 3.382s (± 1.63%) 🔻+0.512s (+17.83%) 3.213s 3.532s p=0.000 n=20
Emit Time 0.249s (± 1.45%) 0.260s (± 5.74%) ~ 0.241s 0.390s p=0.223 n=20
Total Time 3.874s (± 0.53%) 4.434s (± 1.04%) 🔻+0.560s (+14.46%) 4.233s 4.554s p=0.000 n=20
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=20
Symbols 4,793,266 5,630,560 (± 0.13%) 🔻+837,294 (+17.47%) 5,602,720 5,653,875 p=0.000 n=20
Types 2,607,066 3,164,005 (± 0.05%) 🔻+556,939 (+21.36%) 3,157,346 3,169,371 p=0.000 n=20
Memory Used 2,797,071k (± 0.04%) 3,495,895k (± 0.06%) 🔻+698,824k (+24.98%) 3,488,617k 3,501,943k p=0.000 n=20
Memory Allocs 74,668,090 (± 0.13%) 115,896,727 (± 0.05%) 🔻+41,228,637 (+55.22%) 115,516,875 116,137,824 p=0.000 n=20
Config Time 0.017s (± 1.36%) 0.017s (± 1.20%) ~ 0.017s 0.018s p=0.320 n=20
Parse Time 0.462s (± 6.28%) 0.451s (± 2.96%) ~ 0.419s 0.534s p=0.794 n=20
Bind Time 0.151s (±10.13%) 0.135s (± 8.67%) ~ 0.114s 0.229s p=0.057 n=20
Check Time 6.415s (± 0.61%) 5.156s (± 1.19%) 🟩-1.259s (-19.63%) 5.007s 5.520s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.100s (± 0.59%) 5.813s (± 1.07%) 🟩-1.287s (-18.13%) 5.634s 6.141s p=0.000 n=20
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,883,060 2,487,895 (± 0.06%) 🔻+604,835 (+32.12%) 2,483,319 2,493,429 p=0.000 n=20
Types 1,158,093 1,816,593 (± 0.03%) 🔻+658,500 (+56.86%) 1,813,780 1,818,603 p=0.000 n=20
Memory Used 952,437k (± 0.02%) 1,367,297k (± 0.04%) 🔻+414,859k (+43.56%) 1,365,296k 1,369,863k p=0.000 n=20
Memory Allocs 13,398,016 (± 0.09%) 21,113,035 (± 0.08%) 🔻+7,715,020 (+57.58%) 21,047,494 21,181,088 p=0.000 n=20
Config Time 0.005s (± 4.43%) 0.005s (± 3.32%) ~ 0.005s 0.006s p=1.000 n=20
Parse Time 0.150s (± 2.92%) 0.150s (± 1.82%) ~ 0.139s 0.162s p=0.560 n=20
Bind Time 0.040s (± 6.53%) 0.040s (± 7.67%) ~ 0.034s 0.062s p=0.731 n=20
Check Time 1.356s (± 0.80%) 1.380s (± 1.66%) ~ 1.282s 1.465s p=0.090 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.571s (± 0.65%) 1.594s (± 1.31%) +0.024s (+ 1.50%) 1.507s 1.672s p=0.041 n=20
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,184,972 1,127,524 (± 0.01%) 🟩-57,448 (- 4.85%) 1,127,075 1,128,215 p=0.000 n=20
Types 438,823 337,488 (± 0.06%) 🟩-101,335 (-23.09%) 336,898 338,458 p=0.000 n=20
Memory Used 1,155,116k (± 0.25%) 1,079,848k (± 0.33%) 🟩-75,268k (- 6.52%) 1,071,567k 1,097,730k p=0.000 n=20
Memory Allocs 47,295,787 (± 0.12%) 44,146,684 (± 0.04%) 🟩-3,149,103 (- 6.66%) 44,108,014 44,257,877 p=0.000 n=20
Config Time 0.002s (±16.13%) 0.002s (±12.21%) ~ 0.001s 0.003s p=0.097 n=20
Parse Time 0.135s (± 1.46%) 0.132s (± 1.19%) -0.003s (- 2.23%) 0.127s 0.137s p=0.020 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.777s (± 0.47%) 1.044s (± 0.69%) 🔻+0.267s (+34.39%) 1.020s 1.084s p=0.000 n=20
Emit Time 0.135s (± 1.66%) 0.202s (± 1.14%) 🔻+0.067s (+49.52%) 0.194s 0.213s p=0.000 n=20
Total Time 9.099s (± 0.35%) 11.520s (± 0.38%) 🔻+2.421s (+26.60%) 11.358s 11.668s p=0.000 n=20
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 263,481 263,680 (± 0.06%) ~ 263,304 263,947 p=0.248 n=20
Types 196,103 195,893 (± 0.13%) ~ 195,246 196,594 p=1.000 n=20
Memory Used 221,473k (± 0.02%) 228,037k (± 0.06%) +6,564k (+ 2.96%) 227,621k 228,419k p=0.000 n=20
Memory Allocs 2,386,968 (± 0.02%) 2,482,788 (± 0.05%) 🔻+95,819 (+ 4.01%) 2,479,544 2,486,126 p=0.000 n=20
Config Time 0.000s 0.000s (±143.57%) ~ 0.000s 0.001s p=0.487 n=20
Parse Time 0.049s (± 3.25%) 0.051s (± 9.42%) ~ 0.045s 0.093s p=0.772 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.378s (± 1.93%) 0.423s (± 1.67%) 🔻+0.045s (+11.80%) 0.407s 0.471s p=0.000 n=20
Emit Time 0.049s (± 6.06%) 0.090s (± 5.95%) 🔻+0.041s (+84.09%) 0.073s 0.126s p=0.000 n=20
Total Time 0.505s (± 1.60%) 0.592s (± 1.64%) 🔻+0.087s (+17.33%) 0.568s 0.646s p=0.000 n=20
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 4,349,937 6,151,332 (± 0.53%) 🔻+1,801,395 (+41.41%) 6,065,511 6,342,762 p=0.000 n=20
Types 3,042,465 4,850,685 (± 0.80%) 🔻+1,808,220 (+59.43%) 4,767,858 5,114,123 p=0.000 n=20
Memory Used 2,395,771k (± 0.03%) 3,605,400k (± 0.76%) 🔻+1,209,629k (+50.49%) 3,552,526k 3,789,725k p=0.000 n=20
Memory Allocs 37,018,368 (± 0.04%) 63,477,110 (± 1.60%) 🔻+26,458,742 (+71.47%) 62,152,848 70,401,459 p=0.000 n=20
Config Time 0.002s (± 6.84%) 0.002s (± 9.53%) ~ 0.002s 0.003s p=0.235 n=20
Parse Time 0.240s (± 2.12%) 0.245s (± 3.58%) ~ 0.215s 0.280s p=0.473 n=20
Bind Time 0.089s (±12.73%) 0.082s (± 7.64%) ~ 0.071s 0.122s p=0.878 n=20
Check Time 5.696s (± 0.73%) 5.971s (± 1.36%) 🔻+0.275s (+ 4.83%) 5.715s 6.428s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 6.039s (± 0.69%) 6.315s (± 1.31%) 🔻+0.275s (+ 4.56%) 6.033s 6.764s p=0.000 n=20
tanstack-router - native
Errors 1 1 ~ ~ ~ p=1.000 n=20
Symbols 570,149 620,203 (± 0.07%) 🔻+50,054 (+ 8.78%) 618,698 621,403 p=0.000 n=20
Types 396,551 471,577 (± 0.12%) 🔻+75,026 (+18.92%) 468,908 473,540 p=0.000 n=20
Memory Used 315,201k (± 0.02%) 378,738k (± 0.08%) 🔻+63,537k (+20.16%) 377,260k 379,612k p=0.000 n=20
Memory Allocs 4,323,400 (± 0.16%) 5,081,771 (± 0.12%) 🔻+758,371 (+17.54%) 5,056,475 5,118,022 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.039s (± 3.62%) 0.040s (± 3.83%) ~ 0.034s 0.045s p=0.454 n=20
Bind Time 0.012s (± 7.77%) 0.013s (±12.81%) ~ 0.010s 0.022s p=0.337 n=20
Check Time 0.457s (± 2.57%) 0.417s (± 1.22%) 🟩-0.040s (- 8.66%) 0.401s 0.439s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.526s (± 2.16%) 0.486s (± 0.87%) 🟩-0.040s (- 7.56%) 0.471s 0.505s p=0.000 n=20
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=20
Symbols 231,607 238,176 (± 0.78%) +6,569 (+ 2.84%) 233,317 244,596 p=0.000 n=20
Types 181,163 189,736 (± 1.64%) 🔻+8,573 (+ 4.73%) 182,689 200,469 p=0.000 n=20
Memory Used 190,890k (± 0.01%) 202,802k (± 1.39%) 🔻+11,912k (+ 6.24%) 197,168k 212,299k p=0.000 n=20
Memory Allocs 1,310,217 (± 0.02%) 1,463,117 (± 2.12%) 🔻+152,900 (+11.67%) 1,400,945 1,565,703 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.044s (± 2.52%) 0.043s (± 2.50%) ~ 0.039s 0.046s p=0.660 n=20
Bind Time 0.019s (± 5.38%) 0.020s (± 4.53%) ~ 0.016s 0.025s p=0.195 n=20
Check Time 0.300s (± 2.76%) 0.331s (± 1.16%) 🔻+0.030s (+10.16%) 0.316s 0.349s p=0.000 n=20
Emit Time 0.000s 0.087s (±52.43%) 🔻+0.087s (+ ∞%) 0.013s 0.236s p=0.000 n=20
Total Time 0.370s (± 2.13%) 0.487s (± 9.61%) 🔻+0.117s (+31.70%) 0.409s 0.654s p=0.000 n=20
vscode - native
Errors 18 18 ~ ~ ~ p=1.000 n=20
Symbols 7,928,651 8,113,570 (± 0.03%) +184,919 (+ 2.33%) 8,107,935 8,125,966 p=0.000 n=20
Types 4,614,106 4,958,823 (± 0.05%) 🔻+344,717 (+ 7.47%) 4,953,385 4,972,999 p=0.000 n=20
Memory Used 5,315,207k (± 0.02%) 5,824,996k (± 0.03%) 🔻+509,788k (+ 9.59%) 5,820,713k 5,836,207k p=0.000 n=20
Memory Allocs 58,512,759 (± 0.02%) 64,271,324 (± 0.04%) 🔻+5,758,565 (+ 9.84%) 64,206,520 64,375,959 p=0.000 n=20
Config Time 0.022s (± 1.05%) 0.023s (± 1.13%) +0.001s (+ 2.23%) 0.022s 0.024s p=0.011 n=20
Parse Time 0.863s (± 1.54%) 0.867s (± 2.16%) ~ 0.794s 0.968s p=0.365 n=20
Bind Time 0.299s (± 5.58%) 0.304s (± 5.75%) ~ 0.277s 0.409s p=0.625 n=20
Check Time 6.890s (± 0.42%) 5.215s (± 2.05%) 🟩-1.674s (-24.30%) 4.852s 5.571s p=0.000 n=20
Emit Time 2.154s (± 6.27%) 2.331s (± 5.82%) 🔻+0.177s (+ 8.22%) 1.935s 2.687s p=0.019 n=20
Total Time 10.288s (± 1.14%) 8.806s (± 0.63%) 🟩-1.482s (-14.40%) 8.623s 9.017s p=0.000 n=20
webpack - native
Errors 615 619 +4 (+ 0.65%) ~ ~ p=0.000 n=20
Symbols 887,763 1,030,440 (± 0.18%) 🔻+142,677 (+16.07%) 1,025,077 1,039,103 p=0.000 n=20
Types 624,213 760,529 (± 0.25%) 🔻+136,316 (+21.84%) 755,026 770,392 p=0.000 n=20
Memory Used 651,580k (± 0.01%) 783,558k (± 0.17%) 🔻+131,978k (+20.26%) 779,077k 789,733k p=0.000 n=20
Memory Allocs 6,083,918 (± 0.20%) 7,883,560 (± 0.46%) 🔻+1,799,642 (+29.58%) 7,808,274 8,081,091 p=0.000 n=20
Config Time 0.003s (± 8.18%) 0.003s (± 5.42%) ~ 0.003s 0.004s p=0.343 n=20
Parse Time 0.126s (± 3.56%) 0.127s (± 2.54%) ~ 0.114s 0.138s p=0.424 n=20
Bind Time 0.044s (±11.57%) 0.044s (±11.26%) ~ 0.032s 0.063s p=0.952 n=20
Check Time 1.056s (± 1.24%) 0.776s (± 1.29%) 🟩-0.280s (-26.54%) 0.738s 0.818s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.253s (± 1.13%) 0.974s (± 1.03%) 🟩-0.279s (-22.29%) 0.937s 1.013s p=0.000 n=20
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 3,802,945 3,872,612 (± 0.06%) +69,667 (+ 1.83%) 3,862,681 3,884,196 p=0.000 n=20
Types 3,817,170 3,653,754 (± 0.05%) 🟩-163,416 (- 4.28%) 3,647,111 3,661,237 p=0.000 n=20
Memory Used 2,066,263k (± 0.01%) 2,358,432k (± 0.06%) 🔻+292,168k (+14.14%) 2,353,050k 2,364,896k p=0.000 n=20
Memory Allocs 40,627,040 (± 0.01%) 48,563,574 (± 0.03%) 🔻+7,936,534 (+19.54%) 48,509,747 48,630,828 p=0.000 n=20
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=20
Parse Time 0.110s (± 2.42%) 0.107s (± 1.99%) ~ 0.098s 0.117s p=0.142 n=20
Bind Time 0.036s (± 8.03%) 0.038s (± 9.01%) ~ 0.032s 0.057s p=0.287 n=20
Check Time 3.838s (± 0.66%) 3.193s (± 1.05%) 🟩-0.645s (-16.80%) 3.113s 3.369s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 3.994s (± 0.62%) 3.347s (± 1.09%) 🟩-0.646s (-16.18%) 3.265s 3.539s 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

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)

@jakebailey

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) perf test this faster

@typescript-automation

typescript-automation Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

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

Command Status Results
perf test this faster ✅ Started 👀 Results

@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 90,019 (± 0.34%) +1,553 (+ 1.76%) 89,362 92,342 p=0.000 n=20
Types 79,607 80,422 (± 0.25%) +815 (+ 1.02%) 79,887 81,569 p=0.000 n=20
Memory Used 106,396k (± 0.02%) 109,056k (± 0.15%) +2,660k (+ 2.50%) 108,582k 110,072k p=0.000 n=20
Memory Allocs 1,261,914 (± 0.01%) 1,301,013 (± 0.12%) +39,099 (+ 3.10%) 1,297,805 1,312,076 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.022s (± 3.20%) 0.022s (± 3.08%) ~ 0.019s 0.024s p=0.881 n=20
Bind Time 0.008s (± 5.35%) 0.008s (± 5.47%) ~ 0.007s 0.010s p=0.877 n=20
Check Time 0.201s (± 0.53%) 0.220s (± 1.37%) 🔻+0.019s (+ 9.39%) 0.210s 0.235s p=0.000 n=20
Emit Time 0.129s (± 0.63%) 0.136s (± 1.44%) 🔻+0.006s (+ 4.99%) 0.130s 0.144s p=0.000 n=20
Total Time 0.364s (± 0.60%) 0.390s (± 0.91%) 🔻+0.026s (+ 7.09%) 0.380s 0.410s p=0.000 n=20
angular-1 - native
Errors 63 68 🔻+5 (+ 7.94%) ~ ~ p=0.000 n=20
Symbols 756,637 834,387 (± 0.06%) 🔻+77,750 (+10.28%) 832,874 837,029 p=0.000 n=20
Types 549,451 648,765 (± 0.12%) 🔻+99,314 (+18.08%) 645,812 652,250 p=0.000 n=20
Memory Used 643,899k (± 0.02%) 751,894k (± 0.09%) 🔻+107,995k (+16.77%) 749,039k 755,350k p=0.000 n=20
Memory Allocs 9,491,165 (± 0.02%) 10,501,327 (± 0.11%) 🔻+1,010,162 (+10.64%) 10,465,691 10,547,696 p=0.000 n=20
Config Time 0.007s (± 4.33%) 0.007s (± 3.63%) ~ 0.006s 0.007s p=0.110 n=20
Parse Time 0.120s (± 4.33%) 0.118s (± 3.56%) ~ 0.105s 0.140s p=0.644 n=20
Bind Time 0.039s (±10.82%) 0.040s (± 9.92%) ~ 0.033s 0.060s p=0.727 n=20
Check Time 0.623s (± 1.11%) 0.506s (± 2.93%) 🟩-0.117s (-18.77%) 0.459s 0.559s p=0.000 n=20
Emit Time 0.390s (± 0.64%) 0.530s (±47.55%) 🔻+0.140s (+35.93%) 0.379s 2.826s p=0.000 n=20
Total Time 1.194s (± 0.70%) 1.216s (±20.42%) +0.022s (+ 1.86%) 1.045s 3.473s p=0.000 n=20
arktype - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 686,116 765,607 (± 0.17%) 🔻+79,491 (+11.59%) 759,507 772,032 p=0.000 n=20
Types 939,797 1,053,327 (± 0.20%) 🔻+113,530 (+12.08%) 1,044,645 1,064,478 p=0.000 n=20
Memory Used 475,929k (± 0.01%) 566,709k (± 0.14%) 🔻+90,780k (+19.07%) 563,825k 570,965k p=0.000 n=20
Memory Allocs 12,050,450 (± 0.02%) 12,954,060 (± 0.25%) 🔻+903,610 (+ 7.50%) 12,828,840 13,112,755 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.041s (± 3.57%) 0.042s (± 5.56%) ~ 0.034s 0.052s p=0.963 n=20
Bind Time 0.013s (± 9.67%) 0.013s (± 9.96%) ~ 0.011s 0.018s p=0.809 n=20
Check Time 0.821s (± 0.82%) 0.628s (± 2.35%) 🟩-0.193s (-23.53%) 0.587s 0.711s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.902s (± 0.72%) 0.710s (± 1.98%) 🟩-0.192s (-21.30%) 0.675s 0.794s p=0.000 n=20
class-transformer - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 45,376 45,313 (± 0.00%) -63 (- 0.14%) 45,313 45,318 p=0.000 n=20
Types 7,573 7,208 (± 0.06%) 🟩-365 (- 4.82%) 7,200 7,244 p=0.000 n=20
Memory Used 27,741k (± 0.02%) 28,119k (± 0.03%) +378k (+ 1.36%) 28,089k 28,170k p=0.000 n=20
Memory Allocs 247,773 (± 0.06%) 249,279 (± 0.05%) +1,506 (+ 0.61%) 248,838 249,783 p=0.000 n=20
Config Time 0.001s 0.001s (±10.98%) ~ 0.000s 0.001s p=1.000 n=20
Parse Time 0.011s (± 3.61%) 0.011s (± 4.64%) ~ 0.009s 0.013s p=0.718 n=20
Bind Time 0.003s (± 8.07%) 0.003s (±12.11%) ~ 0.002s 0.005s p=0.053 n=20
Check Time 0.008s (± 6.64%) 0.008s (± 5.81%) ~ 0.007s 0.011s p=0.525 n=20
Emit Time 0.008s (± 5.53%) 0.008s (± 5.80%) 🔻+0.001s (+12.67%) 0.007s 0.010s p=0.006 n=20
Total Time 0.030s (± 2.50%) 0.032s (± 3.41%) 🔻+0.002s (+ 6.44%) 0.029s 0.039s p=0.003 n=20
effect - native
Errors 12 20 🔻+8 (+66.67%) ~ ~ p=0.000 n=20
Symbols 1,235,134 1,293,939 (± 0.08%) 🔻+58,805 (+ 4.76%) 1,289,515 1,297,890 p=0.000 n=20
Types 893,436 973,329 (± 0.10%) 🔻+79,893 (+ 8.94%) 968,147 976,963 p=0.000 n=20
Memory Used 941,535k (± 0.03%) 1,016,348k (± 0.06%) 🔻+74,813k (+ 7.95%) 1,013,784k 1,019,097k p=0.000 n=20
Memory Allocs 12,592,587 (± 0.04%) 13,920,332 (± 0.09%) 🔻+1,327,745 (+10.54%) 13,837,182 13,960,918 p=0.000 n=20
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=20
Parse Time 0.147s (± 1.84%) 0.146s (± 1.60%) ~ 0.136s 0.155s p=0.596 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.864s (± 0.78%) 0.907s (± 1.76%) 🔻+0.043s (+ 5.02%) 0.863s 1.010s p=0.000 n=20
Emit Time 0.478s (± 1.59%) 1.150s (± 1.33%) 🔻+0.672s (+140.65%) 1.096s 1.216s p=0.000 n=20
Total Time 1.585s (± 0.55%) 2.297s (± 0.83%) 🔻+0.713s (+44.98%) 2.247s 2.412s p=0.000 n=20
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=20
Symbols 3,782,394 4,964,538 (± 0.42%) 🔻+1,182,144 (+31.25%) 4,905,612 5,027,043 p=0.000 n=20
Types 1,355,778 1,869,765 (± 0.50%) 🔻+513,987 (+37.91%) 1,836,527 1,907,465 p=0.000 n=20
Memory Used 1,678,992k (± 0.07%) 2,610,602k (± 0.64%) 🔻+931,610k (+55.49%) 2,582,510k 2,688,703k p=0.000 n=20
Memory Allocs 25,526,626 (± 0.05%) 35,217,334 (± 0.59%) 🔻+9,690,708 (+37.96%) 34,854,354 36,153,487 p=0.000 n=20
Config Time 0.006s (± 1.72%) 0.006s (± 2.35%) ~ 0.006s 0.007s p=1.000 n=20
Parse Time 0.265s (± 2.26%) 0.268s (± 2.09%) ~ 0.240s 0.288s p=0.498 n=20
Bind Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Check Time 2.811s (± 0.63%) 3.376s (± 1.39%) 🔻+0.565s (+20.10%) 3.170s 3.584s p=0.000 n=20
Emit Time 0.245s (± 1.14%) 0.268s (± 9.28%) ~ 0.242s 0.396s p=0.315 n=20
Total Time 3.802s (± 0.53%) 4.420s (± 0.98%) 🔻+0.618s (+16.26%) 4.224s 4.595s p=0.000 n=20
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=20
Symbols 4,793,266 5,630,181 (± 0.16%) 🔻+836,915 (+17.46%) 5,606,058 5,673,535 p=0.000 n=20
Types 2,607,066 3,164,198 (± 0.05%) 🔻+557,132 (+21.37%) 3,158,918 3,171,813 p=0.000 n=20
Memory Used 2,798,837k (± 0.04%) 3,497,244k (± 0.06%) 🔻+698,406k (+24.95%) 3,488,425k 3,504,585k p=0.000 n=20
Memory Allocs 74,592,366 (± 0.06%) 115,883,321 (± 0.07%) 🔻+41,290,955 (+55.36%) 115,539,706 116,489,444 p=0.000 n=20
Config Time 0.019s (± 1.47%) 0.018s (± 1.46%) ~ 0.018s 0.020s p=0.050 n=20
Parse Time 0.499s (± 5.12%) 0.469s (± 1.75%) ~ 0.428s 0.489s p=0.060 n=20
Bind Time 0.162s (±10.33%) 0.151s (± 9.88%) 🟩-0.011s (- 6.78%) 0.126s 0.241s p=0.044 n=20
Check Time 6.881s (± 0.65%) 5.430s (± 1.41%) 🟩-1.451s (-21.08%) 5.175s 5.785s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.613s (± 0.73%) 6.118s (± 1.31%) 🟩-1.495s (-19.64%) 5.854s 6.474s p=0.000 n=20
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,883,060 2,487,470 (± 0.07%) 🔻+604,410 (+32.10%) 2,478,866 2,493,928 p=0.000 n=20
Types 1,158,093 1,816,198 (± 0.07%) 🔻+658,105 (+56.83%) 1,809,068 1,819,182 p=0.000 n=20
Memory Used 952,346k (± 0.02%) 1,367,270k (± 0.05%) 🔻+414,924k (+43.57%) 1,363,705k 1,369,378k p=0.000 n=20
Memory Allocs 13,426,983 (± 0.22%) 21,107,492 (± 0.12%) 🔻+7,680,509 (+57.20%) 20,988,317 21,232,311 p=0.000 n=20
Config Time 0.005s (± 4.89%) 0.005s (± 3.32%) ~ 0.005s 0.006s p=0.746 n=20
Parse Time 0.146s (± 2.38%) 0.150s (± 6.16%) ~ 0.137s 0.215s p=0.481 n=20
Bind Time 0.042s (± 9.94%) 0.043s (±10.23%) ~ 0.034s 0.062s p=0.576 n=20
Check Time 1.341s (± 0.68%) 1.340s (± 1.74%) ~ 1.258s 1.421s p=0.815 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.552s (± 0.58%) 1.558s (± 1.72%) ~ 1.475s 1.705s p=0.825 n=20
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,184,972 1,186,743 (± 0.02%) +1,771 (+ 0.15%) 1,185,788 1,187,628 p=0.000 n=20
Types 438,823 437,447 (± 0.07%) -1,376 (- 0.31%) 436,407 439,050 p=0.000 n=20
Memory Used 1,166,789k (± 0.45%) 1,180,603k (± 0.28%) +13,813k (+ 1.18%) 1,171,289k 1,202,383k p=0.001 n=20
Memory Allocs 47,456,143 (± 0.09%) 49,278,934 (± 0.08%) +1,822,791 (+ 3.84%) 49,124,764 49,436,630 p=0.000 n=20
Config Time 0.002s (±14.79%) 0.002s (±14.86%) ~ 0.001s 0.004s p=0.856 n=20
Parse Time 0.145s (± 2.04%) 0.144s (± 1.65%) ~ 0.136s 0.153s p=0.973 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.815s (± 0.95%) 0.894s (± 1.19%) 🔻+0.079s (+ 9.68%) 0.865s 0.976s p=0.000 n=20
Emit Time 0.152s (± 2.15%) 0.227s (± 1.62%) 🔻+0.075s (+49.75%) 0.215s 0.243s p=0.000 n=20
Total Time 9.733s (± 1.09%) 10.967s (± 0.60%) 🔻+1.234s (+12.68%) 10.741s 11.200s p=0.000 n=20
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 263,481 263,738 (± 0.05%) +257 (+ 0.10%) 263,304 263,947 p=0.020 n=20
Types 196,103 195,988 (± 0.13%) ~ 195,258 196,487 p=0.254 n=20
Memory Used 221,501k (± 0.02%) 228,053k (± 0.06%) +6,552k (+ 2.96%) 227,624k 228,475k p=0.000 n=20
Memory Allocs 2,387,420 (± 0.01%) 2,483,327 (± 0.04%) 🔻+95,906 (+ 4.02%) 2,479,501 2,486,346 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.048s (± 3.43%) 0.048s (± 3.15%) ~ 0.043s 0.053s p=0.856 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.362s (± 0.62%) 0.406s (± 0.58%) 🔻+0.044s (+12.04%) 0.397s 0.413s p=0.000 n=20
Emit Time 0.045s (± 4.49%) 0.081s (± 3.64%) 🔻+0.037s (+82.13%) 0.073s 0.092s p=0.000 n=20
Total Time 0.480s (± 0.78%) 0.561s (± 0.63%) 🔻+0.081s (+16.91%) 0.546s 0.574s p=0.000 n=20
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 4,349,937 6,142,603 (± 0.45%) 🔻+1,792,666 (+41.21%) 6,072,437 6,274,311 p=0.000 n=20
Types 3,042,465 4,842,838 (± 0.58%) 🔻+1,800,373 (+59.17%) 4,788,612 4,986,903 p=0.000 n=20
Memory Used 2,394,724k (± 0.03%) 3,599,493k (± 0.56%) 🔻+1,204,769k (+50.31%) 3,561,730k 3,695,857k p=0.000 n=20
Memory Allocs 37,007,354 (± 0.04%) 63,266,675 (± 1.17%) 🔻+26,259,321 (+70.96%) 62,213,303 66,562,584 p=0.000 n=20
Config Time 0.002s (± 6.84%) 0.003s (±36.81%) ~ 0.002s 0.011s p=0.737 n=20
Parse Time 0.235s (± 2.46%) 0.256s (±13.52%) ~ 0.221s 0.568s p=0.208 n=20
Bind Time 0.086s (±10.64%) 0.075s (± 4.78%) ~ 0.068s 0.093s p=0.084 n=20
Check Time 5.577s (± 0.45%) 5.891s (± 2.47%) 🔻+0.314s (+ 5.62%) 5.591s 6.935s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 5.912s (± 0.42%) 6.237s (± 2.42%) 🔻+0.325s (+ 5.50%) 5.916s 7.267s p=0.000 n=20
tanstack-router - native
Errors 1 1 ~ ~ ~ p=1.000 n=20
Symbols 570,149 620,268 (± 0.08%) 🔻+50,119 (+ 8.79%) 617,962 621,643 p=0.000 n=20
Types 396,551 471,541 (± 0.13%) 🔻+74,990 (+18.91%) 468,738 473,637 p=0.000 n=20
Memory Used 315,274k (± 0.02%) 378,589k (± 0.10%) 🔻+63,315k (+20.08%) 376,748k 379,685k p=0.000 n=20
Memory Allocs 4,320,264 (± 0.09%) 5,084,405 (± 0.16%) 🔻+764,141 (+17.69%) 5,064,313 5,130,558 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.040s (± 4.33%) 0.039s (± 3.31%) ~ 0.034s 0.046s p=0.643 n=20
Bind Time 0.013s (±11.92%) 0.012s (± 9.97%) ~ 0.010s 0.020s p=0.871 n=20
Check Time 0.464s (± 0.69%) 0.425s (± 1.64%) 🟩-0.039s (- 8.37%) 0.399s 0.451s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.534s (± 0.85%) 0.492s (± 1.21%) 🟩-0.042s (- 7.82%) 0.464s 0.518s p=0.000 n=20
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=20
Symbols 231,607 239,114 (± 0.84%) +7,507 (+ 3.24%) 235,036 245,206 p=0.000 n=20
Types 181,163 191,261 (± 1.69%) 🔻+10,098 (+ 5.57%) 184,213 200,494 p=0.000 n=20
Memory Used 190,833k (± 0.02%) 204,133k (± 1.46%) 🔻+13,300k (+ 6.97%) 197,593k 212,260k p=0.000 n=20
Memory Allocs 1,310,254 (± 0.02%) 1,476,868 (± 2.25%) 🔻+166,613 (+12.72%) 1,406,474 1,565,800 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.041s (± 3.38%) 0.041s (± 3.35%) ~ 0.034s 0.047s p=0.876 n=20
Bind Time 0.020s (± 4.75%) 0.019s (± 4.23%) ~ 0.016s 0.021s p=0.135 n=20
Check Time 0.282s (± 1.09%) 0.320s (± 0.89%) 🔻+0.038s (+13.44%) 0.308s 0.333s p=0.000 n=20
Emit Time 0.000s 0.109s (±46.80%) 🔻+0.109s (+ ∞%) 0.013s 0.256s p=0.000 n=20
Total Time 0.349s (± 0.82%) 0.495s (±10.36%) 🔻+0.146s (+41.73%) 0.390s 0.645s p=0.000 n=20
vscode - native
Errors 18 18 ~ ~ ~ p=1.000 n=20
Symbols 7,955,816 8,144,160 (± 0.02%) +188,344 (+ 2.37%) 8,139,000 8,152,423 p=0.000 n=20
Types 4,643,219 4,969,087 (± 0.04%) 🔻+325,868 (+ 7.02%) 4,963,306 4,977,765 p=0.000 n=20
Memory Used 5,325,196k (± 0.02%) 5,839,319k (± 0.04%) 🔻+514,123k (+ 9.65%) 5,832,335k 5,849,764k p=0.000 n=20
Memory Allocs 58,687,759 (± 0.01%) 64,615,253 (± 0.03%) 🔻+5,927,494 (+10.10%) 64,575,452 64,689,944 p=0.000 n=20
Config Time 0.024s (± 2.59%) 0.024s (± 1.99%) ~ 0.023s 0.027s p=0.392 n=20
Parse Time 0.927s (± 1.93%) 0.930s (± 2.13%) ~ 0.867s 1.014s p=0.654 n=20
Bind Time 0.334s (± 4.83%) 0.335s (± 5.96%) ~ 0.300s 0.459s p=0.358 n=20
Check Time 7.548s (± 0.44%) 5.496s (± 2.04%) 🟩-2.052s (-27.18%) 5.094s 5.856s p=0.000 n=20
Emit Time 2.366s (± 5.96%) 2.467s (± 5.43%) ~ 2.062s 2.875s p=0.253 n=20
Total Time 11.262s (± 1.09%) 9.318s (± 0.52%) 🟩-1.943s (-17.26%) 9.069s 9.479s p=0.000 n=20
webpack - native
Errors 618 622 +4 (+ 0.65%) ~ ~ p=0.000 n=20
Symbols 884,452 1,016,169 (± 0.65%) 🔻+131,717 (+14.89%) 1,001,424 1,030,581 p=0.000 n=20
Types 622,976 749,987 (± 0.55%) 🔻+127,011 (+20.39%) 739,008 760,826 p=0.000 n=20
Memory Used 651,179k (± 0.02%) 776,693k (± 0.29%) 🔻+125,515k (+19.27%) 770,522k 782,792k p=0.000 n=20
Memory Allocs 6,081,916 (± 0.09%) 7,797,075 (± 0.45%) 🔻+1,715,159 (+28.20%) 7,703,252 7,890,841 p=0.000 n=20
Config Time 0.003s 0.003s ~ ~ ~ p=1.000 n=20
Parse Time 0.120s (± 2.87%) 0.121s (± 2.34%) ~ 0.111s 0.131s p=0.304 n=20
Bind Time 0.042s (± 9.61%) 0.042s (± 9.21%) ~ 0.032s 0.063s p=0.888 n=20
Check Time 1.042s (± 0.67%) 0.747s (± 1.31%) 🟩-0.295s (-28.35%) 0.722s 0.785s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.231s (± 0.52%) 0.938s (± 0.81%) 🟩-0.293s (-23.81%) 0.912s 0.965s p=0.000 n=20
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 3,802,945 3,871,898 (± 0.07%) +68,953 (+ 1.81%) 3,857,107 3,882,040 p=0.000 n=20
Types 3,817,170 3,653,725 (± 0.04%) 🟩-163,445 (- 4.28%) 3,648,345 3,658,861 p=0.000 n=20
Memory Used 2,066,197k (± 0.01%) 2,357,538k (± 0.06%) 🔻+291,342k (+14.10%) 2,350,866k 2,361,911k p=0.000 n=20
Memory Allocs 40,633,340 (± 0.02%) 48,568,332 (± 0.02%) 🔻+7,934,992 (+19.53%) 48,535,828 48,622,280 p=0.000 n=20
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=20
Parse Time 0.105s (± 2.08%) 0.105s (± 2.12%) ~ 0.098s 0.113s p=0.773 n=20
Bind Time 0.036s (± 7.78%) 0.038s (±10.09%) ~ 0.031s 0.060s p=0.477 n=20
Check Time 3.769s (± 0.86%) 3.154s (± 0.93%) 🟩-0.615s (-16.32%) 3.067s 3.257s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 3.919s (± 0.80%) 3.307s (± 0.99%) 🟩-0.612s (-15.62%) 3.213s 3.418s 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

TypeScript Bot (@typescript-bot) perf test this faster

@typescript-automation

typescript-automation Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

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

Command Status Results
perf test this faster ✅ Started 👀 Results

@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 4 projects failed to build with the old tsc and were ignored

packages/tools/ai-docgen/tsconfig.json

Unleash/unleash

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

frontend/tsconfig.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=40
Symbols 88,466 89,794 (± 0.11%) +1,257 (+ 1.42%) 89,368 90,614 p=0.000 n=40
Types 79,607 80,224 (± 0.09%) +573 (+ 0.72%) 79,870 80,672 p=0.000 n=40
Memory Used 106,406k (± 0.02%) 108,874k (± 0.06%) +2,471k (+ 2.32%) 108,439k 109,297k p=0.000 n=40
Memory Allocs 1,261,844 (± 0.01%) 1,299,429 (± 0.03%) +37,499 (+ 2.97%) 1,297,488 1,302,921 p=0.000 n=40
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Parse Time 0.022s (± 4.92%) 0.022s (± 1.78%) ~ 0.019s 0.024s p=0.280 n=40
Bind Time 0.008s (± 5.21%) 0.008s (± 3.69%) 🟩-0.001s (- 6.46%) 0.006s 0.010s p=0.005 n=40
Check Time 0.201s (± 0.63%) 0.219s (± 0.47%) 🔻+0.018s (+ 8.86%) 0.212s 0.225s p=0.000 n=40
Emit Time 0.130s (± 1.27%) 0.132s (± 0.51%) +0.004s (+ 2.74%) 0.127s 0.138s p=0.000 n=40
Total Time 0.365s (± 0.73%) 0.384s (± 0.33%) 🔻+0.021s (+ 5.79%) 0.377s 0.397s p=0.000 n=40
angular-1 - native
Errors 63 68 🔻+5 (+ 7.94%) ~ ~ p=0.000 n=40
Symbols 756,637 831,362 (± 0.02%) 🔻+74,786 (+ 9.88%) 829,652 832,000 p=0.000 n=40
Types 549,451 643,727 (± 0.05%) 🔻+94,292 (+17.16%) 640,891 645,853 p=0.000 n=40
Memory Used 643,794k (± 0.01%) 747,828k (± 0.03%) 🔻+104,067k (+16.16%) 745,332k 748,896k p=0.000 n=40
Memory Allocs 9,493,635 (± 0.04%) 10,448,054 (± 0.04%) 🔻+954,523 (+10.05%) 10,435,781 10,492,971 p=0.000 n=40
Config Time 0.008s (± 2.30%) 0.007s (± 1.76%) 🟩-0.000s (- 5.72%) 0.006s 0.008s p=0.017 n=40
Parse Time 0.134s (± 3.47%) 0.130s (± 2.33%) ~ 0.116s 0.155s p=0.512 n=40
Bind Time 0.047s (± 5.99%) 0.045s (± 5.70%) ~ 0.037s 0.065s p=0.068 n=40
Check Time 0.674s (± 0.99%) 0.534s (± 1.76%) 🟩-0.140s (-20.82%) 0.484s 0.595s p=0.000 n=40
Emit Time 0.418s (± 0.73%) 0.432s (± 1.41%) +0.014s (+ 3.24%) 0.399s 0.485s p=0.000 n=40
Total Time 1.295s (± 0.63%) 1.166s (± 0.82%) 🟩-0.129s (- 9.99%) 1.105s 1.242s p=0.000 n=40
arktype - native
Errors 0 0 ~ ~ ~ p=1.000 n=40
Symbols 686,116 765,981 (± 0.08%) 🔻+79,882 (+11.64%) 761,499 769,484 p=0.000 n=40
Types 939,797 1,053,894 (± 0.10%) 🔻+114,075 (+12.14%) 1,047,124 1,061,635 p=0.000 n=40
Memory Used 475,936k (± 0.01%) 567,119k (± 0.07%) 🔻+91,174k (+19.16%) 564,621k 570,745k p=0.000 n=40
Memory Allocs 12,052,250 (± 0.02%) 12,970,365 (± 0.11%) 🔻+918,658 (+ 7.62%) 12,857,522 13,064,479 p=0.000 n=40
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=40
Parse Time 0.040s (± 2.54%) 0.042s (± 6.75%) ~ 0.035s 0.095s p=0.737 n=40
Bind Time 0.012s (± 5.22%) 0.012s (± 5.97%) ~ 0.010s 0.018s p=0.344 n=40
Check Time 0.819s (± 0.33%) 0.631s (± 1.31%) 🟩-0.188s (-22.91%) 0.583s 0.713s p=0.000 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 0.899s (± 0.30%) 0.712s (± 1.25%) 🟩-0.189s (-20.99%) 0.662s 0.846s p=0.000 n=40
class-transformer - native
Errors 0 0 ~ ~ ~ p=1.000 n=40
Symbols 45,376 45,312 (± 0.01%) -63 (- 0.14%) 45,262 45,319 p=0.000 n=40
Types 7,573 7,198 (± 0.10%) 🟩-375 (- 4.95%) 7,061 7,219 p=0.000 n=40
Memory Used 27,739k (± 0.02%) 28,105k (± 0.02%) +366k (+ 1.32%) 28,011k 28,131k p=0.000 n=40
Memory Allocs 247,737 (± 0.05%) 249,187 (± 0.04%) +1,445 (+ 0.58%) 248,174 250,013 p=0.000 n=40
Config Time 0.001s (± 8.95%) 0.001s (± 0.41%) ~ 0.001s 0.001s p=0.448 n=40
Parse Time 0.010s (± 2.86%) 0.010s (± 3.06%) ~ 0.008s 0.012s p=0.955 n=40
Bind Time 0.003s (± 8.00%) 0.003s (± 8.28%) ~ 0.002s 0.005s p=0.821 n=40
Check Time 0.008s (± 3.80%) 0.009s (± 3.33%) 🔻+0.001s (+13.39%) 0.007s 0.011s p=0.000 n=40
Emit Time 0.008s (± 4.32%) 0.008s (± 4.18%) ~ 0.006s 0.010s p=0.799 n=40
Total Time 0.029s (± 1.59%) 0.031s (± 1.59%) 🔻+0.001s (+ 4.99%) 0.028s 0.036s p=0.000 n=40
effect - native
Errors 12 20 🔻+8 (+66.67%) ~ ~ p=0.000 n=40
Symbols 1,235,134 1,235,298 (± 0.07%) ~ 1,226,199 1,239,493 p=0.114 n=40
Types 893,436 890,568 (± 0.08%) -2,699 (- 0.30%) 882,316 893,972 p=0.000 n=40
Memory Used 941,281k (± 0.02%) 967,360k (± 0.04%) +26,224k (+ 2.79%) 962,552k 969,108k p=0.000 n=40
Memory Allocs 12,590,341 (± 0.02%) 12,979,066 (± 0.06%) +388,946 (+ 3.09%) 12,905,155 13,043,587 p=0.000 n=40
Config Time 0.002s (± 0.19%) 0.002s (± 2.38%) ~ 0.002s 0.003s p=1.000 n=40
Parse Time 0.147s (± 3.25%) 0.144s (± 1.10%) ~ 0.135s 0.159s p=0.338 n=40
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Check Time 0.876s (± 0.65%) 0.916s (± 0.88%) 🔻+0.039s (+ 4.46%) 0.875s 1.044s p=0.000 n=40
Emit Time 0.481s (± 1.13%) 0.483s (± 1.14%) ~ 0.442s 0.520s p=0.539 n=40
Total Time 1.598s (± 0.66%) 1.636s (± 0.54%) +0.036s (+ 2.27%) 1.582s 1.754s p=0.000 n=40
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=40
Symbols 3,782,394 4,962,645 (± 0.28%) 🔻+1,180,187 (+31.20%) 4,884,728 5,028,843 p=0.000 n=40
Types 1,355,778 1,871,674 (± 0.39%) 🔻+515,054 (+37.99%) 1,829,245 1,907,998 p=0.000 n=40
Memory Used 1,678,579k (± 0.06%) 2,610,884k (± 0.40%) 🔻+920,904k (+54.86%) 2,572,517k 2,676,087k p=0.000 n=40
Memory Allocs 25,530,545 (± 0.04%) 35,228,676 (± 0.40%) 🔻+9,508,321 (+37.24%) 34,819,388 36,080,193 p=0.000 n=40
Config Time 0.007s (± 4.29%) 0.007s (± 1.36%) ~ 0.006s 0.007s p=0.658 n=40
Parse Time 0.282s (± 1.57%) 0.283s (± 1.42%) ~ 0.258s 0.311s p=0.921 n=40
Bind Time 0.001s (± 0.77%) 0.001s (± 9.03%) ~ 0.001s 0.003s p=1.000 n=40
Check Time 2.979s (± 1.11%) 3.537s (± 1.39%) 🔻+0.557s (+18.69%) 3.271s 3.873s p=0.000 n=40
Emit Time 0.262s (± 2.45%) 0.294s (± 5.60%) 🔻+0.021s (+ 8.12%) 0.241s 0.423s p=0.001 n=40
Total Time 4.029s (± 1.03%) 4.661s (± 1.05%) 🔻+0.629s (+15.60%) 4.341s 5.059s p=0.000 n=40
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=40
Symbols 4,793,266 5,635,998 (± 0.10%) 🔻+843,844 (+17.60%) 5,604,127 5,667,513 p=0.000 n=40
Types 2,607,066 3,163,026 (± 0.04%) 🔻+556,245 (+21.34%) 3,151,476 3,168,495 p=0.000 n=40
Memory Used 2,797,962k (± 0.02%) 3,496,326k (± 0.04%) 🔻+698,436k (+24.96%) 3,487,621k 3,505,845k p=0.000 n=40
Memory Allocs 74,635,684 (± 0.09%) 115,891,705 (± 0.04%) 🔻+41,296,248 (+55.33%) 115,630,806 116,422,035 p=0.000 n=40
Config Time 0.018s (± 1.74%) 0.018s (± 2.97%) ~ 0.016s 0.023s p=0.740 n=40
Parse Time 0.467s (± 4.03%) 0.462s (± 2.24%) ~ 0.410s 0.602s p=0.146 n=40
Bind Time 0.149s (± 8.85%) 0.141s (± 6.13%) ~ 0.117s 0.228s p=0.460 n=40
Check Time 6.693s (± 0.56%) 5.208s (± 0.99%) 🟩-1.497s (-22.37%) 5.051s 5.671s p=0.000 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 7.377s (± 0.49%) 5.881s (± 0.89%) 🟩-1.508s (-20.44%) 5.680s 6.325s p=0.000 n=40
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=40
Symbols 1,883,060 2,487,556 (± 0.03%) 🔻+604,348 (+32.09%) 2,483,166 2,494,502 p=0.000 n=40
Types 1,158,093 1,816,618 (± 0.03%) 🔻+658,603 (+56.87%) 1,810,084 1,821,411 p=0.000 n=40
Memory Used 952,160k (± 0.01%) 1,367,122k (± 0.03%) 🔻+414,850k (+43.57%) 1,364,852k 1,370,546k p=0.000 n=40
Memory Allocs 13,417,718 (± 0.11%) 21,118,386 (± 0.06%) 🔻+7,708,561 (+57.45%) 21,015,248 21,198,435 p=0.000 n=40
Config Time 0.005s (± 3.46%) 0.005s (± 2.75%) ~ 0.005s 0.006s p=0.538 n=40
Parse Time 0.149s (± 1.65%) 0.151s (± 2.37%) ~ 0.135s 0.191s p=0.530 n=40
Bind Time 0.044s (± 7.66%) 0.043s (± 7.01%) ~ 0.035s 0.070s p=0.994 n=40
Check Time 1.372s (± 0.77%) 1.349s (± 1.16%) -0.024s (- 1.73%) 1.261s 1.434s p=0.013 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 1.589s (± 0.66%) 1.569s (± 1.00%) -0.021s (- 1.31%) 1.484s 1.677s p=0.014 n=40
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=40
Symbols 1,184,972 1,186,747 (± 0.01%) +1,802 (+ 0.15%) 1,185,378 1,187,602 p=0.000 n=40
Types 438,823 436,450 (± 0.05%) -2,353 (- 0.54%) 434,740 437,582 p=0.000 n=40
Memory Used 1,155,272k (± 0.26%) 1,176,471k (± 0.24%) +21,910k (+ 1.90%) 1,162,006k 1,196,561k p=0.000 n=40
Memory Allocs 47,316,764 (± 0.07%) 49,006,194 (± 0.07%) +1,687,540 (+ 3.57%) 48,815,535 49,247,857 p=0.000 n=40
Config Time 0.002s (±11.39%) 0.002s (± 9.19%) 🔻+0.000s (+22.47%) 0.001s 0.003s p=0.010 n=40
Parse Time 0.134s (± 1.18%) 0.134s (± 1.05%) ~ 0.125s 0.146s p=0.895 n=40
Bind Time 0.000s (±196.00%) 0.000s ~ ~ ~ p=0.330 n=40
Check Time 0.783s (± 0.51%) 0.850s (± 0.50%) 🔻+0.066s (+ 8.45%) 0.819s 0.880s p=0.000 n=40
Emit Time 0.138s (± 1.40%) 0.138s (± 1.01%) ~ 0.130s 0.154s p=0.670 n=40
Total Time 9.152s (± 0.46%) 9.778s (± 0.45%) 🔻+0.608s (+ 6.64%) 9.447s 10.101s p=0.000 n=40
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=40
Symbols 263,481 263,756 (± 0.03%) +372 (+ 0.14%) 263,130 263,933 p=0.000 n=40
Types 196,103 195,433 (± 0.08%) -625 (- 0.32%) 194,295 195,858 p=0.000 n=40
Memory Used 221,520k (± 0.02%) 227,669k (± 0.04%) +6,165k (+ 2.78%) 227,058k 228,029k p=0.000 n=40
Memory Allocs 2,387,254 (± 0.01%) 2,475,573 (± 0.03%) +88,378 (+ 3.70%) 2,469,949 2,479,319 p=0.000 n=40
Config Time 0.000s (±153.76%) 0.000s (±83.04%) ~ 0.000s 0.001s p=0.243 n=40
Parse Time 0.050s (± 2.65%) 0.050s (± 2.46%) ~ 0.042s 0.057s p=0.889 n=40
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Check Time 0.375s (± 0.78%) 0.423s (± 0.84%) 🔻+0.047s (+12.62%) 0.401s 0.460s p=0.000 n=40
Emit Time 0.050s (± 3.76%) 0.053s (± 4.02%) ~ 0.042s 0.064s p=0.050 n=40
Total Time 0.503s (± 0.79%) 0.554s (± 0.80%) 🔻+0.051s (+10.14%) 0.524s 0.594s p=0.000 n=40
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=40
Symbols 4,349,937 6,174,805 (± 0.41%) 🔻+1,814,268 (+41.71%) 6,068,109 6,410,197 p=0.000 n=40
Types 3,042,465 4,875,318 (± 0.61%) 🔻+1,820,986 (+59.85%) 4,768,994 5,130,564 p=0.000 n=40
Memory Used 2,395,150k (± 0.02%) 3,621,504k (± 0.58%) 🔻+1,221,488k (+51.00%) 3,555,964k 3,799,411k p=0.000 n=40
Memory Allocs 37,011,606 (± 0.02%) 64,019,266 (± 1.20%) 🔻+27,130,746 (+73.30%) 62,072,380 70,510,454 p=0.000 n=40
Config Time 0.003s (± 4.27%) 0.003s (± 4.27%) ~ 0.002s 0.003s p=0.391 n=40
Parse Time 0.261s (± 1.73%) 0.264s (± 1.55%) ~ 0.241s 0.304s p=0.234 n=40
Bind Time 0.092s (± 6.80%) 0.088s (± 6.61%) ~ 0.073s 0.150s p=0.595 n=40
Check Time 6.036s (± 0.71%) 6.308s (± 1.17%) 🔻+0.256s (+ 4.24%) 5.923s 6.781s p=0.000 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 6.404s (± 0.70%) 6.677s (± 1.15%) 🔻+0.261s (+ 4.08%) 6.286s 7.154s p=0.000 n=40
tanstack-router - native
Errors 1 1 ~ ~ ~ p=1.000 n=40
Symbols 570,149 620,244 (± 0.06%) 🔻+50,106 (+ 8.79%) 617,991 622,243 p=0.000 n=40
Types 396,551 471,543 (± 0.08%) 🔻+74,985 (+18.91%) 469,161 475,354 p=0.000 n=40
Memory Used 315,276k (± 0.01%) 378,708k (± 0.05%) 🔻+63,446k (+20.12%) 377,389k 380,088k p=0.000 n=40
Memory Allocs 4,327,410 (± 0.11%) 5,085,272 (± 0.08%) 🔻+759,860 (+17.56%) 5,061,617 5,117,295 p=0.000 n=40
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=40
Parse Time 0.039s (± 2.96%) 0.038s (± 2.39%) ~ 0.032s 0.045s p=0.452 n=40
Bind Time 0.013s (± 6.95%) 0.013s (± 6.64%) ~ 0.010s 0.020s p=0.863 n=40
Check Time 0.462s (± 1.23%) 0.424s (± 1.15%) 🟩-0.036s (- 7.88%) 0.394s 0.464s p=0.000 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 0.531s (± 1.09%) 0.490s (± 0.87%) 🟩-0.039s (- 7.32%) 0.462s 0.528s p=0.000 n=40
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=40
Symbols 231,607 238,524 (± 0.56%) +7,522 (+ 3.25%) 231,732 245,250 p=0.000 n=40
Types 181,163 190,165 (± 1.14%) 🔻+10,296 (+ 5.68%) 180,234 200,469 p=0.000 n=40
Memory Used 190,880k (± 0.01%) 203,099k (± 0.96%) 🔻+13,622k (+ 7.14%) 194,960k 212,236k p=0.000 n=40
Memory Allocs 1,310,247 (± 0.01%) 1,466,412 (± 1.46%) 🔻+170,054 (+12.98%) 1,381,523 1,566,923 p=0.000 n=40
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Parse Time 0.043s (± 2.44%) 0.043s (± 1.97%) ~ 0.038s 0.048s p=0.617 n=40
Bind Time 0.020s (± 3.95%) 0.020s (± 3.60%) ~ 0.016s 0.026s p=0.124 n=40
Check Time 0.293s (± 1.25%) 0.331s (± 1.26%) 🔻+0.038s (+13.11%) 0.316s 0.377s p=0.000 n=40
Emit Time 0.000s 0.101s (±33.59%) 🔻NaNs (+ ∞%) 0.000s 0.304s p=0.000 n=40
Total Time 0.363s (± 1.20%) 0.501s (± 7.01%) 🔻+0.146s (+40.10%) 0.400s 0.765s p=0.000 n=40
vscode - native
Errors 18 18 ~ ~ ~ p=1.000 n=40
Symbols 7,958,235 8,136,215 (± 0.01%) +177,910 (+ 2.24%) 8,129,447 8,145,531 p=0.000 n=40
Types 4,639,987 4,957,792 (± 0.03%) 🔻+317,509 (+ 6.84%) 4,951,215 4,970,199 p=0.000 n=40
Memory Used 5,327,683k (± 0.01%) 5,830,513k (± 0.02%) 🔻+503,039k (+ 9.44%) 5,821,609k 5,844,968k p=0.000 n=40
Memory Allocs 58,694,048 (± 0.01%) 64,806,225 (± 0.03%) 🔻+6,101,426 (+10.40%) 64,739,729 65,055,733 p=0.000 n=40
Config Time 0.024s (± 1.42%) 0.024s (± 1.07%) ~ 0.022s 0.027s p=0.696 n=40
Parse Time 0.899s (± 1.51%) 0.905s (± 1.69%) ~ 0.790s 1.010s p=0.265 n=40
Bind Time 0.313s (± 4.09%) 0.329s (± 6.49%) ~ 0.267s 0.507s p=0.739 n=40
Check Time 7.319s (± 0.53%) 5.267s (± 1.38%) 🟩-2.062s (-28.18%) 4.819s 5.741s p=0.000 n=40
Emit Time 2.173s (± 4.47%) 2.438s (± 3.37%) 🔻+0.267s (+12.30%) 1.936s 2.838s p=0.000 n=40
Total Time 10.787s (± 0.82%) 9.026s (± 0.40%) 🟩-1.748s (-16.21%) 8.702s 9.206s p=0.000 n=40
webpack - native
Errors 618 622 +4 (+ 0.65%) ~ ~ p=0.000 n=40
Symbols 884,452 1,017,624 (± 0.43%) 🔻+131,892 (+14.91%) 1,000,527 1,032,105 p=0.000 n=40
Types 622,976 750,816 (± 0.37%) 🔻+127,512 (+20.47%) 737,177 763,601 p=0.000 n=40
Memory Used 651,174k (± 0.01%) 777,337k (± 0.20%) 🔻+126,010k (+19.35%) 769,277k 784,840k p=0.000 n=40
Memory Allocs 6,083,657 (± 0.07%) 7,798,561 (± 0.26%) 🔻+1,713,912 (+28.17%) 7,696,653 7,877,198 p=0.000 n=40
Config Time 0.003s (± 2.77%) 0.003s (± 8.75%) ~ 0.003s 0.009s p=0.784 n=40
Parse Time 0.124s (± 2.34%) 0.125s (± 2.06%) ~ 0.111s 0.156s p=0.258 n=40
Bind Time 0.039s (± 4.89%) 0.040s (± 5.69%) ~ 0.031s 0.059s p=0.674 n=40
Check Time 1.070s (± 0.53%) 0.783s (± 0.97%) 🟩-0.286s (-26.75%) 0.723s 0.819s p=0.000 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 1.260s (± 0.46%) 0.976s (± 0.75%) 🟩-0.283s (-22.42%) 0.911s 1.045s p=0.000 n=40
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=40
Symbols 3,802,945 3,870,324 (± 0.05%) +67,527 (+ 1.78%) 3,857,472 3,884,880 p=0.000 n=40
Types 3,817,170 3,653,368 (± 0.03%) 🟩-163,808 (- 4.29%) 3,645,759 3,660,985 p=0.000 n=40
Memory Used 2,066,092k (± 0.00%) 2,357,515k (± 0.04%) 🔻+291,407k (+14.10%) 2,350,713k 2,364,859k p=0.000 n=40
Memory Allocs 40,630,368 (± 0.01%) 48,564,385 (± 0.02%) 🔻+7,933,130 (+19.53%) 48,516,389 48,644,041 p=0.000 n=40
Config Time 0.002s (± 0.19%) 0.002s (± 2.38%) ~ 0.002s 0.003s p=1.000 n=40
Parse Time 0.105s (± 1.55%) 0.107s (± 3.08%) ~ 0.093s 0.161s p=0.517 n=40
Bind Time 0.038s (± 7.16%) 0.039s (± 7.45%) ~ 0.031s 0.061s p=0.832 n=40
Check Time 3.764s (± 0.49%) 3.186s (± 0.83%) 🟩-0.581s (-15.43%) 3.047s 3.345s p=0.000 n=40
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=40
Total Time 3.916s (± 0.45%) 3.341s (± 0.84%) 🟩-0.578s (-14.76%) 3.188s 3.519s 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

@jakebailey
Jake Bailey (jakebailey) force-pushed the checker-work-stealing branch 5 times, most recently from b8c46ea to 60ca9ed Compare November 8, 2026 21:59
@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 8, 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.

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.
…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.
A cycle that passes through a member table in progress is computed again
as if the table had been entered first, with everything below the table
hidden. The table's own memoized computation sits just below its type
resolution, so it was hidden too, and reading the table then failed the
recomputation instead of reading the table. Which member of such a cycle
failed then depended on where the cycle was entered: a type alias read
through an index signature was circular when queried first, and a
parameter typed through a class's base was circular when its class was
checked first.

Fixes 64998
For 61721
A cycle yield recomputes a member of the cycle with the computations in
progress hidden. Reading a member table being resolved below the yield
failed the recomputation, since the table it would see is whatever part
of it has been published. A table that has published nothing is instead
resolved again from scratch inside the yield, so there is nothing
incomplete to read, and failing there reported a circularity for a
property only when its class was checked before its type was queried.

Fixes 61711
When a qualified name used as a type does not resolve, the error
suggests typeof if the name resolves as a value, which needs the type
of the value its first identifier refers to. In

    declare const n: n.T;
    declare namespace n {}

that type is the annotation being resolved. Checking the annotation
first made it the head of the cycle, and the missing member it reports
was dropped along with the other results computed from the incomplete
annotation, so it was reported only when the type of n was queried
first. The type of a value used within its own declaration can depend
on the name being resolved, so no suggestion is made there, and the
missing member is reported in every order, without a circularity error.

For 18163
Reaching the limit on the instantiation stack failed every
instantiation in progress. A computation that resolves part of a type
whenever it is first needed, like the element type of a deferred array
type, is reached inside an instantiation or not depending on who needs
it first, so whether the instantiation needing it failed as a whole
depended on order. In

    type A = A[];
    const r = ([] as A).flat(Infinity);

r was any[] when the element type of A was resolved first, but any when
the call was checked first. Reaching the limit now fails only the
instantiations in progress in the innermost computation other than of a
cached instantiation, which fail the same way wherever the computation
is reached, so r is any[] in every order, as in TypeScript 6. A result
carrying the error no longer fails an instantiation reading it, as
computing it there would fail only within it.

For 49280
A base constraint keeps how deep its own walk went, so that a walk
reusing it can tell whether computing it again there would give up.
Comparisons are about to keep the same kind of record for their
cached failures, so the record becomes a type of its own, a height,
with the checks both need.

The multiplication spreading the bits of a key over the high bits,
which several tables and filters index by, is likewise written once.
A comparison nested too deeply is truncated: 100 levels deep, where
both sides are deeply nested, or where a conditional type is deeply
nested on one side. All of these count the comparisons in progress
around it, so a result cached by one comparison could be reused inside
another that would have truncated the comparisons the result came from,
and the result then depended on which comparison ran first.

A cached failure, and a cached result that reports reliability flags
or depends on a failure through a check that truncation can change,
now keeps a summary of the comparisons below it that it depends on:
how deep they went on each side, and which recursion identities they
pushed. It is reused only where the comparisons in progress, counting
the comparison itself, could truncate none of them, and is otherwise
compared again in place. Checks that reject types that relate, or pick
among types by which relate, record the results they read, and results
depending on a comparison assumed related or truncated outside them are
not cached, or reused only where as much is pushed onto the stacks.
A cycle through such a check, such as an inference constraint check
that compares the comparison in progress again, then gives the same
answer whichever comparison in it starts first.

The recursion identities on the stacks are now kept with counts, which
also replaces scanning the stack for every comparison to find deeply
nested types.

inferFromTypeArgumentsNoInfiniteRecursion no longer reports an
excessive depth in any check order, as TypeScript 6.0 does not.
Whether a comparison is too complex depended on how many of the
results it needs were cached by comparisons made before it, so the
same assignment could be an error in one check order and not another.

Charge each reused result the results that computing it cached, and
count a comparison only too complex for those charges again with no
result cached, which decides it exactly.
Files are assigned to checkers up front, so the checker with the most
work left finishes last while the others sit idle. Results no longer
depend on which checker checks a file or which files it checked before,
so a checker that runs out of files can take one from another without
changing any output.

Each checker still starts with the files assigned to it, keeping the
locality of the assignment, and takes the file another checker would
reach last. A file stays associated with the checker that checked it,
so later requests for it reuse that checker's caches.
The checker count was fixed at 4 because which checker checked a file
could change the results, so changing it changed the output. That is no
longer the case, and with checkers taking files from each other it only
trades time for memory, so the default can follow the machine.

Checking is fastest with about one checker per CPU, until the work every
checker duplicates (library and shared types) outweighs the parallelism
another checker adds. Measured on 4 and 8 CPUs, one checker per logical
CPU was fastest for nearly every project, hyperthreads included; on 20
CPUs, 8 checkers were fastest for most projects, and only very large
programs gained up to 12-16. So the default is one checker per CPU, up
to 8, rising with the square root of the checked work up to 16, and no
more than one per 32 checked files, but at least the 4 of before when
there are as many CPUs. Files whose checking is skipped, such as
declaration files under skipLibCheck, count for nothing.

Build mode divides the CPUs among the projects it builds concurrently,
but never gives a project fewer than the 4 checkers of before, since
projects that depend on each other are built one at a time.

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 Domain: Performance Performance related For Uncommitted Bug PR for untriaged, rejected, closed or missing bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant