Tinygo 0.7.0 kaleratzea, LLVM-n oinarritutako Go konpilatzailea

Eskuragarri proiektuaren kaleratzea Tinygo 0.7.0, Go hizkuntza-konpilatzailea garatzen ari dena, ondoriozko kodearen irudikapen trinkoa eta baliabide-kontsumo txikia behar duten arloetarako, hala nola mikrokontrolagailuak eta prozesadore bakarreko sistema trinkoak. Kodea arabera banatuta BSD lizentziapean.

Helburu-plataforma ezberdinetarako konpilazioa LLVM erabiliz inplementatzen da, eta Go proiektuko tresna-kit nagusian erabiltzen diren liburutegiak erabiltzen dira hizkuntzari laguntzeko. Konpilatutako programa zuzenean exekutatu daiteke mikrokontrolagailuetan, Go automatizazio scriptak idazteko hizkuntza gisa erabiltzeko aukera emanez.

Proiektu berri bat sortzeko motibazioa Go lengoaia ezaguna gailu trinkoetan erabiltzeko nahia izan zen; garatzaileek arrazoitu zuten mikrokontrolagailuentzako Python bertsio bat bazegoela, zergatik ez sortu Go hizkuntzarako antzeko bat. Zoaz hautatuta Rust-en ordez, ikasteko errazagoa delako, korutinean oinarritutako paralelizaziorako hari independenteko euskarria eskaintzen du eta liburutegi estandar zabala eskaintzen du ("pilak barne").

Gaur egungo forman, 15 mikrokontrolagailu modelo onartzen dira, Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary eta Phytec-en hainbat plaka barne. WebAssembly formatuan eta Linux-erako fitxategi exekutagarri gisa arakatzaile batean exekutatzeko ere konpila daitezke programak. ESP8266/ESP32 kontrolagailuak onartzen ditu Oraindik ez, baina proiektu bereizi bat garatzen ari da LLVM-n Xtensa txiparen euskarria gehitzeko, oraindik ezegonkor gisa markatuta dagoena eta TinyGorekin integratzeko prest ez dagoena.

Proiektuaren helburu nagusiak:

  • Fitxategi exekutagarri oso trinkoak sortzea;
  • Mikrokontrolagailuen plaken eredu ohikoenetarako laguntza;
  • Weberako aplikazioa egiteko aukera;
  • CGo euskarria kostu minimoarekin C-ko funtzioak deitzean;
  • Pakete estandar gehienentzako laguntza eta lehendik dagoen kode estandarra aldatu gabe konpilatzeko gaitasuna.

    Nukleo anitzeko sistemen laguntza ez dago helburu nagusien artean,
    koroutine kopuru handi baten abiarazte eraginkorra (korrutinak abiarazte bera guztiz onartzen da), erreferentzia-konpiladore gc-ren errendimendu-maila lortzea (optimizazioa LLVMren esku geratzen da eta aplikazio batzuetan Tinygo gc baino azkarragoa izan daiteke) eta osoa bateragarritasuna Go aplikazio guztiekin.

    Antzeko konpilatzaile baten alde nagusia emgo Zabor bilketa erabiliz Go-ren jatorrizko memoria kudeatzeko eredua zaintzeko eta LLVM erabiltzea kode eraginkorra sortzeko C irudikapen batean konpilatu ordez. Tinygo-k sistema trinkoetarako optimizatutako programatzaile, memoria esleitzeko sistema eta kate-kudeatzaileak inplementatzen dituen exekuzio-denborako liburutegi berri bat ere eskaintzen du. Pakete batzuk, hala nola sync eta reflect, exekuzio-denbora berrian oinarrituta birsortu dira.

    0.7 bertsioko aldaketen artean, "tinygo test" komandoa ezartzea, helburu-taula gehienentzako zabor bilketa laguntza ematea (ARM Cortex-M-n oinarrituta) eta WebAssembly, RISC-en oinarritutako HiFive1 rev B plakarako euskarria daude. V arkitektura eta Arduino nano33 plaka,
    hizkuntza-laguntza hobetu (bit-eremuen euskarria getters eta setter-ak erabiliz, egitura anonimoetarako laguntza).

    Iturria: opennet.ru

  • Gehitu iruzkin berria