Skip typechecking file when generating declaraiton to get d.ts signature for incremental build
- Skips typechecking when emitting d.ts for determining if signature of the file has changed.
- Sets cancellation token for emitting files to ensure that it is cancellable esp since files may not be type checked
@weswigham i tried passing noCheck equivalent when running emit for dts emit and i see few tests failing. i have commented on each but if you can take a look and see what we can do for those scenarios that would be great. Thanks
@typescript-bot perf test this faster
Starting jobs; this comment will be updated as builds start and complete.
| Command | Status | Results |
|---|---|---|
perf test this faster |
✅ Started | 👀 Results |
@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 | 30 | 30 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 62,154 | 62,154 | ~ | ~ | ~ | p=1.000 n=6 |
| Types | 50,248 | 50,248 | ~ | ~ | ~ | p=1.000 n=6 |
| Memory used | 192,192k (± 0.01%) | 192,800k (± 0.74%) | +608k (+ 0.32%) | 192,188k | 195,727k | p=0.030 n=6 |
| Parse Time | 1.28s (± 1.68%) | 1.27s (± 2.01%) | ~ | 1.25s | 1.32s | p=0.325 n=6 |
| Bind Time | 0.72s | 0.72s | ~ | ~ | ~ | p=1.000 n=6 |
| Check Time | 9.52s (± 0.29%) | 9.53s (± 0.39%) | ~ | 9.49s | 9.59s | p=0.806 n=6 |
| Emit Time | 2.66s (± 0.50%) | 2.63s (± 0.89%) | -0.04s (- 1.38%) | 2.58s | 2.64s | p=0.004 n=6 |
| Total Time | 14.19s (± 0.28%) | 14.14s (± 0.27%) | ~ | 14.10s | 14.21s | p=0.063 n=6 |
| angular-1 - node (v18.15.0, x64) | ||||||
| Errors | 5 | 5 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 944,110 | 944,110 | ~ | ~ | ~ | p=1.000 n=6 |
| Types | 407,140 | 407,140 | ~ | ~ | ~ | p=1.000 n=6 |
| Memory used | 1,222,159k (± 0.00%) | 1,222,121k (± 0.01%) | ~ | 1,222,000k | 1,222,166k | p=0.470 n=6 |
| Parse Time | 6.79s (± 0.58%) | 6.79s (± 0.87%) | ~ | 6.74s | 6.89s | p=1.000 n=6 |
| Bind Time | 1.87s (± 0.73%) | 1.87s (± 0.56%) | ~ | 1.85s | 1.88s | p=0.249 n=6 |
| Check Time | 31.27s (± 0.39%) | 31.30s (± 0.34%) | ~ | 31.19s | 31.46s | p=1.000 n=6 |
| Emit Time | 14.69s (± 0.71%) | 14.78s (± 0.51%) | ~ | 14.69s | 14.89s | p=0.127 n=6 |
| Total Time | 54.63s (± 0.29%) | 54.74s (± 0.11%) | ~ | 54.67s | 54.83s | p=0.296 n=6 |
| mui-docs - node (v18.15.0, x64) | ||||||
| Errors | 5 | 5 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 1,979,156 | 1,979,156 | ~ | ~ | ~ | p=1.000 n=6 |
| Types | 882,049 | 882,049 | ~ | ~ | ~ | p=1.000 n=6 |
| Memory used | 1,885,000k (± 0.00%) | 1,885,028k (± 0.00%) | ~ | 1,884,960k | 1,885,081k | p=0.336 n=6 |
| Parse Time | 6.78s (± 0.55%) | 6.77s (± 0.43%) | ~ | 6.74s | 6.80s | p=0.745 n=6 |
| Bind Time | 2.29s (± 0.71%) | 2.28s (± 0.45%) | ~ | 2.27s | 2.30s | p=0.249 n=6 |
| Check Time | 60.43s (± 0.27%) | 60.30s (± 0.21%) | ~ | 60.10s | 60.45s | p=0.261 n=6 |
| Emit Time | 0.14s (± 2.88%) | 0.14s (± 2.88%) | ~ | 0.14s | 0.15s | p=1.000 n=6 |
| Total Time | 69.64s (± 0.22%) | 69.50s (± 0.14%) | ~ | 69.34s | 69.60s | p=0.127 n=6 |
| self-build-src - node (v18.15.0, x64) | ||||||
| Errors | 0 | 0 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 1,222,772 | 1,222,880 | +108 (+ 0.01%) | ~ | ~ | p=0.001 n=6 |
| Types | 260,022 | 260,033 | +11 (+ 0.00%) | ~ | ~ | p=0.001 n=6 |
| Memory used | 2,338,865k (± 0.04%) | 2,338,979k (± 0.03%) | ~ | 2,338,373k | 2,340,173k | p=0.471 n=6 |
| Parse Time | 4.98s (± 1.38%) | 5.03s (± 0.74%) | ~ | 4.99s | 5.08s | p=0.199 n=6 |
| Bind Time | 1.89s (± 0.86%) | 1.89s (± 0.75%) | ~ | 1.87s | 1.91s | p=0.744 n=6 |
| Check Time | 33.83s (± 0.41%) | 33.80s (± 0.43%) | ~ | 33.54s | 33.93s | p=1.000 n=6 |
| Emit Time | 2.68s (± 2.44%) | 2.68s (± 1.86%) | ~ | 2.60s | 2.75s | p=0.936 n=6 |
| Total Time | 43.40s (± 0.37%) | 43.42s (± 0.23%) | ~ | 43.31s | 43.54s | p=0.810 n=6 |
| self-build-src-public-api - node (v18.15.0, x64) | ||||||
| Errors | 0 | 0 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 1,222,772 | 1,222,880 | +108 (+ 0.01%) | ~ | ~ | p=0.001 n=6 |
| Types | 260,022 | 260,033 | +11 (+ 0.00%) | ~ | ~ | p=0.001 n=6 |
| Memory used | 2,557,479k (±13.60%) | 2,415,525k (± 0.05%) | ~ | 2,413,955k | 2,417,253k | p=0.936 n=6 |
| Parse Time | 7.78s (± 1.48%) | 7.76s (± 1.03%) | ~ | 7.60s | 7.82s | p=0.810 n=6 |
| Bind Time | 2.49s (± 0.97%) | 2.51s (± 0.89%) | ~ | 2.49s | 2.54s | p=0.147 n=6 |
| Check Time | 49.88s (± 0.69%) | 49.79s (± 0.39%) | ~ | 49.51s | 49.98s | p=1.000 n=6 |
| Emit Time | 3.92s (± 2.95%) | 3.91s (± 3.15%) | ~ | 3.80s | 4.10s | p=0.810 n=6 |
| Total Time | 64.07s (± 0.65%) | 63.99s (± 0.17%) | ~ | 63.83s | 64.14s | p=0.575 n=6 |
| self-compiler - node (v18.15.0, x64) | ||||||
| Errors | 0 | 0 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 257,595 | 257,626 | +31 (+ 0.01%) | ~ | ~ | p=0.001 n=6 |
| Types | 104,862 | 104,872 | +10 (+ 0.01%) | ~ | ~ | p=0.001 n=6 |
| Memory used | 426,567k (± 0.01%) | 426,592k (± 0.01%) | ~ | 426,480k | 426,648k | p=0.471 n=6 |
| Parse Time | 3.37s (± 0.62%) | 3.37s (± 0.35%) | ~ | 3.35s | 3.38s | p=0.744 n=6 |
| Bind Time | 1.32s (± 0.91%) | 1.33s (± 0.61%) | ~ | 1.31s | 1.33s | p=0.599 n=6 |
| Check Time | 17.93s (± 0.37%) | 17.94s (± 0.44%) | ~ | 17.85s | 18.04s | p=0.872 n=6 |
| Emit Time | 1.38s (± 1.83%) | 1.36s (± 0.90%) | ~ | 1.35s | 1.38s | p=0.254 n=6 |
| Total Time | 24.00s (± 0.28%) | 24.00s (± 0.36%) | ~ | 23.88s | 24.11s | p=0.936 n=6 |
| ts-pre-modules - node (v18.15.0, x64) | ||||||
| Errors | 35 | 35 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 224,575 | 224,575 | ~ | ~ | ~ | p=1.000 n=6 |
| Types | 93,785 | 93,785 | ~ | ~ | ~ | p=1.000 n=6 |
| Memory used | 369,899k (± 0.02%) | 369,889k (± 0.03%) | ~ | 369,709k | 370,021k | p=0.873 n=6 |
| Parse Time | 2.85s (± 1.21%) | 2.84s (± 0.96%) | ~ | 2.81s | 2.88s | p=0.327 n=6 |
| Bind Time | 1.58s (± 0.93%) | 1.58s (± 0.53%) | ~ | 1.58s | 1.60s | p=0.358 n=6 |
| Check Time | 15.65s (± 0.31%) | 15.70s (± 0.32%) | ~ | 15.61s | 15.76s | p=0.090 n=6 |
| Emit Time | 0.00s | 0.00s | ~ | ~ | ~ | p=1.000 n=6 |
| Total Time | 20.09s (± 0.28%) | 20.12s (± 0.27%) | ~ | 20.05s | 20.20s | p=0.415 n=6 |
| vscode - node (v18.15.0, x64) | ||||||
| Errors | 0 | 0 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 2,825,740 | 2,825,740 | ~ | ~ | ~ | p=1.000 n=6 |
| Types | 958,540 | 958,540 | ~ | ~ | ~ | p=1.000 n=6 |
| Memory used | 3,000,009k (± 0.00%) | 3,000,009k (± 0.00%) | ~ | 2,999,958k | 3,000,066k | p=0.936 n=6 |
| Parse Time | 13.81s (± 0.17%) | 13.81s (± 0.40%) | ~ | 13.73s | 13.89s | p=0.936 n=6 |
| Bind Time | 4.21s (± 2.64%) | 4.15s (± 0.35%) | ~ | 4.13s | 4.17s | p=0.934 n=6 |
| Check Time | 73.60s (± 0.52%) | 74.16s (± 1.86%) | ~ | 73.32s | 76.94s | p=0.575 n=6 |
| Emit Time | 23.55s (± 1.06%) | 22.71s (± 6.78%) | ~ | 19.64s | 23.66s | p=0.230 n=6 |
| Total Time | 115.17s (± 0.28%) | 114.82s (± 0.27%) | ~ | 114.48s | 115.37s | p=0.128 n=6 |
| webpack - node (v18.15.0, x64) | ||||||
| Errors | 0 | 0 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 265,866 | 265,866 | ~ | ~ | ~ | p=1.000 n=6 |
| Types | 108,401 | 108,401 | ~ | ~ | ~ | p=1.000 n=6 |
| Memory used | 410,539k (± 0.01%) | 410,567k (± 0.01%) | ~ | 410,511k | 410,631k | p=0.173 n=6 |
| Parse Time | 4.75s (± 0.80%) | 4.76s (± 0.79%) | ~ | 4.71s | 4.81s | p=0.466 n=6 |
| Bind Time | 2.06s (± 1.18%) | 2.05s (± 0.66%) | ~ | 2.04s | 2.07s | p=0.934 n=6 |
| Check Time | 20.96s (± 0.43%) | 20.95s (± 0.29%) | ~ | 20.89s | 21.03s | p=0.936 n=6 |
| Emit Time | 0.00s | 0.00s | ~ | ~ | ~ | p=1.000 n=6 |
| Total Time | 27.75s (± 0.27%) | 27.78s (± 0.24%) | ~ | 27.69s | 27.85s | p=0.748 n=6 |
| xstate-main - node (v18.15.0, x64) | ||||||
| Errors | 0 | 0 | ~ | ~ | ~ | p=1.000 n=6 |
| Symbols | 524,654 | 524,654 | ~ | ~ | ~ | p=1.000 n=6 |
| Types | 178,920 | 178,920 | ~ | ~ | ~ | p=1.000 n=6 |
| Memory used | 462,708k (± 0.02%) | 462,732k (± 0.02%) | ~ | 462,599k | 462,788k | p=0.936 n=6 |
| Parse Time | 3.90s (± 0.39%) | 3.90s (± 0.39%) | ~ | 3.88s | 3.92s | p=1.000 n=6 |
| Bind Time | 1.43s (± 0.58%) | 1.45s (± 0.84%) | ~ | 1.43s | 1.46s | p=0.093 n=6 |
| Check Time | 22.54s (± 0.83%) | 22.49s (± 0.64%) | ~ | 22.33s | 22.68s | p=0.575 n=6 |
| Emit Time | 0.00s | 0.00s | ~ | ~ | ~ | p=1.000 n=6 |
| Total Time | 27.86s (± 0.68%) | 27.83s (± 0.48%) | ~ | 27.72s | 28.04s | p=0.574 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:
Is this the winning PR or is #58593 still something to consider? Just checking before I review...
I don't think that it is guaranteed; I almost made the playground always set forceDtsEmit because it always needs to show it (playground used to crash on dts errors), though I think I actually made it conditional in the current version.
Yes it is guaranteed to be dts only emit as "forceDtsEmit" is internal on program.emit and used only by builder
Isn't it public via getEmitOutput #34495? Or does that not matter?
LS.. compile on save.. forgot about that. :( i will upate the condition for now to check if its emitOnlyDts and forceDtsEmit to be true which we can later update in https://github.com/microsoft/TypeScript/pull/58364 to remove emitOnlyDts part.