rilaxx tal-proġett , li qed tiżviluppa kompilatur tal-lingwa Go għal oqsma li jeħtieġu rappreżentazzjoni kompatta tal-kodiċi li tirriżulta u konsum baxx ta 'riżorsi, bħal mikrokontrolluri u sistemi kompatti ta' proċessur wieħed. Kodiċi taħt liċenzja BSD.
Il-kumpilazzjoni għal diversi pjattaformi fil-mira hija implimentata bl-użu tal-LLVM, u l-libreriji użati fil-għodda prinċipali mill-proġett Go jintużaw biex jappoġġjaw il-lingwa. Il-programm ikkumpilat jista 'jitħaddem direttament fuq mikrokontrolluri, li jippermetti lil Go jintuża bħala lingwa għall-kitba ta' skripts ta 'awtomazzjoni.
Il-motivazzjoni għall-ħolqien ta 'proġett ġdid kienet ix-xewqa li tuża l-lingwa Go familjari fuq apparati kompatti - l-iżviluppaturi rraġunaw li jekk kien hemm verżjoni Python għal mikrokontrolluri, allura għaliex ma toħloqx waħda simili għal-lingwa Go. Mur minflok Rust minħabba li huwa aktar faċli biex titgħallem, jipprovdi appoġġ indipendenti mill-ħajt għal parallelizzazzjoni bbażata fuq il-koroutine, u joffri librerija standard estensiva ("batteriji inklużi").
В текущем виде поддерживается 15 моделей микроконтроллеров, включая различные платы Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary и Phytec. Программы также могут быть собраны для запуска в браузере в формате WebAssembly и в виде исполняемых файлов для Linux. Поддержки контроллеров ESP8266/ESP32 , iżda qed jiġi żviluppat proġett separat biex iżżid l-appoġġ għaċ-ċippa Xtensa f'LLVM, li għadha mmarkata bħala instabbli u mhux lesta għall-integrazzjoni ma' TinyGo.
Għanijiet ewlenin tal-proġett:
L-appoġġ għal sistemi multi-core mhuwiex fost l-għanijiet ewlenin,
tnedija effiċjenti ta 'numru kbir ta' coroutines (it-tnedija ta 'coroutines innifsu huwa appoġġjat bis-sħiħ), kisba tal-livell ta' prestazzjoni tal-kompilatur ta 'referenza gc (l-ottimizzazzjoni titħalla f'idejn LLVM u f'xi applikazzjonijiet Tinygo jista' jkun aktar mgħaġġel minn gc) u kompluta bl-applikazzjonijiet kollha tal-Go.
Id-differenza ewlenija minn kompilatur simili huwa tentattiv biex jippreserva l-mudell oriġinali ta 'ġestjoni tal-memorja ta' Go billi juża l-ġbir taż-żibel u juża LLVM biex jiġġenera kodiċi effiċjenti minflok jikkompilah għal rappreżentazzjoni C. Tinygo joffri wkoll librerija ta' runtime ġdida li timplimenta scheduler, sistema ta' allokazzjoni tal-memorja, u string handlers ottimizzati għal sistemi kompatti. Xi pakketti, bħal sinkronizzazzjoni u riflessjoni, ġew ikkreati mill-ġdid abbażi tar-runtime il-ġdid.
Fost il-bidliet fir-rilaxx 0.7 hemm l-implimentazzjoni tal-kmand "tinygo test", il-provvista ta 'appoġġ għall-ġbir taż-żibel għall-biċċa l-kbira tal-bordijiet fil-mira (ibbażat fuq ARM Cortex-M) u WebAssembly, appoġġ għall-bord HiFive1 rev B ibbażat fuq RISC- L-arkitettura V u l-bord Arduino nano33,
appoġġ imtejjeb tal-lingwa (appoġġ għall-oqsma tal-bit bl-użu ta 'getters u setters, appoġġ għal strutturi anonimi).
Sors: opennet.ru
