Компилятор языка Tinygo a Go на основе LLVM

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

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

О Tinygo

Причиной создания проекта TinyGO стало желание использовать язык Go, распространенный в компактных устройствах.- Разработчики рассудили, что если есть версия Python для микроконтроллеров, то почему бы не создать аналогичную для языка Go?

Go выбран вместо Rust, так как его легче изучить, обеспечивает поддержку на основе гофрирования для независимой от резьбы поддержки и предлагает обширную стандартную библиотеку («батарейки в комплекте»).

В текущем виде Поддерживаются 15 моделей микроконтроллеров, включая различные платы Adafruit, Arduino, BBC micro, bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary и Phytec.

Также можно создавать программы для запуска в браузере в формате веб-версии и в виде исполняемых файлов для Linux.

Пока нет поддержки контроллеров ESP8266 / ESP32, но разрабатывается проект по добавлению поддержки чипа Xtensa в LLVM, который по-прежнему помечен как нестабильный и не готов к интеграции с TinyGo.

Ключевые задачи проекта:

  • Генерация очень компактных исполняемых файлов
  • Поддержка наиболее распространенных моделей плат микроконтроллеров
  • Возможность использования в сети
  • Поддержка CGo с минимальными накладными расходами при вызове функций C
  • Поддержка большинства стандартных пакетов и возможность компилировать существующий типовой код без его модификации.

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

Основное отличие от компилятора emgo - это попытка сохранить исходную модель управления памятью Go с помощью сборщика мусора и использовать LLVM для генерации эффективного кода вместо его компиляции в представление C.

Tinygo также предлагает новую библиотеку времени выполнения, которая реализует оптимизированный планировщик для компактных систем., система выделения памяти и строковые контроллеры. На основе новой среды выполнения были воссозданы некоторые пакеты, такие как синхронизация и зеркалирование.

О Tinygo версии 0.7

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

Как установить Tinygo на Ubuntu и производные?

Для тех, кто хочет установить Tinygo на Debian, Raspbian, Ubuntu и производные. Они должны открыть терминал, и в нем мы собираемся выполнить следующую команду:

wget https://github.com/tinygo-org/tinygo/releases/download/v0.7.0/tinygo_0.7.0_amd64.deb

sudo dpkg -i tinygo_0.7.0_amd64.deb

Для частного случая систем для устройств ARM (Версии Raspbian и Ubuntu)

Мы собираемся набрать следующее:

wget https://github.com/tinygo-org/tinygo/releases/download/v0.7.0/tinygo_0.7.0_armhf.deb

sudo dpkg -i tinygo_0.7.0_armhf.deb

После того, как вы завершили установку, они должны убедиться, что путь крошечного го находится в их ПУТЬ.

export PATH=$PATH:/usr/local/tinygo/bin

Наконец, чтобы проверить установку, мы собираемся ввести следующую команду:

tinygo versión

И он должен бросить нам что-то подобное

tinygo version 0.7.0 linux/amd64

Чтобы узнать больше об этом, вы можете проконсультироваться по следующей ссылке. 


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.