Tinygo 0.7.0 шығарылымы, LLVM негізіндегі Go компиляторы

Қол жетімді жобаның шығарылымы Tinygo 0.7.0, ол алынған кодты ықшам көрсетуді және микроконтроллерлер мен шағын бір процессорлы жүйелер сияқты ресурстарды аз тұтынуды қажет ететін аймақтарға арналған 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 контроллерлерін қолдайды Әзірше емес, бірақ LLVM жүйесінде Xtensa чипіне қолдау қосу үшін бөлек жоба әзірленуде, ол әлі де тұрақсыз деп белгіленген және TinyGo-мен біріктіруге дайын емес.

Жобаның негізгі мақсаттары:

  • Өте ықшам орындалатын файлдарды құру;
  • Микроконтроллер тақшаларының кең таралған үлгілерін қолдау;
  • Web үшін қосымшаның мүмкіндігі;
  • C тілінде функцияларды шақыру кезінде ең аз үстеме шығындармен CGo қолдауы;
  • Көптеген стандартты пакеттерге қолдау көрсету және оны өзгертпей стандартты бар кодты құрастыру мүмкіндігі.

    Көп ядролы жүйелерді қолдау негізгі мақсаттар қатарына жатпайды,
    корутиндердің үлкен санын тиімді іске қосу (корутиндердің өзін іске қосу толығымен қолдау көрсетіледі), gc анықтамалық компилятордың өнімділік деңгейіне жету (оңтайландыру LLVM-ге қалдырылған және кейбір қолданбаларда Tinygo gc-тен жылдамырақ болуы мүмкін) және толық сыйысымдылық барлық Go қолданбаларымен.

    Ұқсас компилятордан басты айырмашылығы эмго қоқыс жинау арқылы Go компаниясының жадты басқарудың түпнұсқалық үлгісін сақтау әрекеті және оны C көрінісіне құрастырудың орнына тиімді кодты жасау үшін LLVM пайдалану. Tinygo сонымен қатар шағын жүйелер үшін оңтайландырылған жоспарлаушыны, жадты бөлу жүйесін және жол өңдеушілерін жүзеге асыратын жаңа жұмыс уақыты кітапханасын ұсынады. Синхрондау және көрсету сияқты кейбір бумалар жаңа орындалу уақытының негізінде қайта жасалды.

    0.7 шығарылымындағы өзгерістердің арасында «tinygo test» пәрменін жүзеге асыру, көптеген мақсатты тақталар үшін қоқыс жинауды қолдауды қамтамасыз ету (ARM Cortex-M негізінде) және WebAssembly, RISC- негізіндегі HiFive1 rev B тақтасына қолдау көрсету. V архитектурасы және Arduino nano33 тақтасы,
    жақсартылған тілдік қолдау (гетерлер мен орнатушылардың көмегімен бит өрістерін қолдау, анонимді құрылымдарды қолдау).

    Ақпарат көзі: opennet.ru

  • пікір қалдыру