Release fan Tinygo 0.7.0, LLVM-basearre Go-kompiler

Beskikber projekt release Tinygo 0.7.0, dy't in Go-taalkompilator ûntwikkelet foar gebieten dy't kompakte fertsjintwurdiging fan 'e resultearjende koade en lege boarneferbrûk fereaskje, lykas mikrocontrollers en kompakte systemen mei ien prosessor. Koade ferspraat troch ûnder de BSD-lisinsje.

Kompilaasje foar ferskate doelplatfoarms wurdt ymplementearre mei LLVM, en biblioteken brûkt yn 'e haadtoolkit fan it Go-projekt wurde brûkt om de taal te stypjen. It kompilearre programma kin direkt wurde útfierd op mikrocontrollers, wêrtroch Go kin wurde brûkt as taal foar it skriuwen fan automatisearringsskripts.

De motivaasje foar it meitsjen fan in nij projekt wie de winsk om de fertroude Go-taal te brûken op kompakte apparaten - de ûntwikkelders redenearren dat as d'r in Python-ferzje wie foar mikrocontrollers, wêrom dan net in ferlykber meitsje foar de Go-taal. Gean selektearre ynstee fan Rust omdat it is makliker om te learen, jout thread-ûnôfhinklike stipe foar coroutine-basearre parallelization, en biedt in wiidweidige standert bibleteek ("batterijen ynbegrepen").

Yn syn hjoeddeistige foarm wurde 15 mikrocontrollermodellen stipe, ynklusyf ferskate boards fan Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary en Phytec. Programma's kinne ek kompilearre wurde om te rinnen yn in browser yn WebAssembly-formaat en as útfierbere bestannen foar Linux. Unterstützt ESP8266/ESP32 controllers Noch net, mar in apart projekt wurdt ûntwikkele om stipe te foegjen foar de Xtensa-chip yn LLVM, dy't noch altyd markearre is as ynstabyl en net klear foar yntegraasje mei TinyGo.

Wichtige projektdoelen:

  • Generaasje fan heul kompakte útfierbere bestannen;
  • Stipe foar de meast foarkommende modellen fan microcontroller boards;
  • Mooglikheid fan tapassing foar it web;
  • CGo-stipe mei minimale overhead by it roppen fan funksjes yn C;
  • Stipe foar de measte standertpakketten en de mooglikheid om standert besteande koade te kompilearjen sûnder it te feroarjen.

    Stipe foar multi-core systemen is net ûnder de haaddoelen,
    effisjinte lansearring fan in enoarm oantal coroutines (de lansearring fan coroutines sels wurdt folslein stipe), it berikken fan it prestaasjesnivo fan 'e referinsjekompiler gc (optimisaasje wurdt oerlitten oan LLVM en yn guon applikaasjes kin Tinygo rapper wêze dan gc) en folslein kompatibiliteit mei alle Go-applikaasjes.

    It wichtichste ferskil fan in ferlykbere kompilator emgo is in besykjen om te behâlden Go syn orizjinele ûnthâld behear model mei help fan garbage kolleksje en brûk LLVM foar in generearje effisjinte koade ynstee fan it kompilearjen nei in C fertsjintwurdiging. Tinygo biedt ek in nije runtime-bibleteek dy't in planner, ûnthâldallokaasjesysteem en snaarbehannelers ymplementearret foar kompakte systemen. Guon pakketten, lykas syngronisaasje en reflektearje, binne opnij oanmakke op basis fan de nije runtime.

    Under de wizigingen yn release 0.7 binne de ymplemintaasje fan it kommando "tinygo test", it oanbieden fan garbage collection-stipe foar de measte doelboards (basearre op ARM Cortex-M) en WebAssembly, stipe foar it HiFive1 rev B board basearre op de RISC- V-arsjitektuer en it Arduino nano33-boerd,
    ferbettere taalstipe (stipe foar bitfjilden mei getters en setters, stipe foar anonime struktueren).

    Boarne: opennet.ru

  • Add a comment