Early Access Program

WebStorm 2017.3 EAP, 173.3531: faster indexing and improvements in VCS

The new WebStorm 2017.3 Early Preview build (173.3531.1) is now available.

You can update via Toolbox App, or download the build here and install it beside your stable WebStorm version.


Download WebStorm 2017.3 EAP

To learn more about all the new features added in earlier WebStorm 2017.3 EAP builds, please check out these blog posts.

Optimizing project indexing

As you may know, to provide code completion and navigation WebStorm has to analyze the project sources. This process is called indexing. It happens when you open the project for the first time, install the project’s dependencies, update from a version control or change the branches, or simply add new files to the project.

There are two things that affect the indexing time: 1. The amount of data that the IDE needs to index; and 2. The actual speed of processing each file. For every WebStorm release, we are making many small and big improvements on the both fronts. This time we decided to tell you a bit more about what’s been done in WebStorm 2017.3.

Reducing the number of indexed files

Here what’s been done:

  • We’ve made some optimizations for the packages required for an Angular project. The biggest one was the switch from indexing the compiled JavaScript files to using the metadata.json files for the Angular packages. For the projects generated with Angular CLI, it allowed us to cut about 2MB of files from indexing.
  • We’ve switched from using the custom definition files for the standard JavaScript and DOM APIs to using the TypeScript type declarations files. This gives us a small decrease to the indexed file size.
  • We’ve introduced pre-built indices: this allowed us to ship some index information right with the IDE distribution. Right now it’s done only for the standard JavaScript APIs that we’ve mentioned above, but we plan to extend it further in the future.

Indexing speed

Quite often in the CPU snapshots that our users send to us we see that the indexing is affected by the performance of the lexer. The lexer splits input files into a stream of tokens and it is used for many IDE subsystems, including indexing and syntax highlighting.

In WebStorm 2017.3 we’ve experimented with using separate lexers for every JavaScript language level (e.g. ES5.1 or ES6) instead of just one, more general, lexer. These lexers are generated automatically from a template. This change greatly reduced the number of conditions used in the lexer and the lookahead during lexing, which helped JVM optimize the main lexing procedure more aggressively. As a result we got about a 10% decrease in the indexing and highlighting time.

As we’ve already said, we are constantly working on various performance improvements and optimizations, and we don’t plan to stop here. While some changes that we make are more general, there are a huge number of changes that are made to address some specific issues that appear in some specific project configurations. That is why we are really grateful when you send us as much diagnostic data as possible when you experience any performance issues.

Improvements in VCS integration

WebStorm 2017.3 also brings lots of improvements in the version control integration. You may have probably already noticed some of these changes since they have been available for a couple of weeks now.

Working with multiple branches has become better. When you switch between branches, the IDE preserves your workspace: the opened files, the current run configuration, and the breakpoints. The workspace associated with a branch will be automatically restored when you switch back to that branch.

branches

Changelists can now be renamed in the Shelf tab. It is also possible to shelve changes using drag-and-drop: drag a changelist from the Local Changes tab to the Shelf tab, and soon after the Shelf tab will be activated.

Drag-and-drop a changelist from the Shelf tab to the Local Changes tab, and the IDE will let you select a changelist to put it into.

You can find a few more details about these improvements in the IntelliJ IDEA’s blog post.

You can find a list of all addressed issues in the Release notes.

Please share your feedback and report issues on our tracker. Thank you!

WebStorm Team

image description