The Way to Go: JetBrains GoLand IDE Hits the Market

It has always fascinated us to see how fast the developer industry is evolving. If you watch it long enough, you’ll see new products and technologies join a developer’s essential toolset every year. No matter how effective or efficient a programming language or framework is, an even better way of doing things is bound to be discovered or invented. With this diversity of technologies, it’s vital for us at JetBrains to keep improving the one thing that matters most: Developer Experience.

Last winter we announced we were building a new Go IDE on top of IntelliJ Platform which we codenamed Gogland. Today we’ve reached a special milestone and are happy to report that this IDE finally hits the market as GoLand and is available for download and purchase!

If you use IntelliJ IDEA Ultimate, you can take advantage of GoLand’s functionality inside IntelliJ IDEA via this plugin.

Functionality

GoLand is aimed at offering the same level of developer experience for Go as PyCharm does for Python or IntelliJ IDEA does for Java. GoLand provides clever completion, on-the-fly inspections and quick-fixes, navigation and automated refactorings – all packed together inside an ergonomic environment.

In addition to Go-specific in-editor coding assistance, the IDE offers a built-in test runner, test coverage, and a debugger. Other integrated tools include support for Git, Docker, databases, a terminal, and many more. Finally, GoLand fully supports front-end development with dedicated coding assistance for JavaScript, TypeScript, React, Vue.js, Angular, and other technologies.

In case you’ve heard the early announcement but haven’t followed the recent progress, take a look at the latest EAP news or check out GoLand’s website.

GoLand 2017.3 is officially released but this is only the beginning. We are going to keep improving every part of the IDE including its inspections, refactorings, the debugger, and everything else. If you have a feature request or a bug report, please make sure to file it into our issue tracker or simply tweet @GoLandIDE.

What is the licensing model?

GoLand uses the standard JetBrains licensing model: there are subscriptions available for corporate and individual customers, with monthly and yearly payment options. Using your subscription continuously helps you save up to 40% off the standard price for your third year and onwards. In addition to standalone licensing, GoLand is also part of the All Products pack along with other JetBrains IDEs and .NET tools.

To learn more about pricing, get a quote, or apply for a complimentary license, see GoLand’s Buy page. Or just try GoLand free for 30 days at any moment.

GoLand is available free for selected groups including students, teachers, and non-commercial Open Source projects.

How frequent are the updates?

Major updates for GoLand will be released 3 times per year, same as for our other IDEs: in Spring, Summer and Winter. Minor updates will be more frequent and will still be available should you ever decide to cancel your subscription.

Your JetBrains GoLand Team
The Way to Go

Posted in News, Releases | 16 Comments

GoLand EAP 20: Go Build Run Configuration and Other Improvements

Hurray! A fresh GoLand EAP is now out. One of the most notable changes in this update is a new type of run configuration: Go Build. This run configuration replaces the Go Application run configuration, and it basically runs the Go build command. You can configure this run configuration for a file, package or directory:

If the build command produces a binary, the IDE will run it. Otherwise, the IDE will simply show the build output. If you don’t want to run the binary, you can uncheck the corresponding option.

We hope with this addition your workflow and build process, in general, will now be even more straightforward.

Last but not least, the Status Bar now includes a widget (on the right-hand side) for quick access to the Go settings, UI theme, keymap, plugins, etc.

In addition to these improvements, the update has some bugfixes. Please give the update a thorough try and share your feedback with us in our issue tracker!

Happy developing!

Posted in EAP, New Features | Leave a comment

GoLand EAP 19: Docs in Param Info, Coverage for Multiple Packages, Build Tags and More

We’ve just published a fresh GoLand EAP build. Since we’re approaching the release date (roughly early December), we are now paying more attention to fixing important issues and the overall stability of the IDE. The published update comes with plenty of bugfixes. At the same time, the update includes several new features. Below are some details on some of them.

Now you can see the documentation on function parameters as a part of the Param Info popup:

It’s disabled by default. To enable it, go to Settings | Go, and check Show documentation in parameter info:

The Call Hierarchy introduced earlier now has a button that toggles the mode in which it additionally shows the calls on interfaces:

The upcoming Go 1.10 is going to support running tests with coverage from multiple packages. Now if you use Run with Coverage on a folder that has several packages, the IDE properly collects and displays the coverage data for all packages:

Note, to make it work, you have to use a Go distributive built from the sources.

Earlier we added Add directory to the current project to the context menu of the Project tool window so you could quickly add a content root to the project. Now the IDE also offers Remove directory from current project to quickly remove the content root from the project:

Running tests with build tags got easier. Now, if the tests you’re running have build tags that are not listed in Settings | Go | Vendoring & Build Tags, the IDE will automatically include the tags in the command line:

The Run Configuration dialog now has an option to automatically include the tags specified in Settings | Go | Vendoring & Build Tags into the command line:

For the complete list of changes in the build, please check out the release notes.

Once again, let us remind you that we’re getting close to the release date. It means we heavily need your feedback. Please help us test it more thoroughly to find and get fixed all the important issues before the release. When you notice anything, please be sure to submit it to our issue tracker. Thanks for your support and help!

