Avaldus projektist Tinygo 0.40 on avaldatud, mis on Go keele kompilaator. Kompilaator sobib kompaktsete täidetavate failide genereerimiseks madala võimsusega süsteemidele, nagu mikrokontrollerid ja sisseehitatud seadmed, mille programmid peavad minimaalselt tarbima mälumahtu ja arvutusvõimet. Toetatud sihtplatvormide jaoks on kompileerimine teostatud LLVM'i abil, samas kui funktsioonide teegid on laenatud Go projekti põhivahenditest. Kood levitatakse BSD litsentsi alusel.
Kompileeritud programm võib otse töötada mikrokontrolleritel, võimaldades Go keele alamosade kasutamist automatiseerimise skriptide kirjutamiseks. Toetatakse üle saja mikrokontrolleri mudeli, sealhulgas erinevad Adafruit, Arduino, BBC micro, ESP32, M5Stack, ST Micro, Digispark, Raspberry Pi Pico, Nordic Semiconductor, SiFive HiFive1, STM32, Makerdiary ja Phytec. Andurite ja ühendatud välisseadmetega suhtlemiseks, samuti selliste liideste nagu I2C, GPIO ja SPI toetamiseks on saadaval spetsiaalsed draiverid.
Erinevalt sarnasel emgo kompilaatoril, mis pole juba neli aastat uuendatud, säilitab tinygo originaalse Go mälu haldamise mudeli, kasutades prügikorjajat. C keele esituskeele koostamise asemel kasutab see LLVM-i otse masinkoodi genereerimiseks. Programmid võivad kasutada juba olemasolevat Go tüübi kodeeringut ning suurem osa standardpakettidest jääb muutumatuks. Lisaks masinkoodi genereerimisele on tinygo-s saadaval ka WebAssembly byte-koodi genereerimise tugi, võimaldades isoleeritud WebAssembly rakenduste loomist, kasutades WASI (WebAssembly System Interface) interfääri.
Uues versioonis:
- Prügikorjaja on optimeeritud. Tulemuslikkuse tõus on ulatunud kuni 10%.
- Toetatakse LLVM 20 tööriistakomplekti.
- Lisatud tugi ESP32-S3 platvormile, samuti Xiaos ESP32-S3, Gopher ARCADE ja Pico2-Ice plaatidele.
- Lisatud lipp go-compatibility ja keskkonnamuutuja TINYGO_GOCOMPATIBILITY, et keelata Go keele kuulutatud versiooniga ühilduvuse kontroll.
- Globaalsete muutuja- ja funktsioonide jaoks on aktiveeritud pragma "//go:linkname" lisaks "//go:extern".
- Kompilaatorisse on lisatud võimalus märkida stringiparameetreid kui ainult lugemiseks.
- Komplektis on tsüklite tuvastamiseks defer-käsklusega kasutatud Tarjani tugevasti seotud komponentide otsingu algoritmi.
Allikas: opennet.ru
