նախագծի թողարկում , որը մշակում է 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-ի հետ ինտեգրվելու համար։
Ծրագրի հիմնական նպատակները.
Բազմամիջուկ համակարգերի աջակցությունը հիմնական նպատակներից չէ,
հսկայական թվով կորոուտինների արդյունավետ գործարկում (ինքնին կորոուտինների գործարկումն ամբողջությամբ ապահովված է), տեղեկատու կազմող gc-ի կատարողականի մակարդակի ձեռքբերում (օպտիմալացումը թողնված է LLVM-ին, իսկ որոշ հավելվածներում Tinygo-ն կարող է ավելի արագ լինել, քան gc-ն) և ամբողջական բոլոր Go հավելվածներով:
Հիմնական տարբերությունը նմանատիպ կոմպիլյատորից փորձ է պահպանել Go-ի հիշողության կառավարման սկզբնական մոդելը՝ օգտագործելով աղբահանությունը և օգտագործել LLVM՝ արդյունավետ կոդ ստեղծելու համար՝ այն C ներկայացման մեջ կոմպիլյացիայի փոխարեն: Tinygo-ն առաջարկում է նաև նոր աշխատաժամանակի գրադարան, որն ներդնում է ժամանակացույց, հիշողության բաշխման համակարգ և լարային մշակիչներ՝ օպտիմիզացված կոմպակտ համակարգերի համար: Որոշ փաթեթներ, ինչպիսիք են համաժամացումը և արտացոլումը, վերստեղծվել են նոր գործարկման ժամանակի հիման վրա:
0.7 թողարկման փոփոխություններից են «tinygo test» հրամանի իրականացումը, աղբահանության աջակցության ապահովումը թիրախ տախտակների մեծ մասի համար (հիմնված ARM Cortex-M-ի վրա) և WebAssembly-ին, աջակցություն HiFive1 rev B տախտակի վրա՝ հիմնված RISC-ի վրա: V ճարտարապետություն և Arduino nano33 տախտակ,
բարելավված լեզվական աջակցություն (աջակցություն բիթային դաշտերի՝ օգտագործելով ստացողներ և սահմանիչներ, աջակցություն անանուն կառույցներին):
Source: opennet.ru
