Izdaja Tinygo 0.7.0, prevajalnik Go, ki temelji na LLVM

Na voljo izdaja projekta Tinygo 0.7.0, ki razvija prevajalnik jezika Go za področja, ki zahtevajo kompaktno predstavitev nastale kode in nizko porabo virov, kot so mikrokontrolerji in kompaktni enoprocesorski sistemi. Koda distributer pod licenco BSD.

Kompilacija za različne ciljne platforme se izvaja z uporabo LLVM, knjižnice, ki se uporabljajo v glavnem kompletu orodij iz projekta Go, pa se uporabljajo za podporo jeziku. Prevedeni program je mogoče neposredno zagnati na mikrokontrolerjih, kar omogoča, da se Go uporablja kot jezik za pisanje skriptov za avtomatizacijo.

Motivacija za ustvarjanje novega projekta je bila želja po uporabi znanega jezika Go na kompaktnih napravah - razvijalci so menili, da če obstaja različica Python za mikrokontrolerje, zakaj potem ne bi ustvarili podobne različice za jezik Go. pojdi izbrano namesto Rusta, ker se ga je lažje naučiti, zagotavlja od niti neodvisno podporo za paralelizacijo, ki temelji na korutini, in ponuja obsežno standardno knjižnico (»baterije vključene«).

V trenutni obliki je podprtih 15 modelov mikrokontrolerjev, vključno z različnimi ploščami Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary in Phytec. Programe je mogoče prevesti tudi za izvajanje v brskalniku v formatu WebAssembly in kot izvršljive datoteke za Linux. Podpira krmilnike ESP8266/ESP32 Ne še, vendar se razvija ločen projekt za dodajanje podpore za čip Xtensa v LLVM, ki je še vedno označen kot nestabilen in ni pripravljen za integracijo s TinyGo.

Ključni cilji projekta:

  • Generiranje zelo kompaktnih izvedljivih datotek;
  • Podpora za najpogostejše modele mikrokrmilniških plošč;
  • Možnost aplikacije za splet;
  • Podpora CGo z minimalnimi stroški pri klicanju funkcij v C;
  • Podpora za večino standardnih paketov in možnost prevajanja standardne obstoječe kode brez spreminjanja.

    Podpora za večjedrne sisteme ni med glavnimi cilji,
    učinkovit zagon velikega števila korutin (sam zagon korutin je v celoti podprt), doseganje ravni zmogljivosti referenčnega prevajalnika gc (optimizacija je prepuščena LLVM in v nekaterih aplikacijah je lahko Tinygo hitrejši od gc) in popolna združljivost z vsemi aplikacijami Go.

    Glavna razlika od podobnega prevajalnika emgo je poskus ohranitve izvirnega Gojevega modela upravljanja pomnilnika z uporabo zbiranja smeti in uporabe LLVM za ustvarjanje učinkovite kode, namesto da bi jo prevedli v predstavitev C. Tinygo ponuja tudi novo izvajalno knjižnico, ki implementira razporejevalnik, sistem za dodeljevanje pomnilnika in upravljalnike nizov, optimizirane za kompaktne sisteme. Nekateri paketi, kot sta sync in reflect, so bili ponovno ustvarjeni na podlagi novega izvajalnega okolja.

    Med spremembami v izdaji 0.7 so izvedba ukaza »tinygo test«, zagotavljanje podpore za zbiranje smeti za večino ciljnih plošč (na osnovi ARM Cortex-M) in WebAssembly, podpora za ploščo HiFive1 rev B, ki temelji na RISC- V arhitektura in plošča Arduino nano33,
    izboljšana jezikovna podpora (podpora za bitna polja z uporabo pridobivalnikov in nastavljalcev, podpora za anonimne strukture).

    Vir: opennet.ru

  • Dodaj komentar