Tinygo 0.7.0, LLVM-põhise Go kompilaatori väljalase

Saadaval projekti väljalase Tinygo 0.7.0, mis arendab Go keele kompilaatorit valdkondade jaoks, mis nõuavad saadud koodi kompaktset esitust ja vähest ressursikulu, nagu mikrokontrollerid ja kompaktsed ühe protsessoriga süsteemid. Kood jaotatud BSD litsentsi alusel.

Erinevate sihtplatvormide kompileerimine toimub LLVM-i abil ja keele toetamiseks kasutatakse Go projekti põhitööriistakomplektis kasutatavaid teeke. Koostatud programmi saab otse mikrokontrolleritel käivitada, võimaldades Go-d kasutada automatiseerimisskriptide kirjutamise keelena.

Uue projekti loomise ajendiks oli soov kasutada kompaktsetes seadmetes tuttavat Go keelt - arendajad põhjendasid, et kui mikrokontrolleritele oli Pythoni versioon, siis miks mitte luua samasugune ka Go keele jaoks. Mine valitud Rusti asemel, sest seda on lihtsam õppida, see pakub lõimest sõltumatut tuge korutiinipõhiseks paralleelstamiseks ja pakub ulatuslikku standardteeki ("kaasas akud").

Praegusel kujul toetatakse 15 mikrokontrolleri mudelit, sealhulgas erinevad plaadid firmadelt Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary ja Phytec. Programme saab kompileerida ka WebAssembly-vormingus brauseris käitamiseks ja Linuxi täitmisfailidena. Toetab ESP8266/ESP32 kontrollereid Mitte veel, kuid töötatakse välja eraldi projekt, et lisada tugi LLVM-is Xtensa kiibile, mis on endiselt märgitud ebastabiilseks ega ole valmis TinyGoga integreerimiseks.

Projekti peamised eesmärgid:

  • Väga kompaktsete käivitatavate failide genereerimine;
  • Mikrokontrolleriplaatide levinumate mudelite tugi;
  • Rakenduse võimalus veebis;
  • CGo tugi minimaalse üldkuluga funktsioonide C-s helistamisel;
  • Enamiku standardpakettide tugi ja võimalus kompileerida standardset olemasolevat koodi ilma seda muutmata.

    Mitmetuumaliste süsteemide toetamine ei kuulu peamiste eesmärkide hulka,
    tohutu hulga korutiinide tõhus käivitamine (korutiinide käivitamine ise on täielikult toetatud), etalonkompilaatori gc jõudlustaseme saavutamine (optimeerimine on jäetud LLVM-i hooleks ja mõnes rakenduses võib Tinygo olla kiirem kui gc) ja lõpetamine ühilduvus kõigi Go rakendustega.

    Peamine erinevus sarnasest kompilaatorist emgo on katse säilitada Go algne mäluhaldusmudel, kasutades prügikogumist ja kasutada LLVM-i tõhusa koodi genereerimiseks, selle asemel et kompileerida see C-esitusse. Tinygo pakub ka uut käitusaja teeki, mis rakendab kompaktsete süsteemide jaoks optimeeritud planeerijat, mälujaotussüsteemi ja stringikäsitlejaid. Mõned paketid, nagu sünkroonimine ja peegeldamine, on uue käitusaja põhjal uuesti loodud.

    Väljalaske 0.7 muudatuste hulgas on käsu "tinygo test" rakendamine, prügikoristustoe pakkumine enamikule sihtplaatidele (ARM Cortex-M baasil) ja WebAssembly, tugi RISC-põhisele HiFive1 rev B plaadile. V arhitektuur ja Arduino nano33 plaat,
    täiustatud keeletugi (tugi bitiväljadele, kasutades gettereid ja settereid, tugi anonüümsetele struktuuridele).

    Allikas: opennet.ru

  • Lisa kommentaar