Original post

A month ago we released 2019.3. For this version, we mostly focused on giving you the most enjoyable IDE experience possible. We hope our efforts have paid off! GoLand 2019.3 consumes less CPU and performs faster than any previous versions, has more accurate code inspections, and improves its code editing features. On top of that, we’ve added new quick-fixes, enhanced the existing refactorings, and made it possible to debug your applications remotely using Mozilla rr, enable a Global File Watcher for every new project, and work with MongoDB!

If you haven’t checked out these new features yet, visit our What’s New page for detailed descriptions, GIFs, and screenshots.

Traditionally, we would like to say a big THANK YOU to the people who help us make GoLand better by sharing their product experience, feedback, and suggestions with us. The most active evaluators are getting a free 1-year subscription for GoLand and a special edition of our branded T-shirt!

Here are these wonderful folks:

Dmitry Matrenichev (YouTrack username: lepage)

Roland Illig (YouTrack username: roland.illig)

Even faster

Like the IntelliJ Platform on which GoLand is built, our IDE will keep improving startup performance and indexing speed. Here’s a short summary of things to come:

  • We are planning to unlock more IDE actions while your project is still indexing so that you can perform them immediately, without having for the indexing to finish.
  • The IDE will notify you about indexing deviations, for example when file indexing is taking too long, files are reindexed too frequently, or index rebuilds are caused by exceptions.

For more details, please read this blog post by the IntelliJ Platform team.

No UI freezes

We are migrating away from our current architectural solution, which required most operations that modify the IDE’s internal data structures to run on the UI thread. The benefit of this architecture has been its simple programming model, but the obvious downside was that the UI responsiveness suffers in many scenarios.

Next year, we are going to refactor the essential UI components and APIs of the IntelliJ Platform to employ the new threading model, in order to provide you with a smooth and lag-free UI.

Go Modules support

We are planning to evolve Go Modules support in several different ways:

GO-7632 — Support for GOSUMDB и GOPRIVATE environment variables come from Go 1.13.

GoLand will rename imports after updating the major version of the dependency.

The Rename refactoring will help you rename “module name” to “module name/v2” in the go.mod file and update all import paths in the project accordingly.

It will be possible to search for references of dependencies via Find Usages.

For replace statements, we are planning to add the following:

  • A notification about replacements with local paths in the go.mode file before you commit.
  • Code completion to choose between replace with local dependency and replace by cloning from VCS.
  • If you are cloning from a VCS, the IDE will show a dialog that suggests entering a remote URL and the target local path. After cloning is completed, GoLand will generate an appropriate “replace” directive and attach the cloned module to the project.

Code assistance

To help you code even faster, we’re going to focus on code-editing features that require little to no interaction from the user.

Here’s what you can expect:

  • Extended Basic Code Completion and Smart Code Completion.
  • New quick-fixes and Intention actions.
  • New Postfix Templates and new Live Templates.
  • The application area of Generate Constructor will be expanded beyond the limits of struct types.
  • Various improvements for Code Formatting.
  • Rename, Extract, and Implement Interface refactorings will be polished to provide the expected behavior whenever possible.

Swap any plugin in or out, on the fly

In 2019.3, you can install and uninstall any theme and keymap plugins without restarting the IDE. We are planning to expand this feature to let you load and unload many more bundled plugins without a restart.

For third-party plugins, their developers will need to make some changes to support this capability.

Cloud execution support

Previously, GoLand supported running and debugging your code on machines other than your own, or inside containers.

GoLand 2020.1 will present a general concept of a target environment that provides a way to copy files from or to it, and to start processes there. In v2020.1, the supported environments will include your local machine, a Docker container, or a machine connected over ssh.

In a more distant future, we plan to unify our existing support for Docker and remote interpreters around the new architecture. We will also provide deeper cloud integration so that you won’t need to specify the details of a specific machine to connect to if you need to run the process on a new VM in the cloud.

That’s about all! Improvement ideas often come directly from your feedback, so please send us your feature requests via the bug tracker or tweet us @GoLandIDE. Thank you!