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

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Ответить
Аватара пользователя
rssbot
Бот
Сообщения: 6002
ОС: gnu/linux

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

Сообщение rssbot »

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

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

Мотивом создания нового проекта послужило желание использовать привычный для себя язык Go на компактных устройствах - разработчики рассудили, что если существует вариант Python для микроконтроллеров, то почему бы не создать подобное для языка Go. Go выбран вместо Rust так как он более прост в изучении, предоставляет независимую от реализаций потоков поддержку распараллеливания на основе сопрограмм и предлагает обширную стандартную библиотеку ("батарейки входят в комплект").

В текущем виде поддерживается 15 моделей микроконтроллеров, включая различные платы Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary и Phytec. Программы также могут быть собраны для запуска в браузере в формате WebAssembly и в виде исполняемых файлов для Linux. Поддержки контроллеров ESP8266/ESP32 пока нет, но отдельно развивается проект по добавлении поддержки чипа Xtensa в LLVM, который пока отмечен как нестабильный и не готовых для интеграции с TinyGo.

Ключевые цели проекта: [/list] [*] Генерация очень компактных исполняемых файлов; [*] Поддержка наиболее распространённых моделей плат микроконтроллеров; [*] Возможность применения для Web; [*] Поддержка CGo с минимальными накладными расходами при вызове функций на языке Си; [*] Поддержка большей части стандартных пакетов и возможность компиляции типового существующего кода без его изменения. [/list]

Не входит в число основных целей поддержка многоядерных систем, эффективный запуск огромного числа сопрограмм (сам по себе запуск сопрограмм поддерживается в полной мере), достижение уровня производительности эталонного компилятора gc (оптимизация отдаётся на откуп LLVM и в некоторых применениях Tinygo может оказаться быстрее gc) и полная совместимость со всеми приложениями на Go.

Основным отличием от похожего компилятора emgo является попытка сохранения оригинальной модели управления памятью Go с использованием сборщика мусора и задействование LLVM для генерации эффективного кода вместо компиляции в представление на языке Си. Tinygo также предлагает новую runtime-библиотеку, в которой реализованы оптимизированные для компактных систем планировщик, система распределения памяти и обработчики строк. На базе нового runtime пересозданы некоторые пакеты, такие как sync и reflect.

Из изменений в выпуске 0.7 отмечается реализация команды "tinygo test", обеспечение поддержки сборки мусора для большинства целевых плат (на базе ARM Cortex-M) и WebAssembly, поддержка платы HiFive1 rev B на основе архитектуры RISC-V и платы Arduino nano33, улучшение поддержки языка (поддержка битовых полей с использованием геттеров и сеттеров, поддержка анонимных структур).


Источник: https://www.opennet.ru/opennews/art.shtml?num=51126
(opennet.ru, основная лента)
Последний раз редактировалось rssbot 19.07.2019 17:19, всего редактировалось 2 раза.
Причина: Updated upstream
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: [ON] Выпуск Tinygo 0.7.0, компилятора языка Go на базе LLVM

Сообщение Bizdelnick »

rssbot писал(а):
19.07.2019 15:07
Основным отличием от похожего компилятора emgo является попытка сохранения оригинальной модели управления памятью Go с использованием сборщика мусора
И новость при этом про какой-то там tinygo, а не emgo? GC на МК — считай, проект сразу можно закапывать.
Нет, они вот это предлагают на Attiny85 с полкило памяти использовать? Серьёзно?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3669
ОС: Mandriva => Gentoo (~amd64)
Контактная информация:

Re: [ON] Выпуск Tinygo 0.7.0, компилятора языка Go на базе LLVM

Сообщение devilr »

А где вы там тиньку увидели? Там поддержка камней посерьёзнее заявлена. Да и тинька устарела вроде 100500 лет назад...
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: [ON] Выпуск Tinygo 0.7.0, компилятора языка Go на базе LLVM

Сообщение Bizdelnick »

devilr писал(а):
19.07.2019 16:35
А где вы там тиньку увидели?
Digispark же.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3669
ОС: Mandriva => Gentoo (~amd64)
Контактная информация:

Re: [ON] Выпуск Tinygo 0.7.0, компилятора языка Go на базе LLVM

Сообщение devilr »

А они суровые ребята, раз так! :D
P.S.Мы идём прямым и верным путём к созданию прошивки "моргалка светодиодом" в 1+ мегабайт. Это и смешно и грустно...
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Ответить