Verëffentlechung vum Tinygo 0.7.0, LLVM-baséiert Go Compiler

Verfügbar Projet Verëffentlechung Tinygo 0.7.0, deen e Go Sprooche-Compiler entwéckelt fir Beräicher déi kompakt Representatioun vum resultéierende Code a gerénge Ressourceverbrauch erfuerderen, wéi Mikrokontroller a kompakt Single-Prozessor Systemer. Code verdeelt duerch ënner der BSD Lizenz.

Kompilatioun fir verschidden Zilplattformen gëtt mat LLVM implementéiert, a Bibliothéiken, déi am Haapttoolkit vum Go-Projet benotzt ginn, gi benotzt fir d'Sprooch z'ënnerstëtzen. De kompiléierte Programm kann direkt op Mikrokontroller lafen, wat erlaabt Go als Sprooch ze benotzen fir Automatisatiounsskripter ze schreiwen.

D'Motivatioun fir en neie Projet ze kreéieren war de Wonsch déi vertraute Go Sprooch op kompakt Geräter ze benotzen - d'Entwéckler hunn gemengt datt wann et eng Python Versioun fir Mikrokontroller gëtt, firwat net eng ähnlech fir d'Go Sprooch erstellen. Gitt ausgewielt amplaz Rust well et méi einfach ze léieren ass, gëtt thread-onofhängeg Ënnerstëtzung fir coroutine-baséiert parallelization, a bitt eng extensiv Standard Bibliothéik ("Batterien abegraff").

A senger aktueller Form ginn 15 Mikrokontroller Modeller ënnerstëtzt, dorënner verschidde Brieder vun Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary a Phytec. Programmer kënnen och kompiléiert ginn fir an engem Browser am WebAssembly Format an als ausführbar Dateie fir Linux ze lafen. Ënnerstëtzt ESP8266/ESP32 Controller Nach net, awer e separaten Projet gëtt entwéckelt fir Ënnerstëtzung fir den Xtensa Chip an LLVM ze addéieren, deen nach ëmmer als onbestänneg markéiert ass an net prett fir d'Integratioun mat TinyGo.

Schlëssel Projet Ziler:

  • Generatioun vu ganz kompakt ausführbaren Dateien;
  • Ënnerstëtzung fir déi meescht üblech Modeller vu Mikrokontroller Boards;
  • Méiglechkeet vun Uwendung fir de Web;
  • CGo Ënnerstëtzung mat minimalen Overhead wann Dir Funktiounen am C rufft;
  • Ënnerstëtzung fir déi meescht Standard Packagen an d'Fäegkeet fir Standard existente Code ze kompiléieren ouni et z'änneren.

    Ënnerstëtzung fir Multi-Core Systemer ass net zu den Haaptziler,
    effizient Start vun enger grousser Zuel vu Coroutines (de Start vun Coroutines selwer gëtt voll ënnerstëtzt), Erreeche vum Leeschtungsniveau vum Referenz Compiler gc (Optimisatioun gëtt op LLVM lénks an an e puer Applikatiounen Tinygo vläicht méi séier wéi gc) a komplett Kompatibilitéit mat all Go Uwendungen.

    Den Haaptunterschied vun engem ähnlechen Compiler emgo ass e Versuch dem Go säin ursprénglechen Erënnerungsmanagementmodell ze bewahren andeems d'Drecksammlung benotzt a LLVM benotzt fir effiziente Code ze generéieren anstatt en op eng C Representatioun ze kompiléieren. Tinygo bitt och eng nei Runtime-Bibliothéik déi e Scheduler implementéiert, Memory Allocation System, a String Handler optiméiert fir kompakt Systemer. E puer Packagen, wéi Synchroniséierung a Reflexioun, goufen op Basis vun der neier Runtime erstallt.

    Ënnert den Ännerungen an der Verëffentlechung 0.7 sinn d'Ëmsetzung vum Kommando "Tinygo Test", d'Bereetstellung vun der Müllkollektioun Ënnerstëtzung fir déi meescht Zilplacke (baséiert op ARM Cortex-M) a WebAssembly, Ënnerstëtzung fir den HiFive1 rev B Board baséiert op der RISC- V Architektur an den Arduino nano33 Board,
    verbessert Sprooch Ënnerstëtzung (Ënnerstëtzung fir Bit Felder benotzt getters an setters, Ënnerstëtzung fir anonym Strukturen).

    Source: opennet.ru

  • Setzt e Commentaire