Posted by TinyGo 0.32, GO language compiler based on LLVM

The release of the project TinyGo 0.32 is now available. TinyGo is a GO language compiler designed for areas where a compact representation of code and low resource consumption are essential, such as microcontrollers and compact monoprocessor systems. Compilation for various target platforms is achieved using LLVM, with libraries mainly from the GO project for language support. The code is distributed under the BSD license.

A compiled program can be directly launched on microcontrollers, enabling the use of Go for writing automation scenarios. Currently, TinyGo maintains over a hundred microcontroller models, including popular ones like Arduino, ESP32, Raspberry Pi Pico, STM32, and more. Special drivers are used for interaction with sensors, external devices, and interfaces like I2C, GPIO, and SPI. Programs can also be compiled into WebAssembly format for browser execution and as executable files for Linux.

Key goals of the project include:

  • The ability to use a subset of the GO language on compact devices.
  • Generation of compact executable files.
  • Support for common microcontroller models.
  • Ability to create WebAssembly applications using the WASI interface.
  • CGO support with minimal overhead costs.
  • Support for standard packages and compatibility with existing code.
  • Preservation of original Memory Management GO memory control.

The latest version of TinyGo includes support for additional platforms such as Pico W, Adafruit ESP32 Feather V2, M5 Paper, and more. Compatibility with LLVM 18 has been added, along with support for using spaces in drive names in uf2 format. I2C bus support is now available for the ESP32 platform, and further enhancements to WebAssembly support have been implemented.

/Reports, release notes, official announcements.