projek vrystelling , wat 'n Go-taalsamesteller ontwikkel vir gebiede wat kompakte voorstelling van die gevolglike kode en lae hulpbronverbruik vereis, soos mikrobeheerders en kompakte enkelverwerkerstelsels. Kode onder die BSD-lisensie.
Samestelling vir verskeie teikenplatforms word geïmplementeer met behulp van LLVM, en biblioteke wat in die hoofgereedskapstel van die Go-projek gebruik word om die taal te ondersteun. Die saamgestelde program kan direk op mikrobeheerders uitgevoer word, sodat Go as 'n taal gebruik kan word om outomatiseringsskrifte te skryf.
Die motivering vir die skep van 'n nuwe projek was die begeerte om die bekende Go-taal op kompakte toestelle te gebruik - die ontwikkelaars het geredeneer dat as daar 'n Python-weergawe vir mikrobeheerders was, waarom dan nie 'n soortgelyke een vir die Go-taal skep nie. Gaan in plaas van Rust, want dit is makliker om te leer, bied draad-onafhanklike ondersteuning vir koroutine-gebaseerde parallelisering, en bied 'n uitgebreide standaard biblioteek ("batterye ingesluit").
In sy huidige vorm word 15 mikrobeheerdermodelle ondersteun, insluitend verskeie borde van Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary en Phytec. Programme kan ook saamgestel word om in 'n blaaier in WebAssembly-formaat en as uitvoerbare lêers vir Linux te loop. Ondersteun ESP8266/ESP32 beheerders , maar 'n aparte projek word ontwikkel om ondersteuning by te voeg vir die Xtensa-skyfie in LLVM, wat steeds as onstabiel gemerk is en nie gereed is vir integrasie met TinyGo nie.
Sleutel projek doelwitte:
Ondersteuning vir multikernstelsels is nie een van die hoofdoelwitte nie,
doeltreffende bekendstelling van 'n groot aantal koroutines (die bekendstelling van koroutines self word ten volle ondersteun), bereiking van die prestasievlak van die verwysingsamesteller gc (optimering word aan LLVM oorgelaat en in sommige toepassings kan Tinygo vinniger as gc wees) en voltooi met alle Go-toepassings.
Die belangrikste verskil van 'n soortgelyke samesteller is 'n poging om Go se oorspronklike geheuebestuursmodel te bewaar deur gebruik te maak van vullisversameling en gebruik LLVM om doeltreffende kode te genereer in plaas daarvan om dit saam te stel na 'n C-voorstelling. Tinygo bied ook 'n nuwe runtime-biblioteek wat 'n skeduleerder, geheuetoewysingstelsel en stringhanteerders wat vir kompakte stelsels geoptimaliseer is, implementeer. Sommige pakkette, soos sinchroniseer en reflekteer, is herskep op grond van die nuwe looptyd.
Onder die veranderinge in vrystelling 0.7 is die implementering van die "tinygo-toets"-opdrag, die verskaffing van vullisversameling-ondersteuning vir die meeste teikenborde (gebaseer op ARM Cortex-M) en WebAssembly, ondersteuning vir die HiFive1 rev B-bord gebaseer op die RISC- V-argitektuur en die Arduino nano33-bord,
verbeterde taalondersteuning (ondersteuning vir bisvelde met behulp van getters en opstellers, ondersteuning vir anonieme strukture).
Bron: opennet.ru
