Доступен выпуск проекта 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, основная лента)
[ON] Выпуск Tinygo 0.7.0, компилятора языка Go на базе LLVM
Модератор: Модераторы разделов
[ON] Выпуск Tinygo 0.7.0, компилятора языка Go на базе LLVM
Последний раз редактировалось rssbot 19.07.2019 17:19, всего редактировалось 2 раза.
Причина: Updated upstream
Причина: Updated upstream
- Bizdelnick
- Модератор
- Сообщения: 20794
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: [ON] Выпуск Tinygo 0.7.0, компилятора языка Go на базе LLVM
И новость при этом про какой-то там tinygo, а не emgo? GC на МК — считай, проект сразу можно закапывать.
Нет, они вот это предлагают на Attiny85 с полкило памяти использовать? Серьёзно?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: [ON] Выпуск Tinygo 0.7.0, компилятора языка Go на базе LLVM
А где вы там тиньку увидели? Там поддержка камней посерьёзнее заявлена. Да и тинька устарела вроде 100500 лет назад...
- Bizdelnick
- Модератор
- Сообщения: 20794
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: [ON] Выпуск Tinygo 0.7.0, компилятора языка Go на базе LLVM
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: [ON] Выпуск Tinygo 0.7.0, компилятора языка Go на базе LLVM
А они суровые ребята, раз так!
P.S.Мы идём прямым и верным путём к созданию прошивки "моргалка светодиодом" в 1+ мегабайт. Это и смешно и грустно...
P.S.Мы идём прямым и верным путём к созданию прошивки "моргалка светодиодом" в 1+ мегабайт. Это и смешно и грустно...