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 fushat ku kërkohet përfaqësim kompakt i kodit që rezulton dhe konsum i ulët i burimeve, siç janë mikrokontrolluesit dhe sistemet kompakte me një procesor të vetëm. Kodi shperndare nga nën licencën BSD.

Kompilimi për platforma të ndryshme të synuara zbatohet duke përdorur LLVM, dhe mbështetja gjuhësore ofrohet nga bibliotekat e përdorura kryesisht në zinxhirin e mjeteve të projektit Go. Programi i kompiluar mund të funksionojë direkt në mikrokontrollues, duke lejuar që Go të përdoret si gjuhë për shkrimin e skripteve të automatizimit.

Motivimi për krijimin e projektit të ri ishte dëshira për të përdorur gjuhën e njohur Go në pajisjet kompakte - zhvilluesit arsyetuan se nëse ekziston një version Python për mikrokontrolluesit, atëherë pse të mos krijoni diçka të ngjashme për gjuhën Go. e zgjedhur në vend të Rust sepse është më i lehtë për t’u mësuar, ofron mbështetje agnostike ndaj thread-eve për paralelizmin e bazuar në korutinë dhe ofron një bibliotekë standarde gjithëpërfshirëse ("bateritë përfshihen").

Aktualisht, mbështeten 15 modele mikrokontrolluesish, 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 ekzekutim në shfletues në formatin WebAssembly dhe si skedarë të ekzekutueshëm për LinuxMbështetje për kontrolluesit ESP8266/ESP32 Jo ende, por një projekt i veçantë po zhvillohet për të shtuar mbështetje për çipin Xtensa në LLVM, i cili aktualisht është shënuar si i paqëndrueshëm dhe jo gati 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ë bordeve të mikrokontrolluesve;
  • Gati për internet;
  • Mbështetje CGo me mbingarkesë minimale gjatë thirrjes së funksioneve 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 shumëbërthamore nuk është një nga qëllimet kryesore,
    lançim efikas i një numri të madh korutinash (vetë lançimi i korutinave mbështetet plotësisht), duke arritur nivelin e performancës së përpiluesit referues gc (optimizimi i lihet 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 Tinygo përpiqet të ruajë modelin origjinal të menaxhimit të kujtesës së mbledhur nga mbeturinat e Go-së dhe shfrytëzon LLVM për të gjeneruar kod efikas në vend që të kompilojë në një përfaqësim C. Tinygo gjithashtu ofron një bibliotekë të re të kohës së ekzekutimit që zbaton një planifikues, sistem alokimi të kujtesës dhe trajtues vargjesh të optimizuar për sisteme kompakte. Disa paketa, të tilla si sync dhe reflect, janë rindërtuar duke përdorur kohën e re të ekzekutimit.

    Ndryshimet në versionin 0.7 përfshijnë zbatimin e komandës "tinygo test", mbështetje për mbledhjen e mbeturinave për shumicën e pllakave të synuara (bazuar në ARM Cortex-M) dhe WebAssembly, mbështetje për tabelën HiFive1 rev B bazuar në arkitekturën RISC-V dhe tabelën Arduino nano33,
    Mbështetje e përmirësuar gjuhësore (mbështetje për fushat e biteve që përdorin marrës dhe setues, mbështetje për struktura anonime).

    Burimi: opennet.ru

  • Bleni një host të besueshëm për faqet me mbrojtje DDoS, serverë VPS VDS 🔥 Bleni hosting të besueshëm të faqeve të internetit me mbrojtje DDoS, servera VPS VDS | ProHoster