Compilarea pentru diverse platforme țintă este implementată folosind LLVM, iar bibliotecile utilizate în setul de instrumente principal din proiectul Go sunt folosite pentru a susține limbajul. Programul compilat poate fi rulat direct pe microcontrolere, permițând ca Go să fie folosit ca limbaj pentru scrierea scripturilor de automatizare.
Motivația pentru crearea unui nou proiect a fost dorința de a utiliza limbajul familiar Go pe dispozitive compacte - dezvoltatorii au motivat că, dacă există o versiune Python pentru microcontrolere, atunci de ce să nu creăm una similară pentru limbajul Go. Merge
În forma sa actuală, sunt acceptate 15 modele de microcontrolere, inclusiv diverse plăci de la Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary și Phytec. Programele pot fi, de asemenea, compilate pentru a rula într-un browser în format WebAssembly și ca fișiere executabile pentru Linux. Suporta controlere ESP8266/ESP32
Obiectivele cheie ale proiectului:
Suportul pentru sisteme multi-core nu este printre obiectivele principale,
lansarea eficientă a unui număr mare de coroutine (lansarea coroutine în sine este pe deplin suportată), atingerea nivelului de performanță al compilatorului de referință gc (optimizarea este lăsată la LLVM și în unele aplicații Tinygo poate fi mai rapid decât gc) și complet
Principala diferență față de un compilator similar
Printre modificările din versiunea 0.7 se numără implementarea comenzii „tinygo test”, furnizarea de suport pentru colectarea gunoiului pentru majoritatea plăcilor țintă (pe baza ARM Cortex-M) și WebAssembly, suport pentru placa HiFive1 rev B bazată pe RISC- Arhitectura V și placa Arduino nano33,
suport îmbunătățit pentru limbaj (suport pentru câmpuri de biți folosind gettere și setari, suport pentru structuri anonime).
Sursa: opennet.ru