Об этом проекте
TinyGo предоставляет альтернативную цепочку компиляции для программ, написанных на Go. Он объединяет библиотеки из инструментов языка Go с LLVM, ориентируясь на случаи использования, где размер бинарного файла, среда развертывания или аппаратные ограничения делают стандартный компилятор менее подходящим.
Для встраиваемой разработки TinyGo включает пакет `machine` для доступа к оборудованию и может компилировать и прошивать ту же программу на поддерживаемые платы микроконтроллеров, выбирая цель, например Arduino Uno, Adafruit Circuit Playground Express или Seeed Studio XIAO-ESP32S3. Проект заявляет поддержку более 150 плат микроконтроллеров.
Для WebAssembly TinyGo может собирать браузерные WASM-модули и WASI-программы для серверов, периферийных сред и хостов, таких как Fastly Compute, Fermyon Spin и wazero. Он поддерживает цели WASI Preview 1 и экспортируемые WASM-функции.
Он также может собирать программы командной строки для Linux, macOS и Windows. Варианты установки включают нативную настройку и Docker-контейнер, с документацией и материалами для начала работы, опубликованными на сайте TinyGo.
Заявленные цели проекта включают малые бинарники, широкую поддержку микроконтроллеров, удобство WebAssembly, эффективную интероперабельность CGo и совместимость с распространенными пакетами стандартной библиотеки, чтобы многие программы на Go компилировались без изменений. Он не стремится компилировать каждую программу на Go, соответствовать стандартному компилятору `gc` в каждом сценарии производительности или оптимизировать в первую очередь под чрезвычайно большое количество горутин.
TinyGo в основном лицензирован под лицензией BSD 3-clause. Некоторый импортированный код LLVM использует вариант Apache 2.0, а код, производный от библиотек Teensy, использует лицензию PJRC, как указано в соответствующих заголовках файлов. Поддержка сообщества доступна через канал Gophers Slack #TinyGo, а вклад документирован на сайте проекта.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.