projekti vĂ€ljalase , 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 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 Rusti asemel, sest seda on lihtsam Ôppida, see pakub lÔimest sÔltumatut tuge korutiinipÔhiseks paralleelstamiseks ja pakub ulatuslikku standardteeki ("kaasas akud").
Praegu toetatakse 15 mikrokontrolleri mudelit, sealhulgas mitmesuguseid Adafruiti, Arduino, BBC micro:biti, ST Micro, Digisparki, Nordic Semiconductori, Makerdiary ja Phyteci plaate. Programme saab kompileerida ka brauseris kÀivitamiseks WebAssembly vormingus ja kÀivitatavate failidena. LinuxESP8266/ESP32 kontrollerite tugi , 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:
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 kÔigi Go rakendustega.
Peamine erinevus sarnasest kompilaatorist 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
