Выпуск Tinygo 0.34, компилятора языка Go на базе LLVM

in #ru10 days ago

Опубликован выпуск проекта Tinygo 0.34, развивающего компилятор языка Go для маломощных систем, таких как микроконтроллеры и встраиваемые устройства, которым необходима генерация очень компактных исполняемых файлов и низкое потребление ресурсов. Компиляция для поддерживаемых целевых платформ реализована в tinygo при помощи 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).

В новой версии реализована поддержка архитектуры MIPS с порядком следования байтов big-endian, а также добавлена поддержка плат RAKwireless RAK4631 и WaveShare ESP-C3-32S-Kit. Для экспорта WebAssembly-функций добавлена директива "//go:wasmexport". Проведена оптимизация производительности сборщика мусора. Добавлены новые опции командной строки "-C DIR" и "-ldflags='-extldflags=...'".

Источник: https://www.opennet.ru/opennews/art.shtml?num=62115

Coin Marketplace

STEEM 0.16
TRX 0.16
JST 0.028
BTC 74278.59
ETH 2576.65
USDT 1.00
SBD 2.42