TypeScript icon indicating copy to clipboard operation
TypeScript copied to clipboard

Skip typechecking file when generating declaraiton to get d.ts signature for incremental build

Open sheetalkamat opened this issue 1 year ago • 5 comments

  • 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

sheetalkamat avatar May 20 '24 19:05 sheetalkamat

@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

sheetalkamat avatar May 20 '24 19:05 sheetalkamat

@typescript-bot perf test this faster

jakebailey avatar May 20 '24 22:05 jakebailey

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

Command Status Results
perf test this faster ✅ Started 👀 Results

typescript-bot avatar May 20 '24 22:05 typescript-bot

@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
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • 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:

Download Benchmarks

typescript-bot avatar May 20 '24 23:05 typescript-bot

Is this the winning PR or is #58593 still something to consider? Just checking before I review...

jakebailey avatar May 21 '24 00:05 jakebailey

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.

jakebailey avatar May 21 '24 18:05 jakebailey

Yes it is guaranteed to be dts only emit as "forceDtsEmit" is internal on program.emit and used only by builder

sheetalkamat avatar May 21 '24 19:05 sheetalkamat

Isn't it public via getEmitOutput #34495? Or does that not matter?

jakebailey avatar May 21 '24 19:05 jakebailey

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.

sheetalkamat avatar May 21 '24 19:05 sheetalkamat