Pubblicato il rilascio del progetto Tinygo 0.34, che sviluppa un compilatore del linguaggio Go per sistemi a bassa potenza, come microcontrollori e dispositivi embedded, che necessitano di generazione di file eseguibili molto compatti e basso consumo di risorse. La compilazione per le piattaforme target supportate è realizzata in tinygo utilizzando LLVM, e le librerie funzionali sono tratte dal toolkit principale del progetto Go. Il codice è distribuito con licenza BSD.
Il programma compilato può essere eseguito direttamente sui microcontrollori, consentendo di utilizzare un sottoinsieme del linguaggio Go per scrivere script di automazione. Attualmente, sono supportati oltre cento modelli di microcontrollori, inclusi diversi moduli Adafruit, Arduino, BBC micro, ESP32, M5Stack, ST Micro, Digispark, Raspberry Pi Pico, Nordic Semiconductor, SiFive HiFive1, STM32, Makerdiary e Phytec. Per interagire con sensori e dispositivi esterni connessi, nonché per supportare interfacce come I2C, GPIO e SPI, sono forniti driver speciali.
A differenza del compilatore simile emgo, che non è stato aggiornato negli ultimi tre anni, tinygo mantiene il modello originale di gestione della memoria di Go utilizzando il garbage collector e, invece di compilare in C, utilizza LLVM per generare codice macchina efficiente. Nei programmi è possibile utilizzare senza modifiche il codice standard esistente in Go, così come gran parte dei pacchetti standard. Oltre alla generazione di codice macchina, tinygo offre supporto per la generazione di WebAssembly, consentendo la creazione di applicazioni WebAssembly isolate utilizzando l'interfaccia WASI (WebAssembly System Interface).
Nella nuova versione è stato implementato il supporto per l'architettura MIPS con ordine di byte big-endian, e sono stati aggiunti supporto per le schede RAKwireless RAK4631 e WaveShare ESP-C3-32S-Kit. È stata aggiunta la direttiva "//go:wasmexport" per l'esportazione delle funzioni WebAssembly. È stata ottimizzata la performance del garbage collector. Sono state aggiunte nuove opzioni della riga di comando "-C DIR" e "-ldflags='-extldflags=…'".
Fonte: opennet.ru
