TinyGo – это компилятор языка Go, предназначенный для использования в таких областях, как микроконтроллеры, WASM, а также разработки утилит командной строки.
TinyGo использует утилиты и библиотеки, написанные в проекте Go, при этом предоставляя альтернативный метод компиляции программ на основе наработок проекта LLVM.
Задачи проекта:
- Обеспечить минимальный размер исполняемых файлов.
- Поддержка наибольшего количества микроконтроллеров.
- Поддержка WebAssembly.
- Хорошая поддержка CGo.
- Поддержка оригинального кода на Go без изменений.
Пример использования для переключения LED на микроконтроллере:
package main
import (
"machine"
"time"
)
func main() {
led := machine.LED
led.Configure(machine.PinConfig{Mode: machine.PinOutput})
for {
led.Low()
time.Sleep(time.Millisecond * 1000)
led.High()
time.Sleep(time.Millisecond * 1000)
}
}
Версия 0.6.0 содержит множество изменений. Основные из них относятся к улучшению поддержки CGo, js.FuncOF (Go 1.12+), а также двух новых отладочных плат: Adafruit Feather M0 и Adafruit Trinket M0.
Полный список изменений доступен на GitHub странице проекта.
>>> TinyGo.org