Lëshimi i Tinygo 0.7.0, kompilerit të gjuhës Go mbi bazën e LLVM

I verfĂŒshĂ«m publikimi i projektit Tinygo 0.7.0, nĂ« kuadĂ«r tĂ« sĂ« cilĂ«s zhvillohet kompileri i gjuhĂ«s Go pĂ«r fusha nĂ« tĂ« cilat kĂ«rkohet njĂ« pĂ«rfaqĂ«sim i kompakti i kodit tĂ« rezultuar dhe konsum tĂ« ulĂ«t burimesh, siç janĂ« mikroprocesorĂ«t dhe sistemet kompakte me njĂ« procesor. Kodi distribuohet nĂ«n licencĂ«n BSD.

Kompilimi për platforma të ndryshme targetohet me ndihmën e LLVM dhe përkrahja e gjuhës realizohet përmes librarive që përdoren kryesisht në mjetet nga projekti Go. Programi i kompiluar mund të ekzekutohet direkt në mikroprocesorë, duke lejuar përdorimin e Go si gjuhë për shkruarjen e skenarëve të automatizimit.

Motivi pĂ«r krijimin e projektit tĂ« ri ishte dĂ«shira pĂ«r tĂ« pĂ«rdorur gjuhĂ«n e njohur Go nĂ« pajisje kompakte — zhvilluesit menduan se nĂ«se ekziston njĂ« variant Python pĂ«r mikroprocesorĂ«t, pse tĂ« mos krijohet diçka e tillĂ« pĂ«r gjuhĂ«n Go. Go zgjedhur nĂ« vend tĂ« Rust, pasi Ă«shtĂ« mĂ« e lehtĂ« pĂ«r t’u mĂ«suar, ofron mbĂ«shtetje tĂ« pavarur nga zbatimet pĂ«r rregullimin e punĂ«ve mbi bazĂ«n e korutinave dhe ofron njĂ« bibliotekĂ« tĂ« gjerĂ« standarde ("bateritĂ« pĂ«rfshihen nĂ« paketĂ«").

Aktualisht mbështeten 15 modele mikroprocesorësh, duke përfshirë plaka të ndryshme Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary dhe Phytec. Programet gjithashtu mund të grumbullohen për t'u ekzekutuar në shfletues në formatin WebAssembly dhe si skedarë ekzekutivë për Linux. Mbështetje për kontrolerët ESP8266/ESP32. nuk është ende e disponueshme, por një projekt të veçantë është në zhvillim për të shtuar mbështetje për cipin Xtensa në LLVM, i cili aktualisht është shënuar si i pabesueshëm dhe i papërgatitur për integrim me TinyGo.

Qëllimet kryesore të projektit:

  • Krijimi i skedarĂ«ve ekzekutivĂ« shumĂ« kompaktĂ«;
  • MbĂ«shtetje pĂ«r modelet mĂ« tĂ« zakonshme tĂ« pllakave mikroprocesorĂ«sh;
  • MundĂ«sia e pĂ«rdorimit pĂ«r Web;
  • MbĂ«shtetje pĂ«r CGo me shpenzime tĂ« minimale nĂ« thirrjen e funksioneve nĂ« gjuhĂ«n C;
  • MbĂ«shtetje pĂ«r shumicĂ«n e paketeve standarde dhe mundĂ«sia pĂ«r kompaktimin e kodit ekzistues pa e ndryshuar atĂ«.

    Nuk është në mesin e qëllimeve kryesore mbështetje për sisteme shumë-nënhere;
    ekzekutimi efikas i një numri shumë të madh të korutinave (vetë ekzekutimi i korutinave mbështetet plotësisht), arritja e nivelit të performancës së kompilatorit referencë gc (optimizimi është e lënë në dorë të LLVM dhe në disa aplikacione TinyGo mund të jetë më i shpejtë se gc) dhe plotësisht kompatibilitetin me të gjitha aplikacionet në Go.

    Dallimi kryesor nga kompajleri i ngjashëm emgo është një përpjekje për të ruajtur modelin origjinal të menaxhimit të memories Go duke përdorur mbledhësin e plehrave dhe angazhimin e LLVM për të gjeneruar kod efektiv në vend të kompilimit në një përfaqësim në gjuhën C. Tinygo gjithashtu ofron një bibliotekë të re runtime, e cila implementon një planifikues të optimizuar për sisteme kompakte, një sistem ndarjeje të memories dhe menaxhues të vargjeve. Në bazë të kësaj runtime, janë risosur disa paketa, si sync dhe reflect.

    Ndër ndryshimet në lëshimin 0.7 përmendet implementimi i komandës «tinygo test», sigurimi i mbështetjes për mbledhjen e plehrave për shumicën e bordet e synuara (bazuar në ARM Cortex-M) dhe WebAssembly, mbështetje për bordin HiFive1 rev B të bazuar në arkitekturën RISC-V dhe bordin Arduino nano33.
    përmirësimi i mbështetjes për gjuhën (mbështetje për fushat biter me përdorimin e getters dhe setters, mbështetje për struktura anonime).

    Burimi: opennet.ru

  • Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster