Išleistas Tinygo 0.7.0, LLVM pagrįstas Go kompiliatorius

Galima projekto leidimas Tinygo 0.7.0, kuri kuria Go kalbos kompiliatorių sritims, kuriose reikalingas kompaktiškas gauto kodo atvaizdavimas ir mažas išteklių suvartojimas, pvz., mikrovaldikliai ir kompaktiškos vieno procesoriaus sistemos. Kodas išplatino pagal BSD licenciją.

Įvairių tikslinių platformų kompiliavimas įgyvendinamas naudojant LLVM, o kalbos palaikymui naudojamos bibliotekos, naudojamos pagrindiniame projekto „Go“ įrankių rinkinyje. Sukompiliuota programa gali būti tiesiogiai paleidžiama mikrovaldikliuose, todėl Go gali būti naudojama kaip automatizavimo scenarijų rašymo kalba.

Motyvacija sukurti naują projektą buvo noras kompaktiškuose įrenginiuose naudoti pažįstamą „Go“ kalbą – kūrėjai samprotavo, kad jei yra „Python“ versija mikrovaldikliams, tai kodėl nesukūrus panašios „Go“ kalbai. Eik pasirinktas Vietoj Rust, nes ją lengviau išmokti, ji teikia nuo gijų nepriklausomą palaikymą korutina pagrįstam lygiagretavimui ir siūlo didelę standartinę biblioteką („baterijos įtrauktos“).

Dabartinėje formoje palaikoma 15 mikrovaldiklių modelių, įskaitant įvairias plokštes iš Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary ir Phytec. Programos taip pat gali būti sukompiliuotos, kad veiktų naršyklėje WebAssembly formatu ir kaip vykdomieji failai, skirti Linux. Palaiko ESP8266/ESP32 valdiklius Dar ne, tačiau kuriamas atskiras projektas, skirtas pridėti Xtensa lusto palaikymą LLVM, kuris vis dar pažymėtas kaip nestabilus ir neparengtas integracijai su TinyGo.

Pagrindiniai projekto tikslai:

  • Labai kompaktiškų vykdomųjų failų generavimas;
  • Labiausiai paplitusių mikrovaldiklių plokščių modelių palaikymas;
  • Galimybė pritaikyti žiniatinkliui;
  • CGo palaikymas su minimaliomis papildomomis sąnaudomis, kai skambinate į C funkcijas;
  • Daugumos standartinių paketų palaikymas ir galimybė kompiliuoti standartinį esamą kodą jo nekeičiant.

    Kelių branduolių sistemų palaikymas nėra vienas iš pagrindinių tikslų,
    efektyvus daugybės korutinių paleidimas (visiškai palaikomas pats korutinų paleidimas), etaloninio kompiliatoriaus gc našumo lygio pasiekimas (optimizavimas paliekamas LLVM, o kai kuriose programose Tinygo gali būti greitesnis nei gc) ir užbaigtas. suderinamumas su visomis „Go“ programomis.

    Pagrindinis skirtumas nuo panašaus kompiliatoriaus emgo yra bandymas išsaugoti Go originalų atminties valdymo modelį naudojant šiukšlių surinkimą ir naudoti LLVM efektyviam kodui generuoti, o ne kompiliuoti jį į C reprezentaciją. „Tinygo“ taip pat siūlo naują vykdymo laiko biblioteką, kurioje įdiegtas planuotojas, atminties paskirstymo sistema ir eilučių tvarkyklės, optimizuotos kompaktiškoms sistemoms. Kai kurie paketai, pvz., sinchronizavimas ir atspindys, buvo sukurti iš naujo pagal naują vykdymo laiką.

    Tarp 0.7 versijos pakeitimų yra komandos „tinygo test“ įgyvendinimas, šiukšlių surinkimo palaikymo suteikimas daugeliui tikslinių plokščių (pagal ARM Cortex-M) ir WebAssembly, HiFive1 rev B plokštės palaikymas, pagrįstas RISC- V architektūra ir Arduino nano33 plokštė,
    patobulintas kalbos palaikymas (palaikymas bitų laukams naudojant geterius ir nustatytojus, palaikymas anoniminėms struktūroms).

    Šaltinis: opennet.ru

  • Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster