Кампіляцыя для розных мэтавых платформ рэалізавана пры дапамозе LLVM, а для падтрымкі мовы прымяняюцца бібліятэкі, якія прымяняюцца ў асноўным інструментары ад праекта Go. Скампіляваная праграма напрамую можа запускацца на мікракантролерах, дазваляючы ўжываць Go у якасці мовы для напісання сцэнараў аўтаматызацыі.
Матывам стварэння новага праекту паслужыла жаданне выкарыстоўваць звыклую для сябе мову Go на кампактных прыладах – распрацоўнікі вырашылі, што калі існуе варыянт Python для мікракантролераў, то чаму б не стварыць падобнае для мовы Go. Go
У бягучым выглядзе падтрымліваецца 15 мадэляў мікракантролераў, у тым ліку розныя платы Adafruit, Arduino, BBC micro: bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary і Phytec. Праграмы таксама могуць быць сабраны для запуску ў браўзэры ў фармаце WebAssembly і ў выглядзе выкананых файлаў для Linux. Падтрымкі кантролераў ESP8266/ESP32
Ключавыя мэты праекта:
Не ўваходзіць у лік асноўных мэт падтрымка шмат'ядравых сістэм,
эфектыўны запуск велізарнай колькасці супраграм (сам па сабе запуск супраграм падтрымліваецца ў поўнай меры), дасягненне ўзроўню прадукцыйнасці эталоннага кампілятара gc (аптымізацыя аддаецца на водкуп LLVM і ў некаторых ужываннях Tinygo можа апынуцца хутчэй gc) і поўная
Асноўным адрозненнем ад падобнага кампілятара
З змен у выпуску 0.7 адзначаецца рэалізацыя каманды "tinygo test", забеспячэнне падтрымкі зборкі смецця для большасці мэтавых поплаткаў (на базе ARM Cortex-M) і WebAssembly, падтрымка платы HiFive1 rev B на аснове архітэктуры RISC-V і платы Arduino nano33,
паляпшэнне падтрымкі мовы (падтрымка бітавых палёў з выкарыстаннем гетараў і сетэраў, падтрымка ананімных структур).
Крыніца: opennet.ru