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 uwakilishi thabiti wa msimbo unaotokana na matumizi ya chini ya rasilimali inahitajika, 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 usaidizi wa lugha hutolewa na maktaba zinazotumiwa hasa katika msururu wa zana za mradi wa Go. Programu iliyokusanywa inaweza kuendeshwa moja kwa moja kwenye vidhibiti vidogo, na kuruhusu Go itumike kama lugha ya kuandika hati za otomatiki.

Kichocheo cha kuunda mradi mpya kilikuwa nia ya kutumia lugha inayojulikana ya Go kwenye vifaa vya kompakt - wasanidi programu walisababu kwamba ikiwa kuna toleo la Python la vidhibiti vidogo, basi kwa nini usiunde kitu sawa kwa lugha ya Go. iliyochaguliwa badala ya Kutu kwa sababu ni rahisi kujifunza, hutoa usaidizi wa uchunguzi wa nyuzi kwa usawazishaji unaotegemea kanuni, na hutoa maktaba ya kawaida ya kina ("betri pamoja").

В текущем виде поддерживается 15 моделей микроконтроллеров, включая различные платы Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary и Phytec. Программы также могут быть собраны для запуска в браузере в формате WebAssembly и в виде исполняемых файлов для Linux. Поддержки контроллеров ESP8266/ESP32 Bado, lakini mradi tofauti unatayarishwa ili kuongeza usaidizi kwa chipu ya Xtensa kwa LLVM, ambayo kwa sasa imetiwa alama kuwa isiyo imara na ambayo haiko tayari kuunganishwa na TinyGo.

Malengo makuu ya mradi:

  • Uzalishaji wa faili ngumu sana zinazoweza kutekelezwa;
  • Msaada kwa mifano ya kawaida ya bodi ya microcontroller;
  • Tayari kwenye wavuti;
  • Usaidizi wa CGo na uendeshaji mdogo wakati wa kupiga kazi za C;
  • Usaidizi wa vifurushi vingi vya kawaida na uwezo wa kukusanya msimbo wa kawaida uliopo bila kuibadilisha.

    Msaada kwa mifumo ya msingi nyingi sio moja ya malengo kuu,
    uzinduzi wa ufanisi wa idadi kubwa ya coroutines (uzinduzi wa coroutines yenyewe unaungwa mkono kikamilifu), kufikia kiwango cha utendaji 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 Tinygo inajaribu kuhifadhi kielelezo asili cha usimamizi wa kumbukumbu iliyokusanywa ya Go na kutumia LLVM kutoa msimbo unaofaa badala ya kujumuisha 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. Vifurushi kadhaa, kama vile kusawazisha na kutafakari, vimejengwa upya kwa kutumia muda mpya wa utekelezaji.

    Mabadiliko katika toleo la 0.7 yanajumuisha utekelezaji wa amri ya "tinygo test", usaidizi wa ukusanyaji wa takataka kwa bodi nyingi lengwa (ARM Cortex-M based) na WebAssembly, usaidizi wa bodi ya HiFive1 rev B kulingana na usanifu wa RISC-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

  • Nunua upangishaji wa kuaminika wa tovuti zilizo na ulinzi wa DDoS, seva za VPS VDS 🔥 Nunua upangishaji wa tovuti unaoaminika kwa ulinzi wa DDoS, seva za VPS VDS | ProHoster