Compatto Tinygo 0.28, compilatore del linguaggio Go basato su LLVM.

È disponibile la versione 0.28 del progetto Tinygo, un compilatore per il linguaggio Go progettato per ambiti che richiedono una rappresentazione compatta del codice risultante e un basso consumo di risorse, come i microcontrollori e i sistemi monoprocessore compatti. La compilazione per diverse piattaforme target è realizzata utilizzando LLVM, mentre le librerie utilizzate per supportare il linguaggio provengono principalmente dagli strumenti del progetto Go. Il codice è distribuito con licenza BSD.

Il programma compilato può essere eseguito direttamente su microcontrollori, permettendo così l'uso di Go come linguaggio per scrivere script di automazione. Attualmente supporta 94 modelli di microcontrollori, tra cui varie schede Adafruit, Arduino, BBC micro, ESP32, M5Stack, ST Micro, Digispark, Raspberry Pi Pico, Nordic Semiconductor, SiFive HiFive1, STM32, Makerdiary e Phytec. Sono forniti driver speciali per interagire con sensori e dispositivi esterni collegati, così come per supportare interfacce come I2C, GPIO e SPI. Gli script possono anche essere costruiti nel formato WebAssembly (wasm/wasi) per essere eseguiti nel browser e come file eseguibili per Linux.

Obiettivi principali del progetto:

  • Possibilità di utilizzare un sottoinsieme del linguaggio Go, familiare ai programmatori, su dispositivi compatti. Il linguaggio Go è stato scelto al posto di Rust poiché è più semplice da apprendere, offre un supporto indipendente dalle implementazioni per il threading basato su coroutine e fornisce un ampio standard library ('le batterie sono incluse').
  • Generazione di eseguibili molto compatti.
  • Supporto per i modelli di schede più comuni dei microcontrollori.
  • Possibilità di utilizzo per applicazioni Web e per la creazione di isolati WebAssembly, utilizzando l'interfaccia WASI (WebAssembly System Interface) per l'accesso a file, socket e altre funzioni offerte dal sistema operativo.
  • Supporto per CGo con costi minimi per le chiamate a funzioni in C.
  • Supporto per la maggior parte dei pacchetti standard e possibilità di compilazione di codice esistente senza modifiche.
  • A differenza del compilatore emgo, ora abbandonato, in Tinygo è stata mantenuta l'originale gestione della memoria di Go tramite un garbage collector e, anziché compilare in codice C, si utilizza LLVM per generare codice macchina efficiente.

Nella nuova versione, il supporto per i riflessi è stato notevolmente migliorato e è stata proposta un'implementazione proprietaria della libreria reflect, che ha permesso di ottenere compatibilità con molti pacchetti della libreria standard, con cui in precedenza si riscontravano problemi. Inoltre, nella nuova versione è stato aggiunto il supporto per la direttiva "//go:wasmimport nome_modulo nome_funzione" per importare funzioni da WebAssembly. È stato aggiunto il supporto per nuove schede, ad esempio, la scheda Gopher Badge.

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster