Liberigo de Tinygo 0.7.0, LLVM-bazita Go-kompililo

Disponebla projekteldono Tinygo 0.7.0, kiu evoluigas Go-lingvan kompililon por areoj kiuj postulas kompaktan reprezentadon de la rezulta kodo kaj malaltan resursokonsumon, kiel ekzemple mikroregiloj kaj kompaktaj unu-procesoraj sistemoj. Kodo distribuita de sub la permesilo BSD.

Kompilo por diversaj celplatformoj estas efektivigita uzante LLVM, kaj bibliotekoj uzitaj en la ĉefa ilaro de la Go-projekto estas uzitaj por subteni la lingvon. La kompilita programo povas esti rekte rulita sur mikroregiloj, permesante al Go esti uzata kiel lingvo por verki aŭtomatigajn manuskriptojn.

La instigo por krei novan projekton estis la deziro uzi la konatan Go-lingvon sur kompaktaj aparatoj - la programistoj rezonis, ke se ekzistas Python-versio por mikroregiloj, kial ne krei similan por la Go-lingvo. Iru elektita anstataŭ Rust ĉar ĝi estas pli facile lernebla, disponigas faden-sendependan subtenon por korutin-bazita paraleligo, kaj ofertas ampleksan norman bibliotekon ("baterioj inkluzivitaj").

En ĝia nuna formo, 15 mikroregilaj modeloj estas subtenataj, inkluzive de diversaj tabuloj de Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary kaj Phytec. Programoj ankaŭ povas esti kompilitaj por funkcii en retumilo en WebAssembly-formato kaj kiel ruleblaj dosieroj por Linukso. Subtenas ESP8266/ESP32-regilojn Ankoraŭ ne, sed aparta projekto estas evoluigita por aldoni subtenon por la blato Xtensa en LLVM, kiu ankoraŭ estas markita kiel malstabila kaj ne preta por integriĝo kun TinyGo.

Ĉefaj projektceloj:

  • Generacio de tre kompaktaj ruleblaj dosieroj;
  • Subteno por la plej oftaj modeloj de mikroregilaj tabuloj;
  • Eblo de apliko por la Reto;
  • CGo-subteno kun minimuma ŝarĝo dum vokado de funkcioj en C;
  • Subteno por la plej multaj normaj pakaĵoj kaj la kapablo kompili norman ekzistantan kodon sen ŝanĝi ĝin.

    Subteno por plurkernaj sistemoj ne estas inter la ĉefaj celoj,
    efika lanĉo de grandega nombro da korutinoj (la lanĉo de korutinoj mem estas plene subtenata), atingo de la rendimento-nivelo de la referenca kompililo gc (optimumigo estas lasita al LLVM kaj en iuj aplikoj Tinygo povas esti pli rapida ol gc) kaj kompleta kongrueco kun ĉiuj Go-aplikoj.

    La ĉefa diferenco de simila kompililo emgo estas provo konservi la originan memoradministradmodelon de Go uzante rubkolekton kaj uzi LLVM por generi efikan kodon anstataŭe de kompilado de ĝi al C-reprezentantaro. Tinygo ankaŭ ofertas novan rultempan bibliotekon, kiu efektivigas planilon, memor-atribuan sistemon kaj ŝnurajn prizorgilojn optimumigitajn por kompaktaj sistemoj. Kelkaj pakaĵoj, kiel sinkronigi kaj reflekti, estis rekreitaj surbaze de la nova rultempo.

    Inter la ŝanĝoj en eldono 0.7 estas la efektivigo de la "tinygo test" komando, la provizo de rubkolekta subteno por la plej multaj celtabuloj (surbaze de ARM Cortex-M) kaj WebAssembly, subteno por la HiFive1 rev B-tabulo bazita sur la RISC- V-arkitekturo kaj la Arduino nano33-tabulo,
    plibonigita lingvosubteno (subteno por bitkampoj uzantaj getters kaj setters, subteno por anonimaj strukturoj).

    fonto: opennet.ru

  • Aĉetu fidindan gastigadon por retejoj kun DDoS-protekto, VPS-VDS-serviloj 🔥 Aĉetu fidindan retejan gastigadon kun DDoS-protekto, VPS VDS-servilojn | ProHoster