Выпуск Tinygo 0.36, компилятора для языка Go

Опубликован выпуск проекта Tinygo 0.36, развивающего компилятор для языка Go. Компилятор подходит для генерации компактных исполняемых файлов для маломощных систем, таких как микроконтроллеры и встраиваемые устройства, программы для которых должны минимально потреблять память и вычислительные ресурсы. Компиляция для поддерживаемых целевых платформ реализована при помощи LLVM, а библиотеки функций заимствованы из основного инструментария проекта Go. Код распространяется под лицензией BSD.

Скомпилированная программа напрямую может запускаться на микроконтроллерах, что позволяет применять подмножество языка Go для написания сценариев автоматизации. Поддерживается более ста моделей микроконтроллеров, включая различные платы Adafruit, Arduino, BBC micro, ESP32, M5Stack, ST Micro, Digispark, Raspberry Pi Pico, Nordic Semiconductor, SiFive HiFive1, STM32, Makerdiary и Phytec. Для взаимодействия с датчиками и подключёнными внешними устройствами, а также для поддержки интерфейсов, таких как I2C, GPIO и SPI, предоставляются специальные драйверы.

В отличие от похожего компилятора emgo, не обновлявшегося последние четыре года, в tinygo сохранена оригинальная модель управления памятью Go с использованием сборщика мусора, а вместо компиляции в представление на языке Си, задействован LLVM для прямой генерации машинного кода. В программах может без изменений использоваться уже существующий типовой код на языке Go, а также большая часть стандартных пакетов. Помимо генерации машинного кода, в tinygo доступна поддержка формирования байткода WebAssembly с возможностью создания обособленных WebAssembly-приложений, используя интерфейс WASI (WebAssembly System Interface).

В новой версии:

  • Реализована поддержка инструментария LLVM 19.
  • Добавлена начальная поддержка языка Go 1.24.
  • Расширены возможности для сборки в формате WebAssembly и добавлен новый режим сборки “buildmode=wasi-legacy” для совместимости со старыми модулями wasi, не передающими код возврата.
  • В стандартную библиотеку добавлены функции file.Chmod и file.Chdir.
  • Обеспечена совместимость с новыми ветками Ubuntu.
  • Добавлена поддержка плат: Pimoroni Pico Plus2, Elecrow Pico rp2350 W5, Elecrow Pico rp2040 W5, NRF51 HW-651, esp32c3-supermini и waveshare-rp2040-tiny.
Release. Ссылка here.