
TinyGo: компилятор Go для небольших мест
Если вы работаете с микроконтроллерами и любите Go, Tinygo может быть для вас, с тех пор разработан компилятор Go pДля областей, требующих компактного представления результирующего кода и низкого потребления ресурсов, таких как микроконтроллеры встроенных систем и WebAssembly.
TinyGo — это компилятор, который стремится вывести сборку Go на различные целевые платформы. который реализован с помощью LLVM, а библиотеки, используемые в основном наборе инструментов проекта Go, используются для поддержки языка.
На сайте Tinygo описано, что:
Вы можете компилировать и запускать программы TinyGo на более чем 94 различных платах микроконтроллеров, включая BBC micro:bit и Arduino Uno.
TinyGo также может создавать очень компактный код WebAssembly (WASM). Вы можете создавать программы для веб-браузеров, а также для серверов и пограничных вычислительных сред, которые поддерживают семейство интерфейсов WebAssembly System Interface (WASI).
Причиной создания проекта TinyGO стало желание использовать язык Go, распространенный в компактных устройствах.— Разработчики рассудили, что если есть версия Python для микроконтроллеров, то почему бы не создать аналогичную для языка Go?
В ТайниГо, скомпилированную программу можно запускать непосредственно на микроконтроллерах, lили что это позволяет использовать Go в качестве языка для написания скриптов автоматизации. В настоящее время TinyGo поддерживает 94 модели микроконтроллеров., включая различные платы, такие как Raspberry Pi Pico, Nordic, SiFive и другие.
TinyGo предоставляет специальные драйверы для взаимодействия с подключенными внешними устройствами и датчиками, а также для поддержки таких интерфейсов, как I2C, GPIO и SPI. Программы также могут быть скомпилированы в формате WebAssembly (wasm/wasi) для запуска в браузере и в виде двоичных файлов Linux.
Ключевые задачи проекта:
- Возможность использовать подмножество знакомого языка Go на компактных устройствах. Go был выбран вместо Rust, потому что его легче освоить, он обеспечивает независимую от потоков поддержку распараллеливания на основе подпрограмм и предлагает обширную стандартную библиотеку.
- Генерация очень компактных исполняемых файлов.
- Поддержка наиболее распространенных моделей плат микроконтроллеров.
- Возможность использовать для Интернета и создавать автономные приложения WebAssembly с помощью WASI (WebAssembly
- Системный интерфейс) для работы с файлами, сокетами и другими функциями, предоставляемыми операционной системой.
- Поддержка CGo с минимальными накладными расходами при вызове функций языка C.
- Совместимость с большинством стандартных пакетов и возможность компилировать общий существующий код без его изменения.
- В отличие от аналогичного устаревшего компилятора emgo, Tinygo сохраняет исходную модель управления памятью Go через сборщик мусора и использует LLVM вместо компиляции в представление C для создания эффективного машинного кода.
Стоит отметить, что Tinygo недавно получил новую версию, а именно 0.28 и в этой новой версии выделяется тем, что значительно улучшена поддержка отражения и предлагается собственная реализация библиотеки отражения, что позволило добиться совместимости со многими стандартными библиотеками. пакеты, с которыми раньше были проблемы.
Кроме того, в новой версии добавлена поддержка директивы «//go:wasmimport» для импорта функций из WebAssembly, а также поддержка новых карт, таких как значки Gopher.
В конце концов Если вам интересно узнать об этом больше, вы можете проверить детали в по следующей ссылке.
Как установить Tinygo на Linux?
Для тех, кто интересует возможность установки Tinygo, на Debian, Raspbian, Ubuntu и производных. Они должны открыть терминал, и в нем мы собираемся выполнить следующую команду:
wget https://github.com/tinygo-org/tinygo/releases/download/v0.28.1/tinygo_0.28.1_amd64.deb sudo dpkg -i tinygo_0.28.1_amd64.deb
Для частного случая систем для устройств ARM (Версии Raspbian и Ubuntu)
Мы собираемся набрать следующее:
wget https://github.com/tinygo-org/tinygo/releases/download/v0.28.1/tinygo_0.28.1_arm64.deb sudo dpkg -i tinygo_0.28.1_arm64.deb
В случае тех, кто является пользователем Arch Linux и его производных, они должны выполнить следующую команду:
sudo pacman -S tinygo
Теперь для пользователей Fedora:
sudo dnf install tinygo
После того, как вы завершили установку, они должны убедиться, что путь крошечного го находится в их ПУТЬ.
экспорт PATH=$PATH:/usr/local/tinygo/bin
Наконец-то для проверить установку мы собираемся ввести следующую команду:
версия тиниго
И он должен бросить нам что-то подобное
тиниго версия 0.28.1 линукс/амд64
Чтобы узнать больше об этом, вы можете проконсультироваться по следующей ссылке.