The latest release of TinyGo 0.34, a Go language compiler for low-power systems like microcontrollers, has been published. TinyGo focuses on generating compact executable files with low resource consumption by utilizing LLVM for compilation on supported target platforms. The project’s code is distributed under the BSD license.
Developers can now use a subset of the Go language to create automation scenarios that can run directly on microcontrollers. TinyGo currently supports over a hundred microcontroller models, including popular ones like Arduino, ESP32, Raspberry Pi Pico, and STM32. Special drivers are available to interact with sensors and external devices through interfaces like I2C, GPIO, and SPI.
In contrast to the Emgo compiler, TinyGo eschews the Go language’s original Memory Management model with garbage collection and instead uses LLVM for efficient machine code generation. This enables developers to leverage existing standard Go code and packages. Additionally, TinyGo supports generating Webassembly code and interfacing with WASI (Webassembly System Interface).
The latest version of TinyGo introduces support for Big-Endian bytes architecture and adds compatibility for boards like the rakwireless rak4631 and waveshare ESP-C3-32S-KIT. Developers can now export Webassembly functions using the new “// go:wasmexport” directive. The garbage collector’s performance has been optimized, and new command-line options like “-C DIR” and “-LDFLAGS=’-EXTLDFLAGS=…'” have been included.