Tinygo 0.7.0 väljaanne, LLVM-põhine Go keele kompilaator

Saadaval projekti väljalaskmine Tinygo 0.7.0, mille, millest arendatakse Go keele kompilaatorit, mis on suunatud valdkondadele, kus on vajalik kompaktne lõppkood ja madal ressursikasutus, nagu mikrokontrollerid ja kompaktsed ühe protsessoriga süsteemid. Kood GNU Üldine Avaliku litsentsi alusel. BSD litsentsi alusel.

Erinevate sihtplatvormide kompileerimine on teostatud LLVM abil ning keele toetamiseks kasutatakse peamiselt Go projekti tööriistade raamatukogusid. Kompilleeritud programm saab otse töötada mikrokontrolleritel, võimaldades Go-d kasutada automatiseerimise skriptikeelena.

Uue projekti loomise põhjuseks oli soov kasutada endale tuttavat Go keelt kompaktses seadmes — arendajad mõtlesid, et kui Python on olemas mikrokontrollerite jaoks, siis miks mitte luua midagi sarnast Go keele jaoks. Go valitud eelistatult Rustile, kuna see on lihtsam õppida, pakub sõltumatut teostusvoogude toetust koostööprotseduuride põhjal ja pakub laialdast standardraamatukogu ("aku on kaasas").

Praeguses versioonis toetatakse 15 mikrokontrolleri mudelit, sealhulgas erinevaid Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary ja Phytec plaate. Programme saab ka koostada veebibrauseris WebAssembly formaadis ja Linuxi täitfailidena. ESP8266/ESP32 kontrollerite tugi. ei ole praegu saadaval, kuid eraldi arendatakse projekti, et lisada Xtensa kiibi tugi LLVM-is, mis on praegu märgitud kui ebastabiilne ja mitte valmis TinyGo-ga integreerimiseks.

Projekti peamised eesmärgid:

  • Väga kompaktsete täitfailide genereerimine;
  • Kõige levinumate mikrokontrollerite plaatide mudelite tugi;
  • Võimalus rakendada veebis;
  • CGo tugi minimaalsete kuludega C funktsioonide kutsumise ajal;
  • Enamik standardpakettide toetamine ja võimalus kompilatsiooniks olemasoleva koodi muutmata.

    Multikaalsete süsteemide tugi ei kuulu peamiste eesmärkide hulka.
    efektiivne mitmete üheaegsete programmide käivitamine (isegi ühe programmi käivitamine on täielikult toetatud), gc standardkompilaatori jõudluse saavutamine (optimeerimine on antud LLVM hoolde, mistõttu võib Tinygo mõnes rakenduses osutuda gc-st kiiremaks) ja täielik ühilduvus kõigi Go rakendustega.

    Peamine erinevus sarnase kompilaatori emgo juures on katse säilitada Go originaalne mäluhalduse mudel, kasutades prügikoristajat ja LLVM tõhusate koodide genereerimiseks, mitte C keele esitluses kompileerimiseks. Tinygo pakub ka uut runtime-raamatukogu, kus on optimeeritud väikestele süsteemidele mõeldud graafikud, mälu jagamise süsteem ja stringide töötlejad. Uue runtime'i põhjal on loodud uuesti mõned paketid, nagu sync ja reflect.

    Versioonis 0.7 on muudatustena esile tõstetud „tinygo test“ käsu rakendamine, prügikoristamise toetamine enamikul sihtplaatidel (ARM Cortex-M baasil) ja WebAssembly, HiFive1 rev B RISC-V arhitektuuril põhineva plaadi tugi ning Arduino nano33.
    keelte toe täiustamine (bitiväljade tugi getterite ja setterite abil, anonüümsete struktuuride tugi).

    Allikas: opennet.ru

  • Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster