TinyGo for Tiny Applications. Discover a New Plugin for GoLand
If you need to create a Go application for a small device like a microcontroller, you would most likely use TinyGo. This is a new Go compiler that uses LLVM to optimize the code and generate machine code for the target architecture.
Today we’d like to introduce the TinyGo plugin. It comes with several features, and we hope this new plugin will make writing code for devices with limited RAM easier and more enjoyable.
This is a student project implemented as a part of our internship program. Two of our interns worked on it in Munich: Nikita Mironov from The Clausthal University of Technology and Oleksandr Voloshyn from The Technical University of Munich. We’d like to thank them for their hard work and effort.
JetBrains has winter and summer internship opportunities as well as year-round part-time positions in different locations. Open intern positions are regularly posted on our website.
Since this project is still in its early stages of development, there may be some things that don’t run very smoothly. Your feedback would be greatly appreciated.
Start new project
To use the TinyGo plugin, you will need the latest stable version of GoLand, which is 2021.1.2 as of this writing.
We suppose that you’re familiar with TinyGo, but just in case, here are the installation instructions.
After TinyGo is set up, install the plugin and click the New project button. You will see a new option on the left – TinyGo. Click on it and download the TinyGo SDK or point the IDE to the existing one on your machine. Also, choose the right target platform from the dropdown menu. Now click the Create button. If you want to open an existing project and adjust the configuration, go to Preferences/Settings | Go | TinyGo.
To create a new .go file, right-click on the project folder. You will see a new option – TinyGo application – in the New section. It will suggest choosing a template. Let’s pick blinky1/blinky1.go – a “Hello, world” example in the TinyGo world. If you connect a board with an LED to the computer and flash this program to the board, it will make your LED blink.
Completion and auto-imports
But let’s say you want to write the code yourself. You will discover that the TinyGo plugin supports code completion and the auto-import of packages.
There are also code inspections configured specifically for TinyGo applications. To check them out, go to Preferences/Settings | Editor | Inspections.
To flash the program, click on the green triangle in the gutter. There are several options. Choose Run TinyGo [name of your project]. You can adjust the configuration that was created by clicking on the same green triangle and choosing the Modify Run Configuration option. Also, the configuration can be adjusted from the dropdown menu in the top right-hand corner of the window.
That’s it! Bear in mind that work on this project is ongoing. Please contribute and help us make it better. As always, you can get in touch via Twitter or the Gophers Slack #goland channel. Share your feedback here in the comments or open an issue in our tracker.
Subscribe to Blog updates
Goland 2023.3 Beta Is Out!
Get the Beta build via the Toolbox App, from our website, by using a snap package (for Ubuntu), or right from inside GoLand by selecting Check IDE updates for: Early Access Program in Settings | Appearance & Behavior | System Settings | Updates. Download GoLand Beta …
What’s next: GoLand Roadmap 2023.3
We are going to address some of the older issues and add some fancy features in 2023.3. Check out what's coming in the next GoLand release!
Meet GoLand 2021.3!
The third major release of the year is out! In GoLand 2021.3 you’ll find native support for Go projects in WSL, the Inline Function refactoring, support for remote development (Beta), some improvements for the debugger, two new postfixes for converting strings to numbers, and more…
GoLand 2021.2 has been released!
The second major release of the year is out! In GoLand 2021.2 you’ll find new features for Go modules, a new option for formatting, and support for Go 1.17 features. We’ve added new quick-fixes, including one that will help you use the new //go:build syntax correctly, and much more! …