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-ի հետ ինտեգրվելու համար։

Ծրագրի հիմնական նպատակները.

  • Շատ կոմպակտ գործարկվող ֆայլերի ստեղծում;
  • Աջակցություն միկրոկոնտրոլերի վահանակների ամենատարածված մոդելներին;
  • Համացանցում կիրառելու հնարավորություն;
  • CGo-ի աջակցություն՝ նվազագույն գերավճարով C-ով գործառույթներ կանչելիս;
  • Ստանդարտ փաթեթների մեծ մասի աջակցություն և գոյություն ունեցող ընդհանուր ծածկագիրը առանց այն փոխելու կազմելու հնարավորություն:

    Բազմամիջուկ համակարգերի աջակցությունը հիմնական նպատակներից չէ,
    հսկայական թվով կորոուտինների արդյունավետ գործարկում (ինքնին կորոուտինների գործարկումն ամբողջությամբ ապահովված է), տեղեկատու կազմող 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

  • Добавить комментарий