Kutolewa kwa Tinygo 0.7.0, mkusanyaji wa Go kulingana na LLVM

Inapatikana kutolewa kwa mradi Tinygo 0.7.0, ambayo inaunda mkusanyiko wa lugha ya Go kwa maeneo ambayo yanahitaji uwakilishi thabiti wa msimbo unaotokana na matumizi ya chini ya rasilimali, kama vile vidhibiti vidogo na mifumo ya kichakataji kimoja. Kanuni kusambazwa na chini ya leseni ya BSD.

Ukusanyaji wa mifumo mbalimbali inayolengwa hutekelezwa kwa kutumia LLVM, na maktaba zinazotumiwa katika zana kuu kutoka kwa mradi wa Go hutumiwa kusaidia lugha. Programu iliyokusanywa inaweza kuendeshwa moja kwa moja kwenye vidhibiti vidogo, na kuruhusu Go kutumika kama lugha ya kuandika hati za otomatiki.

Motisha ya kuunda mradi mpya ilikuwa hamu ya kutumia lugha inayojulikana ya Go kwenye vifaa vya kompakt - watengenezaji walisababu kwamba ikiwa kuna toleo la Python la vidhibiti vidogo, basi kwa nini usiunde lugha sawa kwa lugha ya Go. Nenda iliyochaguliwa badala ya Kutu kwa sababu ni rahisi kujifunza, hutoa usaidizi usiotegemea nyuzi kwa usawazishaji kulingana na utaratibu, na hutoa maktaba ya kawaida ya kina ("betri zimejumuishwa").

Katika hali yake ya sasa, mifano ya microcontroller 15 inasaidiwa, ikiwa ni pamoja na bodi mbalimbali kutoka Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary na Phytec. Programu zinaweza pia kukusanywa ili kuendeshwa katika kivinjari katika umbizo la WebAssembly na kama faili zinazoweza kutekelezeka kwa Linux. Inaauni vidhibiti vya ESP8266/ESP32 Bado, lakini mradi tofauti unatayarishwa ili kuongeza usaidizi kwa chipu ya Xtensa katika LLVM, ambayo bado imetiwa alama kuwa isiyo imara na haiko tayari kuunganishwa na TinyGo.

Malengo makuu ya mradi:

  • Uzalishaji wa faili ngumu sana zinazoweza kutekelezwa;
  • Msaada kwa mifano ya kawaida ya bodi za microcontroller;
  • Uwezekano wa maombi kwa Wavuti;
  • Usaidizi wa CGo na uendeshaji mdogo wakati wa kupiga vitendaji katika C;
  • Usaidizi wa vifurushi vingi vya kawaida na uwezo wa kukusanya msimbo wa kawaida uliopo bila kuibadilisha.

    Msaada kwa mifumo ya msingi nyingi sio kati ya malengo kuu,
    uzinduzi wa ufanisi wa idadi kubwa ya taratibu (uzinduzi wa coroutines wenyewe unaungwa mkono kikamilifu), mafanikio ya kiwango cha utendakazi cha mkusanyiko wa kumbukumbu ya gc (uboreshaji umeachwa kwa LLVM na katika programu zingine Tinygo inaweza kuwa haraka kuliko gc) na kukamilika. utangamano na maombi yote ya Go.

    Tofauti kuu kutoka kwa mkusanyaji sawa emgo ni jaribio la kuhifadhi kielelezo asili cha usimamizi wa kumbukumbu ya Go kwa kutumia mkusanyiko wa takataka na kutumia LLVM kutoa msimbo unaofaa badala ya kuikusanya kwa uwakilishi wa C. Tinygo pia hutoa maktaba mpya ya wakati wa utekelezaji ambayo hutekelezea kipanga ratiba, mfumo wa ugawaji kumbukumbu, na vishikizi vya kamba vilivyoboreshwa kwa mifumo thabiti. Baadhi ya vifurushi, kama vile kusawazisha na kutafakari, vimeundwa upya kulingana na muda mpya wa utekelezaji.

    Miongoni mwa mabadiliko katika toleo la 0.7 ni utekelezaji wa amri ya "tinygo test", utoaji wa usaidizi wa ukusanyaji wa takataka kwa bodi nyingi zinazolengwa (kulingana na ARM Cortex-M) na WebAssembly, usaidizi wa bodi ya HiFive1 rev B kulingana na RISC- Usanifu wa V na bodi ya Arduino nano33,
    usaidizi wa lugha ulioboreshwa (msaada kwa sehemu ndogo kwa kutumia getters na seti, usaidizi wa miundo isiyojulikana).

    Chanzo: opennet.ru

  • Kuongeza maoni