Happy developing!

Posted in EAP, New Features | 7 Comments

Announcing GoLand (Former Gogland) EAP 18: Final Product Name, Templates Support and More

Yes, you read it right, it’s not a misprint: the final product name is now GoLand. We had to let the codename go and we’ll surely miss it. At the same time we hope everyone likes the new name. If you’re wondering what it takes to remove one letter from a product name, well… the short answer is “A lot.” For the long story, and the results of the naming contest, scroll to the end of this post.

At JetBrains we’re excited about GoLand the name as much as GoLand the new EAP build. The update brings some important improvements. Continue reading

Posted in EAP, New Features | 30 Comments

Gogland EAP 17: Type Hierarchy, Call Hierarchy, Parameter Hints, Vendor Scope, and More

Meet Gogland EAP 17. Along with the usual bugfixes the update also includes a few notable changes.

Vendor directories scope

To make the code navigation and search more straightforward, we moved the code from inside the vendor directories out of the Project Files scope and made it a part of the Project & Libraries scope instead. Now when you use an IDE feature you can control whether you want to include or exclude the code from the vendor folders. As an added bonus, because of how scopes work in the IDE, now you can also manage the way the code is visually presented:

Hierarchy tool window

There are two new features to help you work with the code: Type Hierarchy (Ctrl+H) and Call Hierarchy (Ctrl+Alt+H). Both are available on demand and appear in the Hierarchy tool window.

Type Hierarchy works when your caret is at an interface or a struct:

Based on the mode selected in the tool window toolbar, the interface displays either when the type at caret extend or implements, or when the types that implements the type at the caret:

Call Hierarchy works when your caret is at a function reference and collects the tree of function calls inside the function.

Note: The Hierarchy tool window is are not automatically updated as you navigate through the source code, it has to be triggered manually.

Parameter hints for named return values

The Parameter Hints already familiar to you have been updated and now display the hints for the named return values:

Diff viewer

The Diff viewer now supports the Ignore imports and formatting option for Go files:

This comes handy if you want to focus only on the changes in the code itself, not import statements or formatting.

Other improvements

  • The File Watchers which were recently introduced to replace On Save actions haven’t respected environment variables when executing. Now they do.
  • The IDE now warns you if the code uses non-strict comparison of integer types with the maximum or minimum values. Such checks are always true and may indicate a possible bug.
  • When using a version of Go prior to 1.8, the IDE reports incorrect conversions of structs with tags.
  • Last but not least, there’s a new inspection that finds unnecessarily exported identifiers and prompts unexport them via a quick-fix. You can either enable it or run it manually on the scope you need:

Since we’re approaching the release date, we very much appreciate your feedback. Please report any issues or glitches you find and simply share your feedback. Thanks for helping us make the release great. Stay tuned!

Happy developing!

Posted in EAP, New Features | 16 Comments

Gogland EAP 16: File Watcher, Tons of New Inspections, Smarter Navigate to Test, and More

Hooray, it’s time to check for updates! Please welcome Gogland EAP 16, a fresh EAP build with lots of improvements. Read on to learn more. Continue reading

Posted in EAP, New Features | 23 Comments

Help us Choose a Name for our Go IDE

As you may know, Gogland is the codename for our new Go IDE that we’re building on top of IntelliJ Platform. While we’re working hard on the IDE itself, trying to make it fast and smart, we’re also brainstorming its final name. This is something you can contribute to!

Gopher illustration by Renee French

Gopher illustration by Renee French

Please share your suggestions with us here in the comments, or by replying to the official tweet or Facebook post.

The name will be chosen by the JetBrains team hopefully in the next week. Later we will announce it with one the upcoming posts.

What name are we looking for? Something easy to pronounce. Easy to spell. Ideally, a one-word name (that hopefully isn’t someone else’s trademark). On the other hand, don’t be limited by any rules. Suggest what you think is best. All ideas are welcome!

If your name is chosen, you stand to get a spiffy prize (it’s a secret for now) along with a free 1-year subscription to all JetBrains products!

Go!

Posted in News | 737 Comments

Gogland EAP 15: Inspections, Intentions, Performance, IntelliJ 2017.3, and More

Say good-bye to Gogland EAP 14. Gogland EAP 15 is here, with lots of improvements and important bugfixes. Read on for more details.

Inspections

The new EAP build brings many new inspections. The following cases are now reported:

1. A variable is assigned to its own value. The IDE finds this code suspicious as it may be a bug.

2. Explicit conversion is not possible:

3. The address operator is used on a non-addressable operand:

4. A type used in a switch case mismatches the type of the switch condition:

5. A 0 wrongly used as an argument for string.Replace:

6. A comment is missing a leading space (disabled by default):

7. Snake_case in identifiers. The inspection comes with a quick-fix that can rename the identifier to CamelCase automatically.

8. A variable declaration used as value in a switch condition:

9. An exported function that returns an unexported type.

Intentions

The update introduces two intention actions that generate code for you:

1. The code that initializes structs:

2. Getters and setters for struct fields:

Performance

