TinyGo 0.28: GO Compiler Built on LLVM Released

available Issuing the project tinygo 0.28 , developing a GO language compiler for areas, in which a compact representation of the resulting code and low resource consumption, such as microcontrollers and compact single processor systems are needed. Compilation for various target platforms is implemented using LLVM, and libraries used mainly tools from the GO project are used to support the language. Code is distributed under the license BSD.

A compiled program can directly be launched on microcontrollers, which allows you to use Go as a language to write automation scenarios. In the current form it is supported 94 Microcontrollers models, including various accruit, arduino, BBC Micro, ESP32, M5STACK, ST Micro, ST Micro, ST Micro, ST Micro, ST Micro, ST Micro, ST Micro, ST Micro, ST Micro, ST Micro, ST Micro, Digispark, Raspberry Pi Pico, Nordic Semiconductor, Sifive Hifive1, STM32, MAKERDIARY and PHYTEC. The programs are also can be collected in the format of Webassembly (Wasm/WASI) for launching in the browser and in the form of executable files for Linux.

Key project goals:

  • The ability to use subset the usual GO language on compact devices. Language Go selected instead of Rust since it is more easy to study, provides an independent From the implementation of flows, support for consumption based on conqurams and offers an extensive standard library (“batteries are included”).
  • Generation of very compact executable files.
  • Support for the most common models of microcontrollers.
  • The ability to use for Web and the creation of separate webassembly applications, using WASI interface (Webassembly System Interface) Work with files, sockets and other functions provided by the operating system.
  • CGO support with minimal overhead costs when calling functions in SI.
  • Support for most of the standard packages and the possibility of compilation of a typical existing code without its change.
  • Unlike an abandoned form of a similar compiler emgo the original Memory Management GO memory control is preserved using the garbage collector and instead of compilation In the representation in the language, LLVM is involved in the generation of effective machine code.
/Reports, release notes, official announcements.