Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: microsoft/TypeScript
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v4.0.2
Choose a base ref
...
head repository: microsoft/TypeScript
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v4.0.3
Choose a head ref
  • 9 commits
  • 25 files changed
  • 8 contributors

Commits on Aug 26, 2020

  1. Cherry-pick PR #40118 into release-4.0 (#40134)

    Component commits:
    e1f4f9c Fix tuple name homogeneity check
    
    Co-authored-by: Wesley Wigham <t-weswig@microsoft.com>
    TypeScript Bot and weswigham authored Aug 26, 2020
    Copy the full SHA
    8890dcb View commit details

Commits on Sep 8, 2020

  1. Cherry-pick PR #40348 into release-4.0 (#40349)

    Component commits:
    3b33279 Fix call hierarchy item serialization and server tests
    
    Co-authored-by: Andrew Branch <andrew@wheream.io>
    TypeScript Bot and andrewbranch authored Sep 8, 2020
    Copy the full SHA
    3e7a8e7 View commit details

Commits on Sep 9, 2020

  1. Set stackTraceLimit to 0 in fileSystemEntryExists

    The exception thrown by Node.js's fs.statSync function contains a stack
    trace that can be expensive to compute. Since this exception isn't used
    by fileSystemEntryExists, we can safely set Error.stackTraceLimit to 0
    without a change in behavior.
    
    ---
    
    A significant performance improvement was noticed with this change while
    profiling tsserver on packages within a proprietary monorepo.
    Specifically, my team saw high self time percentages for Node.js's
    uvException and handleErrorFromBinding internal functions. These
    functions are executed within fs.statSync when it fails to find the
    given path.
    
    https://user-images.githubusercontent.com/906558/90183227-220cb800-dd81-11ea-8d61-f41f89481f46.png
    
    fs.statSync: https://github.com/nodejs/node/blob/v14.4.0/lib/fs.js#L1030-L1037
    handleErrorFromBinding: https://github.com/nodejs/node/blob/v14.4.0/lib/internal/fs/utils.js#L254-L269
    uvException: https://github.com/nodejs/node/blob/v14.4.0/lib/internal/errors.js#L390-L443
    
     ## Measurements
    
    After adding Error.stackTraceLimit = 0, we saw:
    
    - For a large configured project with 12,565 files, tsserver reached the
      projectLoadingFinish event 48.78% faster. (~46.786s vs ~31.447s)
    - For a medium project with 7,064 files, tsserver was 25.75% faster.
      (~20.897s vs ~16.618s)
    - For a small project with 796 files, tsserver was only a negligible
      3.00% faster. (~3.545s vs ~3.442)
    
    Measurements were taken on macOS 10.15.6, Node.js 14.4.0, and a recent
    master commit of TypeScript (610fa28). The average of 3 runs before and
    after this change were taken.
    
    I would normally include .cpuprofile and isolate-*-*-*.log files, but
    can't post them publicly in this case. If there's any other summaries
    the TypeScript team would be curious about I can report them.
    
     ## fs.statSync Misses
    
    Within our monorepo, the fs.statSync misses were mostly searches for
    alternative file extensions of module imports.
    
    - For node_modules imports, a lot of .ts/.tsx lookups failed until the
      .d.ts file was found.
    - Within projects with a lot of JSX files, .ts files were looked for
      before finding the .tsx version.
    - In the medium scale project mentioned above, a total of 38,515
      non-existent files were queried during createProgram.
    gluxon authored and amcasey committed Sep 9, 2020
    Copy the full SHA
    657576a View commit details

Commits on Sep 15, 2020

  1. Cherry-pick PR #40273 into release-4.0 (#40303)

    Component commits:
    2c0e01a Fix misplaced comma in auto imported specifier
    
    Co-authored-by: Andrew Branch <andrew@wheream.io>
    TypeScript Bot and andrewbranch authored Sep 15, 2020
    Copy the full SHA
    65b84e7 View commit details

Commits on Sep 16, 2020

  1. Cherry-pick PR #39924 into release-4.0

    Component commits:
    45d9eb5 place first import after header
    
    d35d719 don't insert before non-header
    jessetrinity authored and typescript-bot committed Sep 16, 2020
    Copy the full SHA
    e3301f7 View commit details
  2. Merge pull request #40444 from amcasey/Cherry40043

    Set stackTraceLimit to 0 in fileSystemEntryExists
    amcasey authored Sep 16, 2020
    Copy the full SHA
    23c77c4 View commit details
  3. Merge pull request #40595 from typescript-bot/pick/39924/release-4.0

    🤖 Pick PR #39924 (Insert auto imports after header co...) into release-4.0
    uniqueiniquity authored Sep 16, 2020
    Copy the full SHA
    1dde4bb View commit details

Commits on Sep 18, 2020

  1. Update LKG

    TypeScript Bot committed Sep 18, 2020
    Copy the full SHA
    2eb5dea View commit details
  2. Copy the full SHA
    fee3bfb View commit details

This comparison is taking too long to generate.

Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.

You can try running this command locally to see the comparison on your machine:
git diff v4.0.2...v4.0.3