Опубликован Tinygo 0.32, компилятор языка Go на базе LLVM

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3247
Зарегистрирован: 20.08.2022

#

Опубликован Tinygo 0.32, компилятор языка Go на базе LLVM
Дата публикации:Tue, 18 Jun 2024 22:37:38 +0300




Доступен выпуск проекта Tinygo 0.32, развивающего компилятор языка 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, предоставляются специальные драйверы.

Программы также могут быть собраны в формате WebAssembly (wasm/wasi) для запуска в браузере и в виде исполняемых файлов для Linux.



Ключевые цели проекта:
  • Возможность использовать подмножество привычного для себя языка Go на компактных устройствах. Язык Go выбран вместо Rust так как он более прост в изучении, предоставляет независимую от реализаций потоков поддержку распараллеливания на основе сопрограмм и предлагает обширную стандартную библиотеку ("батарейки входят в комплект").



    Генерация очень компактных исполняемых файлов.
    Поддержка наиболее распространённых моделей плат микроконтроллеров.
    Возможность применения для Web и создания обособленных WebAssembly-приложений, используя интерфейс WASI (WebAssembly System Interface) для работы с файлами, сокетами и другими функциями, предоставляемыми операционной системой.


    Поддержка CGo с минимальными накладными расходами при вызове функций на языке Си.
    Поддержка большей части стандартных пакетов и возможность компиляции типового существующего кода без его изменения.
    В отличие от находящегося в заброшенном виде похожего компилятора emgo в Tinygo сохранена оригинальная модель управления памятью Go с использованием сборщика мусора и вместо компиляции в представление на языке Си задействован LLVM для генерации эффективного машинного кода.


В новой версии добавлена поддержка плат и чипов Pico W, Adafruit ESP32 Feather V2, M5 Paper, PCA10059, stm32 nucleol476rg и Pimoroni Badger2040-W. Обеспечена совместимость с LLVM 18. Реализована возможность использования пробелов в именах накопителей в формате UF2. Для платформы esp32 добавлена поддержка шины I2C. Расширена поддержка WebAssembly.


Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=61396

Жизнь за Нер'зула!

Ответить