жобаның шығарылымы , ол микроконтроллерлер мен шағын бір процессорлы жүйелер сияқты нәтиже кодының ықшам көрінісі және ресурстарды аз тұтыну қажет аймақтарға арналған Go тілінің компиляторын әзірлеуде. Код BSD лицензиясы бойынша.
Түрлі мақсатты платформаларға арналған компиляция LLVM көмегімен жүзеге асырылады және тілдік қолдау негізінен Go жобасының құралдар тізбегінде пайдаланылатын кітапханалар арқылы қамтамасыз етіледі. Құрастырылған бағдарлама тікелей микроконтроллерлерде жұмыс істей алады, бұл Go тілін автоматтандыру сценарийлерін жазу тілі ретінде пайдалануға мүмкіндік береді.
Жаңа жобаны құрудың мотивациясы ықшам құрылғыларда таныс Go тілін қолдануға деген ұмтылыс болды - әзірлеушілер микроконтроллерлерге арналған Python нұсқасы бар болса, неге Go тілі үшін ұқсас нәрсені жасамасқа деп ойлады. Rust орнына, өйткені үйрену оңай, корутинге негізделген параллелизмге ағынды-агностикалық қолдау көрсетеді және жан-жақты стандартты кітапхананы ұсынады («батареялар кіреді»).
Қазіргі уақытта 15 микроконтроллер үлгісіне қолдау көрсетіледі, соның ішінде Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary және Phytec түрлі тақталары. Бағдарламаларды WebAssembly пішімінде және Linux орындалатын файлдары ретінде шолғышты орындау үшін де құрастыруға болады. ESP8266/ESP32 контроллерлеріне қолдау көрсету , бірақ қазіргі уақытта тұрақсыз деп белгіленген және TinyGo-мен біріктіруге дайын емес LLVM-ге Xtensa чипіне қолдау қосу үшін бөлек жоба әзірленуде.
Жобаның негізгі мақсаттары:
Көп ядролы жүйелерді қолдау негізгі мақсаттардың бірі емес,
корутиндердің үлкен санын тиімді іске қосу (корутиндердің өзі толықтай қолдау көрсетіледі), анықтамалық gc компиляторының өнімділік деңгейіне жету (оңтайландыру LLVM-ге қалдырылған және кейбір қолданбаларда Tinygo gc-тен жылдамырақ болуы мүмкін) және толық барлық Go қолданбаларымен.
Ұқсас компилятордан басты айырмашылығы Tinygo Go компаниясының қоқыс жинайтын жадты басқару үлгісін сақтауға тырысады және C көрінісіне құрастырудың орнына тиімді кодты жасау үшін LLVM қолданады. Tinygo сонымен қатар шағын жүйелер үшін оңтайландырылған жоспарлаушыны, жадты бөлу жүйесін және жол өңдеушілерін жүзеге асыратын жаңа жұмыс уақыты кітапханасын ұсынады. Синхрондау және көрсету сияқты бірнеше бума жаңа орындалу уақытын пайдаланып қайта жасалды.
0.7 шығарылымындағы өзгерістерге «tinygo test» пәрменін енгізу, көптеген мақсатты тақталар үшін қоқыс жинауды қолдау (ARM Cortex-M негізінде) және WebAssembly, RISC-V архитектурасы мен Arduino nano33 тақтасы негізіндегі HiFive1 rev B тақтасын қолдау,
Жақсартылған тілдік қолдау (гетерлер мен орнатушылардың көмегімен бит өрістерін қолдау, анонимді құрылымдарды қолдау).
Ақпарат көзі: opennet.ru