The update revisits the IDE performance and brings several improvements in this area:

1. The gutter icons that navigate to the interface (that the struct at the caret implements), or to the structs (implemented by the interface at the caret), have gotten faster and now are enabled by default:

2. We’ve changed how Gogland resolves and annotates code, which has resulted in better overall responsiveness.

Completion

Code completion improvements include:

1. Keywords are not suggested inside an interface declaration unless it’s appropriate.
2. The type keyword is suggested in type-assertions:

Misc

1. The go-setup information is now collapsed in the execution output (can be expanded on click):

2. The Copyright plugin now works for Go files:

3. The maximum size of Go files that can be opened in the IDE has increased from 2.5 MB to 4 MB.

4. In the Project tool window, calling the context menu on a folder now offers two new items: Open directory as a project, and Add directory to the project (as a content root).

IntelliJ Platform 2017.3

Following the opening of IntelliJ IDEA 2017.3 EAP, Gogland has switched to the new version of the platform.

Among the new platform’s features are:

1. Faster Git branch operations.
2. Git Log cosmetic improvements: Interactively Rebase from Here is now available in Log; Compact References View and Show Tag Names are now project level settings and not global as earlier.
4. A new REST client which reuses the approach from VS Code and Emacs for testing HTTP requests. To use it, simply open a new Scratch File and select HTTP Requests as its type. This will create a scratch file with the “.http” extension:

5. Several JavaScript and TypeScript improvements:

  • New and improved refactorings and intentions (ES6): Extract type alias for TypeScript, Convert type alias into interface, updated Extract parameter and Change signature refactorings.
  • Better Vue.js support.
  • Auto imports on paste (ES6).
  • Better ESLint and TSLint integration.
  • Various improvements in the Stylus support.
  • The built-in TypeScript compiler can now also compile JavaScript files.
  • Multiple JavaScript versions per project.
  • New Emmet syntax for JSX.
  • Support for Optional Chaining ES proposal.

6. A few database improvements:

  • Selecting a schema when running an SQL file.
  • Jumping to the console from a datasource.
  • Right-side alignment for a numeric data.
  • XQuery and XPath coding assistance for Microsoft SQL Server.

That’s quite a list. To try all these changes, download the update from our website, update from the IDE (via patches), or even better, use Toolbox App.

Your feedback, as always, is very welcome in our issue tracker.

Happy developing!

Posted in EAP, New Features | 2 Comments

Gogland EAP 13: Better completion, new inspections, fixed performance bugs, and More.

Hi! It’s time to release the new EAP build of Gogland.

We changed the order in the code completion list. Previously, suitable matching variant types were at the top of the list only in smart completion (Remember, it’s Ctrl/Cmd+Shift+Space). But now, this is also available in the basic completion and automatic pop-up.

completion

In this build we have introduced three new inspections:

Shadowed variables can now be highlighted. It’s disabled by default, but we’d appreciate it if you could try it out. To enable this go to File → Settings → Editor → Inspections / Go → Probable bugs → Shadowing variable

shadowing-inspection

— Error-strings beginning with a capital letter or ending with punctuation are highlighted. Such strings are not recommended according to the code-style guides.

error-string-format-inspection

— Division by zero expressions are highlighted.

division-by-zero-inspection

As of now, you can run Go Tools on several files.

two-files-go-tools

We’ve fixed bugs with performance: GO-4274, GO-4386, GO-4397.

Please, see the whole list of enhancements in this build.

That’s all for today! Feel free to give the new EAP build a try right away and share your feedback with us through the comments as well as the issue tracker.

Gogland team.
The Drive to Develop

Posted in EAP, New Features | 1 Comment

Gogland EAP 12: Navigate to Test, Running Directories, Inline Variable, and More

After only a week since our EAP last update, we’re ready to do it again! Meet fresh EAP build, packed with improvements and bugfixes.

We keep adding new refactorings. This time it’s Inline for variables, available via Ctrl+Alt+N (Cmd+Alt+N for macOS):

We’ve added inspection that warns you when you misuse a range clause, e.g. a number of variables doesn’t match the range parameter:

Navigation capabilities have also been extended with a new feature: Go to Test/Test Subject. When the caret is at a method name, press Ctrl+Shift+T (Shift+Cmd+T for macOS) and Gogland will take you to the corresponding test method. Press the same shortcut again to get back.

If there are multiple matching test methods, you will be prompted to select the one you need to go to.

Among other improvements worth mentioning is that Go Application Run Configuration now supports running directories.

Last, but not least, is the fact that the update fixes many bugs:

  • Windows installer wasn’t signed
  • Incorrect type comparison for structs with included pointer-type structures
  • The Project Wizard didn’t allow to create projects with no SDK specified
  • Incorrect cache invalidation
  • Incorrect type aliases highlighting
  • Debugger related issue (solved by updating to a newer Delve version)
  • The IDE didn’t resolve “vendored” libraries located under GOPATH in some cases
  • More…

Give this update a try and share your feedback with us. Bug reports are very welcome in our issue tracker.

Develop with Pleasure!

 

Posted in EAP, New Features | 1 Comment