liberazione di u prugettu , chì hè sviluppatu un compilatore di lingua Go per i zoni chì necessitanu una rapprisintazioni compatta di u codice resultanti è un pocu cunsumu di risorse, cum'è microcontrollers è sistemi compacti di un solu processatore. Codice sottu a licenza BSD.
A compilazione per diverse piattaforme di destinazione hè implementata cù LLVM, è e biblioteche usate in u toolkit principale da u prughjettu Go sò aduprate per sustene a lingua. U prugramma compilatu pò esse direttamente eseguitu nantu à i microcontrollers, chì permettenu Go per esse usatu cum'è una lingua per scrive script d'automatizazione.
A motivazione per a creazione di un novu prughjettu era u desideriu di utilizà a lingua familiare Go in i dispositi compacti - i sviluppatori ragiunavanu chì s'ellu ci era una versione Python per i microcontrollers, allora perchè micca creà una simile per a lingua Go. Vai invece di Rust perchè hè più faciule d'amparà, furnisce un supportu indipendente di filu per a parallelizazione basatu in coroutine, è offre una libreria standard larga ("batterie incluse").
Attualmente, 15 mudelli di microcontrollori sò supportati, cumprese diverse schede di Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary è Phytec. I prugrammi ponu ancu esse compilati per l'esecuzione di u navigatore in furmatu WebAssembly è cum'è fugliali eseguibili per LinuxSupportu per i cuntrolli ESP8266/ESP32 , ma un prughjettu separatu hè sviluppatu per aghjunghje supportu per u chip Xtensa in LLVM, chì hè sempre marcatu cum'è inestabile è micca pronta per integrazione cù TinyGo.
Obiettivi chjave di u prugettu:
U supportu per i sistemi multi-core ùn hè micca trà i scopi principali,
lanciamentu efficace di un gran numaru di coroutines (u lanciu di coroutines stessu hè cumplettamente supportatu), rializazione di u livellu di prestazione di u compilatore di riferimentu gc (l'optimizazione hè lasciata à LLVM è in alcune applicazioni Tinygo pò esse più veloce di gc) è cumpletu. cù tutte l'applicazioni Go.
A diferenza principale da un compilatore simili hè un tentativu di priservà u mudellu di gestione di memoria originale di Go utilizendu a cullizzioni di basura è utilizate LLVM per generà codice efficiente invece di cumpilà in una rapprisintazioni C. Tinygo offre ancu una nova biblioteca di runtime chì implementa un pianificatore, un sistema di allocazione di memoria è i gestori di stringa ottimizzati per sistemi compacti. Certi pacchetti, cum'è a sincronia è a riflessione, sò stati recreati basatu annantu à u novu runtime.
Trà i cambiamenti in a liberazione 0.7 sò l'implementazione di u cumandamentu "tinygo test", a prestazione di supportu di raccolta di basura per a maiò parte di i pannelli di destinazione (basatu in ARM Cortex-M) è WebAssembly, supportu per a scheda HiFive1 rev B basatu nantu à RISC- L'architettura V è a scheda Arduino nano33,
supportu di lingua migliuratu (supportu per i campi di bit chì utilizanu getters è setters, supportu per strutture anonime).
Source: opennet.ru
