Lëshimi i Tinygo 0.7.0, përpiluesi Go i bazuar në LLVM

Në dispozicion publikimi i projektit Tinygo 0.7.0, e cila po zhvillon një përpilues të gjuhës Go për zonat që kërkojnë paraqitje kompakte të kodit që rezulton dhe konsum të ulët burimesh, si mikrokontrolluesit dhe sistemet kompakte me një procesor. Kodi shperndare nga nën licencën BSD.

Përpilimi për platforma të ndryshme të synuara zbatohet duke përdorur LLVM, dhe bibliotekat e përdorura në paketën kryesore të veglave nga projekti Go përdoren për të mbështetur gjuhën. Programi i përpiluar mund të ekzekutohet drejtpërdrejt në mikrokontrollues, duke lejuar që Go të përdoret si gjuhë për shkrimin e skripteve të automatizimit.

Motivimi për krijimin e një projekti të ri ishte dëshira për të përdorur gjuhën e njohur Go në pajisjet kompakte - zhvilluesit arsyetuan se nëse ekzistonte një version Python për mikrokontrolluesit, atëherë pse të mos krijoni një të ngjashëm për gjuhën Go. Shkoni e zgjedhur në vend të Rust sepse është më e lehtë për t'u mësuar, ofron mbështetje të pavarur nga fijet për paralelizimin e bazuar në korutinë dhe ofron një bibliotekë standarde të gjerë ("bateritë e përfshira").

Në formën e tij aktuale, mbështeten 15 modele mikrokontrollues, duke përfshirë pllaka të ndryshme nga Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary dhe Phytec. Programet gjithashtu mund të kompilohen për të ekzekutuar në një shfletues në formatin WebAssembly dhe si skedarë të ekzekutueshëm për Linux. Mbështet kontrollorët ESP8266/ESP32 Ende jo, por një projekt i veçantë është duke u zhvilluar për të shtuar mbështetje për çipin Xtensa në LLVM, i cili është ende i shënuar si i paqëndrueshëm dhe jo i gatshëm për integrim me TinyGo.

Qëllimet kryesore të projektit:

  • Gjenerimi i skedarëve të ekzekutueshëm shumë kompakt;
  • Mbështetje për modelet më të zakonshme të pllakave të mikrokontrolluesve;
  • Mundësia e aplikimit për Web;
  • Mbështetje CGo me shpenzime minimale kur thirrni funksione në C;
  • Mbështetje për shumicën e paketave standarde dhe aftësinë për të përpiluar kodin ekzistues standard pa e ndryshuar atë.

    Mbështetja për sistemet me shumë bërthama nuk është ndër qëllimet kryesore,
    nisja efikase e një numri të madh korutinash (fillimi i korutinave në vetvete mbështetet plotësisht), arritja e nivelit të performancës së përpiluesit referencë gc (optimizimi i është lënë LLVM dhe në disa aplikacione Tinygo mund të jetë më i shpejtë se gc) dhe i plotë përputhshmëria me të gjitha aplikacionet Go.

    Dallimi kryesor nga një përpilues i ngjashëm emgo është një përpjekje për të ruajtur modelin origjinal të menaxhimit të memories Go duke përdorur mbledhjen e mbeturinave dhe përdorimin e LLVM për të gjeneruar kod efikas në vend që ta përpiloni atë në një paraqitje C. Tinygo ofron gjithashtu një bibliotekë të re të ekzekutimit që zbaton një planifikues, sistem të shpërndarjes së memories dhe mbajtës të vargjeve të optimizuar për sisteme kompakte. Disa paketa, të tilla si sinkronizimi dhe reflektimi, janë rikrijuar bazuar në kohën e re të ekzekutimit.

    Ndër ndryshimet në versionin 0.7 janë zbatimi i komandës "tinygo test", ofrimi i mbështetjes për mbledhjen e mbeturinave për shumicën e tabelave të synuara (bazuar në ARM Cortex-M) dhe WebAssembly, mbështetje për bordin HiFive1 rev B bazuar në RISC- Arkitektura V dhe bordi Arduino nano33,
    mbështetje e përmirësuar e gjuhës (mbështetje për fushat e biteve duke përdorur marrës dhe vendosës, mbështetje për strukturat anonime).

    Burimi: opennet.ru

  • Shto një koment