Liberazione di Tinygo 0.7.0, compilatore Go basatu in LLVM

Dispunibule liberazione di u prugettu Tinygo 0.7.0, 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 distribuitu da 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 selezziunatu 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 Ancu micca, 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:

  • Generazione di fugliali eseguibili assai compacti;
  • Supportu per i mudelli più cumuni di schede microcontroller;
  • Possibilità di applicazione per u Web;
  • Supportu CGo cù un minimu di overhead quandu chjamate funzioni in C;
  • Supportu per a maiò parte di i pacchetti standard è a capacità di cumpilà u codice esistente standard senza cambià.

    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. cumpatibilità cù tutte l'applicazioni Go.

    A diferenza principale da un compilatore simili emgo 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

  • Cumprate un hosting affidabile per i siti cù prutezzione DDoS, servitori VPS VDS 🔥 Cumprate un hosting di siti web affidabile cù prutezzione DDoS, servitori VPS VDS | ProHoster