Improve inference for context sensitive functions within reverse mapped types
it's an extension of the algorithm introduced in https://github.com/microsoft/TypeScript/pull/48538 closes https://github.com/microsoft/TypeScript/issues/53018 fixes https://github.com/microsoft/TypeScript/issues/48798
@typescript-bot test it @typescript-bot pack this
Starting jobs; this comment will be updated as builds start and complete.
| Command | Status | Results |
|---|---|---|
pack this |
✅ Started | ✅ Results |
test top400 |
✅ Started | ✅ Results |
user test this |
✅ Started | ✅ Results |
run dt |
✅ Started | ✅ Results |
perf test this faster |
✅ Started | 👀 Results |
Hey @jakebailey, I've packed this into an installable tgz. You can install it for testing by referencing it in your package.json like so:
{
"devDependencies": {
"typescript": "https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/_apis/build/builds/166623/artifacts?artifactName=tgz&fileId=D5535CEF730027ECCAE923707D8DBA2C2406C90B822EBB402EE97C99CB6F116402&fileName=/typescript-6.0.0-insiders.20251129.tgz"
}
}
and then running npm install.
There is also a playground for this build and an npm module you can use via "typescript": "npm:@typescript-deploys/[email protected]".;
Hey @jakebailey, the results of running the DT tests are ready.
Everything looks the same!
@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 - node (v18.15.0, x64) | ||||||
| Errors | 1 | 1 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 62,370 | 62,370 | ~ | ~ | ~ | p=1.000 n=6 |
| Types | 50,386 | 50,386 | ~ | ~ | ~ | p=1.000 n=6 |
| Memory used | 195,162k (± 0.93%) | 195,598k (± 0.81%) | ~ | 192,390k | 196,419k | p=0.810 n=6 |
| Parse Time | 1.59s (± 1.57%) | 1.61s (± 1.45%) | ~ | 1.58s | 1.64s | p=0.686 n=6 |
| Bind Time | 0.91s (± 0.92%) | 0.91s (± 1.70%) | ~ | 0.89s | 0.93s | p=0.667 n=6 |
| Check Time | 12.00s (± 0.64%) | 11.98s (± 0.65%) | ~ | 11.85s | 12.08s | p=0.573 n=6 |
| Emit Time | 3.44s (± 4.25%) | 3.50s (± 3.28%) | ~ | 3.34s | 3.60s | p=0.377 n=6 |
| Total Time | 17.94s (± 0.59%) | 17.99s (± 0.98%) | ~ | 17.66s | 18.17s | p=0.378 n=6 |
| angular-1 - node (v18.15.0, x64) | ||||||
| Errors | 2 | 2 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 956,047 | 956,050 | +3 (+ 0.00%) | ~ | ~ | p=0.001 n=6 |
| Types | 415,881 | 415,884 | +3 (+ 0.00%) | ~ | ~ | p=0.001 n=6 |
| Memory used | 1,255,061k (± 0.01%) | 1,255,019k (± 0.00%) | ~ | 1,254,933k | 1,255,090k | p=0.378 n=6 |
| Parse Time | 6.55s (± 0.63%) | 6.54s (± 0.83%) | ~ | 6.48s | 6.60s | p=1.000 n=6 |
| Bind Time | 1.96s (± 0.26%) | 1.97s (± 0.26%) | ~ | 1.96s | 1.97s | p=0.311 n=6 |
| Check Time | 32.42s (± 0.52%) | 32.37s (± 0.32%) | ~ | 32.24s | 32.53s | p=0.423 n=6 |
| Emit Time | 14.89s (± 0.40%) | 14.90s (± 0.36%) | ~ | 14.85s | 14.97s | p=0.748 n=6 |
| Total Time | 55.82s (± 0.34%) | 55.77s (± 0.29%) | ~ | 55.61s | 55.99s | p=0.688 n=6 |
| mui-docs - node (v18.15.0, x64) | ||||||
| Errors | 0 | 0 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 2,724,073 | 2,724,073 | ~ | ~ | ~ | p=1.000 n=6 |
| Types | 937,413 | 937,413 | ~ | ~ | ~ | p=1.000 n=6 |
| Memory used | 3,053,157k (± 0.00%) | 3,053,174k (± 0.00%) | ~ | 3,053,006k | 3,053,275k | p=0.575 n=6 |
| Parse Time | 8.58s (± 0.19%) | 8.60s (± 0.15%) | ~ | 8.58s | 8.62s | p=0.188 n=6 |
| Bind Time | 2.33s (± 0.58%) | 2.33s (± 0.35%) | ~ | 2.32s | 2.34s | p=0.604 n=6 |
| Check Time | 93.04s (± 0.43%) | 93.37s (± 0.51%) | ~ | 93.05s | 94.31s | p=0.128 n=6 |
| Emit Time | 0.31s (± 1.68%) | 0.31s (± 1.68%) | ~ | 0.30s | 0.31s | p=1.000 n=6 |
| Total Time | 104.26s (± 0.38%) | 104.60s (± 0.45%) | ~ | 104.30s | 105.55s | p=0.199 n=6 |
| self-build-src - node (v18.15.0, x64) | ||||||
| Errors | 0 | 0 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 1,251,545 | 1,251,621 | +76 (+ 0.01%) | ~ | ~ | p=0.001 n=6 |
| Types | 259,756 | 259,795 | +39 (+ 0.02%) | ~ | ~ | p=0.001 n=6 |
| Memory used | 3,003,450k (± 9.90%) | 3,003,455k (± 9.88%) | ~ | 2,397,253k | 3,125,558k | p=0.873 n=6 |
| Parse Time | 6.57s (± 0.68%) | 6.59s (± 1.12%) | ~ | 6.47s | 6.68s | p=0.230 n=6 |
| Bind Time | 2.20s (± 1.30%) | 2.20s (± 1.42%) | ~ | 2.18s | 2.26s | p=0.518 n=6 |
| Check Time | 42.87s (± 0.28%) | 42.96s (± 0.49%) | ~ | 42.71s | 43.25s | p=0.575 n=6 |
| Emit Time | 3.44s (± 3.66%) | 3.47s (± 2.61%) | ~ | 3.34s | 3.62s | p=0.470 n=6 |
| Total Time | 55.08s (± 0.39%) | 55.23s (± 0.44%) | ~ | 54.95s | 55.60s | p=0.378 n=6 |
| self-build-src-public-api - node (v18.15.0, x64) | ||||||
| Errors | 0 | 0 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 1,251,545 | 1,251,621 | +76 (+ 0.01%) | ~ | ~ | p=0.001 n=6 |
| Types | 259,756 | 259,795 | +39 (+ 0.02%) | ~ | ~ | p=0.001 n=6 |
| Memory used | 2,459,270k (± 0.01%) | 2,459,858k (± 0.02%) | +588k (+ 0.02%) | 2,459,368k | 2,460,443k | p=0.020 n=6 |
| Parse Time | 5.32s (± 1.41%) | 5.34s (± 0.72%) | ~ | 5.31s | 5.40s | p=0.748 n=6 |
| Bind Time | 1.88s (± 1.45%) | 1.88s (± 0.45%) | ~ | 1.87s | 1.89s | p=0.560 n=6 |
| Check Time | 35.59s (± 0.35%) | 35.57s (± 0.26%) | ~ | 35.44s | 35.69s | p=0.936 n=6 |
| Emit Time | 3.02s (± 1.40%) | 3.06s (± 1.91%) | ~ | 2.99s | 3.14s | p=0.230 n=6 |
| Total Time | 45.82s (± 0.36%) | 45.85s (± 0.11%) | ~ | 45.81s | 45.94s | p=0.471 n=6 |
| self-compiler - node (v18.15.0, x64) | ||||||
| Errors | 0 | 0 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 264,177 | 264,231 | +54 (+ 0.02%) | ~ | ~ | p=0.001 n=6 |
| Types | 103,979 | 104,018 | +39 (+ 0.04%) | ~ | ~ | p=0.001 n=6 |
| Memory used | 443,114k (± 0.01%) | 443,188k (± 0.01%) | +74k (+ 0.02%) | 443,142k | 443,231k | p=0.008 n=6 |
| Parse Time | 2.84s (± 0.48%) | 2.84s (± 0.73%) | ~ | 2.82s | 2.87s | p=0.508 n=6 |
| Bind Time | 1.15s (± 0.35%) | 1.16s (± 0.71%) | ~ | 1.15s | 1.17s | p=0.248 n=6 |
| Check Time | 16.04s (± 0.37%) | 16.03s (± 0.23%) | ~ | 15.97s | 16.06s | p=0.806 n=6 |
| Emit Time | 1.32s (± 1.39%) | 1.33s (± 1.16%) | ~ | 1.32s | 1.36s | p=0.459 n=6 |
| Total Time | 21.36s (± 0.32%) | 21.36s (± 0.25%) | ~ | 21.29s | 21.42s | p=0.872 n=6 |
| ts-pre-modules - node (v18.15.0, x64) | ||||||
| Errors | 72 | 72 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 225,386 | 225,386 | ~ | ~ | ~ | p=1.000 n=6 |
| Types | 94,304 | 94,304 | ~ | ~ | ~ | p=1.000 n=6 |
| Memory used | 370,129k (± 0.03%) | 370,087k (± 0.04%) | ~ | 369,903k | 370,314k | p=0.471 n=6 |
| Parse Time | 2.82s (± 0.73%) | 2.86s (± 0.78%) | +0.04s (+ 1.30%) | 2.83s | 2.89s | p=0.029 n=6 |
| Bind Time | 1.66s (± 0.83%) | 1.64s (± 1.05%) | ~ | 1.62s | 1.66s | p=0.144 n=6 |
| Check Time | 16.61s (± 0.28%) | 16.54s (± 0.38%) | ~ | 16.48s | 16.62s | p=0.089 n=6 |
| Emit Time | 0.00s (±244.70%) | 0.00s | ~ | ~ | ~ | p=0.405 n=6 |
| Total Time | 21.09s (± 0.31%) | 21.04s (± 0.22%) | ~ | 20.97s | 21.10s | p=0.148 n=6 |
| vscode - node (v18.15.0, x64) | ||||||
| Errors | 11 | 11 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 4,068,329 | 4,068,331 | +2 (+ 0.00%) | ~ | ~ | p=0.001 n=6 |
| Types | 1,281,534 | 1,281,577 | +43 (+ 0.00%) | ~ | ~ | p=0.001 n=6 |
| Memory used | 3,854,254k (± 0.00%) | 3,854,241k (± 0.00%) | ~ | 3,854,161k | 3,854,313k | p=0.748 n=6 |
| Parse Time | 15.66s (± 0.41%) | 15.71s (± 0.59%) | ~ | 15.62s | 15.89s | p=0.334 n=6 |
| Bind Time | 5.29s (± 0.19%) | 5.31s (± 2.51%) | ~ | 5.23s | 5.58s | p=0.326 n=6 |
| Check Time | 112.41s (± 2.10%) | 112.44s (± 1.82%) | ~ | 109.07s | 114.82s | p=1.000 n=6 |
| Emit Time | 41.77s (±12.02%) | 39.01s (± 0.70%) | ~ | 38.77s | 39.54s | p=0.298 n=6 |
| Total Time | 175.13s (± 3.46%) | 172.48s (± 1.16%) | ~ | 169.50s | 175.24s | p=0.471 n=6 |
| webpack - node (v18.15.0, x64) | ||||||
| Errors | 40 | 40 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 379,892 | 379,892 | ~ | ~ | ~ | p=1.000 n=6 |
| Types | 166,631 | 166,631 | ~ | ~ | ~ | p=1.000 n=6 |
| Memory used | 540,036k (± 0.02%) | 540,070k (± 0.01%) | ~ | 539,977k | 540,139k | p=0.575 n=6 |
| Parse Time | 4.70s (± 0.90%) | 4.70s (± 1.01%) | ~ | 4.61s | 4.75s | p=0.936 n=6 |
| Bind Time | 2.03s (± 1.41%) | 2.05s (± 1.10%) | ~ | 2.02s | 2.08s | p=0.629 n=6 |
| Check Time | 22.90s (± 0.27%) | 22.93s (± 0.41%) | ~ | 22.81s | 23.07s | p=0.629 n=6 |
| Emit Time | 0.00s | 0.00s | ~ | ~ | ~ | p=1.000 n=6 |
| Total Time | 29.63s (± 0.19%) | 29.66s (± 0.28%) | ~ | 29.57s | 29.81s | p=0.572 n=6 |
| xstate-main - node (v18.15.0, x64) | ||||||
| Errors | 30 | 36 | 🔻+6 (+20.00%) | ~ | ~ | p=0.001 n=6 |
| Symbols | 690,397 | 690,751 | +354 (+ 0.05%) | ~ | ~ | p=0.001 n=6 |
| Types | 208,790 | 208,845 | +55 (+ 0.03%) | ~ | ~ | p=0.001 n=6 |
| Memory used | 586,176k (± 0.03%) | 586,661k (± 0.02%) | +485k (+ 0.08%) | 586,492k | 586,762k | p=0.005 n=6 |
| Parse Time | 4.17s (± 0.66%) | 4.16s (± 0.70%) | ~ | 4.13s | 4.20s | p=0.517 n=6 |
| Bind Time | 1.40s (± 1.48%) | 1.40s (± 1.60%) | ~ | 1.38s | 1.44s | p=0.806 n=6 |
| Check Time | 20.54s (± 1.66%) | 20.54s (± 1.60%) | ~ | 20.26s | 20.97s | p=1.000 n=6 |
| Emit Time | 0.01s (±109.43%) | 0.00s (±244.70%) | ~ | 0.00s | 0.01s | p=0.282 n=6 |
| Total Time | 26.11s (± 1.25%) | 26.11s (± 1.34%) | ~ | 25.80s | 26.60s | p=0.810 n=6 |
- node (v18.15.0, x64)
- Compiler-Unions - node (v18.15.0, x64)
- angular-1 - node (v18.15.0, x64)
- mui-docs - node (v18.15.0, x64)
- self-build-src - node (v18.15.0, x64)
- self-build-src-public-api - node (v18.15.0, x64)
- self-compiler - node (v18.15.0, x64)
- ts-pre-modules - node (v18.15.0, x64)
- vscode - node (v18.15.0, x64)
- webpack - node (v18.15.0, x64)
- xstate-main - node (v18.15.0, x64)
| Benchmark | Name | Iterations |
|---|---|---|
| Current | pr | 6 |
| Baseline | baseline | 6 |
Developer Information:
@jakebailey Here are the results of running the user tests with tsc comparing main and refs/pull/54029/merge:
There were infrastructure failures potentially unrelated to your change:
- 1 instance of "Git clone failed"
Otherwise...
Everything looks good!
@jakebailey Here are the results of running the top 400 repos with tsc comparing main and refs/pull/54029/merge:
Everything looks good!