GoLand

What’s next: GoLand Roadmap 2023.3

Hello, everyone! We recently released GoLand 2023.2. If you’re still using a previous version, make sure you don’t miss the update! With the new release, you get some great new features like:

  • The ability to download Go modules automatically
  • Quick-fixes for updating dependencies in go.mod
  • Refactorings for migrating function parameters and method receivers
  • errors.Is and errors.As inspections and quick-fixes
  • A whole bunch of new integrations and UX improvements

Check out this three and a half minute video to learn more about the latest improvements:

What’s new in GoLand 2023.2 review

And of course, feel free to explore it on your own! With a month-long free trial, you have plenty of time to get used to new features.

Download GoLand 2023.2

And last but not least, before we move on to the 2023.3 roadmap, we’d like to give a shout-out to the GoLand EAP users who devoted their time and effort to providing feedback and ideas. You all are simply amazing!

We would like to extend a special thanks to the following authors, whose contributions during the 2023.2 EAP were selected as the most constructive and valuable:

  • Jinwook Jeong (eligius), for identifying multiple issues and offering valuable ideas.
  • Dmitry Matrenichev (lepage), for participating actively in our issue tracker and reporting bugs in Slack.
  • Julia Niewiejska (Julia_Niewiejska), for finding quite a tricky and important bug!

Thank you for your help! We truly appreciate it. We will be in touch soon to offer you a 1-year GoLand subscription and a branded T-shirt.

The GoLand 2023.3 Roadmap 

This time we decided not to focus on specific streams but tweak the whole scope of the IDE. This work includes doing some housekeeping and fixing older issues. Though we have a lot of ground to cover in this roadmap, from AI Assistant and refactorings to performance and testing. Let’s take a closer look at each of these features.

With this edition of the roadmap, we’ll include the tickets for you to follow and drop a thumbs-up on if you want to track our progress and stay up to date with the latest news!

Pain points for users

First of all, we’re working on a couple of long-awaited improvements to make life easier.

  • GO-9008 Support for local Go installations with asdf – asdf is a CLI tool that lets you manage multiple language runtime versions. In response to feedback from the community, we’ve decided to include it in the upcoming version. With the upcoming release, GoLand will check the Go version in the .tool-versions file and use the appropriate Go version from the asdf installation folder for the selected project.
  • GO-12649 runtime.GOOS/GOARCH warning fix – GoLand cares about your code. Sometimes, it can even get a bit overprotective and return false warnings, which can be irritating. In 2023.3, we are going to add an exception that causes the Condition is always true/false inspection to ignore runtime.GOOS/GOARCH. If you are currently struggling with this warning, you can use the Suppress this inspection option.

Refactorings

Powerful refactorings are among GoLand’s most beloved features. In version 2023.3, we are planning to implement a bunch of new improvements for them:

  • GO-6262 Add method intention action for the interface – This is big! You likely have had the experience of adding a method to an interface and then watching the little green Go to Implementations button vanish simply because the implementation does not have the method yet. We are going to fix that by adding method stubs to structs that currently implement the interface.
  • GO-6302 Extract Parameter refactoring – While it’s totally true that you have to think through the parameters of a function before writing it, sometimes adding a new variable is a spur-of-the-moment decision. How cool would it be if you could just add it to the function declaration with a simple click? In the next release, you’ll be able to do just that!
  • GO-6275 Replace if-else with switch intention action – This improvement is quite straightforward. Sometimes an if statement starts growing and gets more and more checks. As it gets more complex, maintaining such code becomes a real pain. Letting the IDE do this job by replacing it with a switch statement can be a good idea, since it means you’ll no longer have to keep all the context in your head.

AI Assistant for gophers

Have you heard that AI Assistant is coming to JetBrains IDEs? The GoLand team is going to tailor it to the needs of gophers. Here is a list of features we are planning to implement in 2023.3:

  • GO-14977 AI adjustment to work properly for Go-specific code – LLMs are great, but sometimes they could benefit from the assistance of a careful developer. In this case, we are going to design the rules for code selection to guarantee the necessary chunk of code is selected and all the context is provided to the AI Assistant to improve the relevance of its answers and suggestions.
  • LLM tweaks for GoLand – With some features in the AI Assistant plugin ready to ship, we are currently working on implementations for GoLand. There are three major additions coming in 2023.3 that will help you maintain your code with minimal effort:
    • GO-14992 Write documentation – When you are in the flow, you don’t want to risk losing your momentum to write a couple lines of comments. With this feature, you can generate documentation for a function or any other chunk of code with just a couple of clicks.
    • GO-14993 Rename – We understand how hard naming can be. That’s why AI Assistant will be able to provide lots of options for names based on your code. Take a look at this demonstration in YouTrack to see the feature in action.
    • GO-14994 Explain regex – Regular expressions are generally considered hard to read. Why not just ask the AI Assistant to give you a hint about what’s happening under the hood? We hope that every developer will soon be more comfortable using the power of regular expressions!

Profiling

Testing and profiling are crucial parts of a developer’s routine, so we are working to make it as convenient as possible in GoLand:

  • GO-7101 Profiler available for regular runs – While profiling is integral to development and maintenance, there is one tricky use case for GoLand’s profiler that makes people resort to workarounds: profiling code without triggering the test run. Of course, we can just use a simple test that triggers main(), but that can be an awkward way to solve the problem. With this issue in mind, we will allow the profiler to work with programs, not just tests.
  • GO-14106 Code coverage profiles for programs. Sometimes writing tests is not the best way to check how the final build works. For example, what if you wanted to run your application and see which code is triggered in a specific coverage build to see how it works altogether? A code coverage profile is a way to conduct such an investigation, and we hope to implement support for this approach in the upcoming release.

And finally (there is no specific YouTrack issue for this), we are doing a lot of internal refactoring and code maintenance to make GoLand more maintainable, stable, and thoroughly tested.

The GoLand team is always striving to improve the lives of Go developers. However, some tasks end up becoming more complicated than we anticipated, and therefore we cannot guarantee that each of the features mentioned above will be included in the release. Feel free to check out this public dashboard to track our progress on the features coming in the next release.

If you want to report a bug or suggest a feature, we are always happy to hear from you! Feel free to submit it via our bug tracker, drop us a message in the Gophers Slack #goland channel or tweet at us @GoLandIDE.

image description