Release di Tinygo 0.40, compilatore per il linguaggio Go

È stato pubblicato il rilascio del progetto Tinygo 0.40, un compilatore per il linguaggio Go. Questo compilatore è progettato per generare file eseguibili compatti per sistemi a bassa potenza, come microcontrollori e dispositivi embedded, per i quali i programmi devono consumare il minimo di memoria e risorse computazionali. La compilazione per le piattaforme target supportate è realizzata utilizzando LLVM, mentre le librerie funzionali sono derivate dagli strumenti principali 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. Sono supportati oltre cento 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. Per interagire con sensori e dispositivi esterni connessi, nonché per supportare interfacce come I2C, GPIO e SPI, sono forniti driver specifici.

A differenza del compilatore simile emgo, che non è stato aggiornato negli ultimi quattro anni, tinygo mantiene il modello originale di gestione della memoria di Go utilizzando un garbage collector, mentre invece di compilare in un output in linguaggio C, utilizza LLVM per generare direttamente il codice macchina. Il codice di esempio esistente in Go può essere utilizzato senza modifiche, così come gran parte dei pacchetti standard. Oltre alla generazione di codice macchina, tinygo supporta anche la generazione di bytecode WebAssembly con la possibilità di creare applicazioni WebAssembly autonome utilizzando l'interfaccia WASI (WebAssembly System Interface).

Nella nuova versione:

  • Sono state introdotte ottimizzazioni nel garbage collector. L'incremento delle prestazioni ha raggiunto fino al 10%.
  • È stato implementato il supporto per l'insieme di strumenti LLVM 20.
  • È stato aggiunto il supporto per la piattaforma ESP32-S3, così come per le schede Xiao ESP32-S3, Gopher ARCADE e Pico2-Ice.
  • È stata aggiunta l'opzione go-compatibility e la variabile d'ambiente TINYGO_GOCOMPATIBILITY per disabilitare il controllo di compatibilità con la versione dichiarata del linguaggio Go.
  • Per le variabili e le funzioni globali, è stata attivata la pragma "//go:linkname" in aggiunta a "//go:extern".
  • Nel compilatore è stata aggiunta la possibilità di contrassegnare i parametri stringa come disponibili solo in lettura.
  • Per identificare i cicli di chiamate deferred, il compilatore utilizza l'algoritmo di ricerca delle componenti fortemente connesse di Tarjan.

Fonte: opennet.ru

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