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

  • Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster