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, kjer sta potrebna kompaktna predstavitev nastale kode in nizka poraba virov, kot so mikrokrmilniki in kompaktni enoprocesorski sistemi. Koda distributer pod licenco BSD.

Prevajanje za različne ciljne platforme je izvedeno z uporabo LLVM, jezikovno podporo pa zagotavljajo knjižnice, ki se uporabljajo predvsem v orodni verigi projekta Go. Prevedeni program se lahko izvaja neposredno na mikrokrmilnikih, kar omogoča uporabo jezika Go kot jezika za pisanje skript za avtomatizacijo.

Motivacija za ustvarjanje novega projekta je bila želja po uporabi znanega jezika Go na kompaktnih napravah - razvijalci so sklepali, da če obstaja različica Pythona za mikrokrmilnike, zakaj potem ne bi ustvarili nečesa podobnega za jezik Go. izbrano namesto Rusta, ker ga je lažje naučiti, zagotavlja podporo za paralelizem, ki temelji na korutinah, neodvisno od niti, in ponuja obsežno standardno knjižnico ("baterije so vključene").

В текущем виде поддерживается 15 моделей микроконтроллеров, включая различные платы Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary и Phytec. Программы также могут быть собраны для запуска в браузере в формате WebAssembly и в виде исполняемых файлов для Linux. Поддержки контроллеров ESP8266/ESP32 Še ne, vendar se razvija ločen projekt za dodajanje podpore za čip Xtensa v LLVM, ki je trenutno 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 plošč mikrokrmilnikov;
  • Pripravljeno za splet;
  • Podpora za CGo z minimalnimi stroški pri klicanju funkcij C;
  • Podpora za večino standardnih paketov in možnost prevajanja standardne obstoječe kode brez spreminjanja.

    Podpora za večjedrne sisteme ni eden glavnih ciljev,
    učinkovit zagon ogromnega š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 Tinygo lahko hitrejši od gc) in popolno združljivost z vsemi aplikacijami Go.

    Glavna razlika od podobnega prevajalnika emgo Tinygo poskuša ohraniti Gojev originalni model upravljanja pomnilnika z zbiranjem smeti in namesto prevajanja v predstavitev C uporablja LLVM za ustvarjanje učinkovite kode. Tinygo ponuja tudi novo izvajalno knjižnico, ki implementira razporejevalnik, sistem za dodeljevanje pomnilnika in upravljavce nizov, optimizirane za kompaktne sisteme. Več paketov, kot sta sync in reflect, je bilo obnovljenih z uporabo novega izvajalnega okolja.

    Spremembe v izdaji 0.7 vključujejo implementacijo ukaza "tinygo test", podporo za zbiranje smeti za večino ciljnih plošč (na osnovi ARM Cortex-M) in WebAssembly, podporo za ploščo HiFive1 rev B, ki temelji na arhitekturi RISC-V, in ploščo Arduino nano33,
    Izboljšana jezikovna podpora (podpora za bitna polja z uporabo metod za pridobivanje in nastavljanje, podpora za anonimne strukture).

    Vir: opennet.ru

  • Kupite zanesljivo gostovanje za strani z DDoS zaščito, VPS VDS strežniki 🔥 Kupite zanesljivo spletno gostovanje z zaščito DDoS, VPS VDS strežniki | ProHoster