projekto leidimas , kuri kuria Go kalbos kompiliatorių sritims, kuriose reikalingas kompaktiškas gauto kodo atvaizdavimas ir mažas išteklių suvartojimas, pvz., mikrovaldikliai ir kompaktiškos vieno procesoriaus sistemos. Kodas pagal BSD licenciją.
Įvairių tikslinių platformų kompiliavimas įgyvendinamas naudojant LLVM, o kalbos palaikymui naudojamos bibliotekos, naudojamos pagrindiniame projekto „Go“ įrankių rinkinyje. Sukompiliuota programa gali būti tiesiogiai paleidžiama mikrovaldikliuose, todėl Go gali būti naudojama kaip automatizavimo scenarijų rašymo kalba.
Motyvacija sukurti naują projektą buvo noras kompaktiškuose įrenginiuose naudoti pažįstamą „Go“ kalbą – kūrėjai samprotavo, kad jei yra „Python“ versija mikrovaldikliams, tai kodėl nesukūrus panašios „Go“ kalbai. Eik Vietoj Rust, nes ją lengviau išmokti, ji teikia nuo gijų nepriklausomą palaikymą korutina pagrįstam lygiagretavimui ir siūlo didelę standartinę biblioteką („baterijos įtrauktos“).
Dabartinėje formoje palaikoma 15 mikrovaldiklių modelių, įskaitant įvairias plokštes iš Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary ir Phytec. Programos taip pat gali būti sukompiliuotos, kad veiktų naršyklėje WebAssembly formatu ir kaip vykdomieji failai, skirti Linux. Palaiko ESP8266/ESP32 valdiklius , tačiau kuriamas atskiras projektas, skirtas pridėti Xtensa lusto palaikymą LLVM, kuris vis dar pažymėtas kaip nestabilus ir neparengtas integracijai su TinyGo.
Pagrindiniai projekto tikslai:
Kelių branduolių sistemų palaikymas nėra vienas iš pagrindinių tikslų,
efektyvus daugybės korutinių paleidimas (visiškai palaikomas pats korutinų paleidimas), etaloninio kompiliatoriaus gc našumo lygio pasiekimas (optimizavimas paliekamas LLVM, o kai kuriose programose Tinygo gali būti greitesnis nei gc) ir užbaigtas. su visomis „Go“ programomis.
Pagrindinis skirtumas nuo panašaus kompiliatoriaus yra bandymas išsaugoti Go originalų atminties valdymo modelį naudojant šiukšlių surinkimą ir naudoti LLVM efektyviam kodui generuoti, o ne kompiliuoti jį į C reprezentaciją. „Tinygo“ taip pat siūlo naują vykdymo laiko biblioteką, kurioje įdiegtas planuotojas, atminties paskirstymo sistema ir eilučių tvarkyklės, optimizuotos kompaktiškoms sistemoms. Kai kurie paketai, pvz., sinchronizavimas ir atspindys, buvo sukurti iš naujo pagal naują vykdymo laiką.
Tarp 0.7 versijos pakeitimų yra komandos „tinygo test“ įgyvendinimas, šiukšlių surinkimo palaikymo suteikimas daugeliui tikslinių plokščių (pagal ARM Cortex-M) ir WebAssembly, HiFive1 rev B plokštės palaikymas, pagrįstas RISC- V architektūra ir Arduino nano33 plokštė,
patobulintas kalbos palaikymas (palaikymas bitų laukams naudojant geterius ir nustatytojus, palaikymas anoniminėms struktūroms).
Šaltinis: opennet.ru
