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






