Kuburitswa kweTinygo 0.7.0, LLVM-yakavakirwa Go compiler

Inowanikwa kuburitswa kweprojekiti Tinygo 0.7.0, iyo iri kugadzira Go language compiler yenzvimbo dzinoda kumiririra kompakiti yekodhi inobuda uye yakaderera zviwanikwa kushandiswa, senge microcontrollers uye compact single-processor masisitimu. Code inoparadzirwa ne pasi peBSD rezinesi.

Kuunganidzwa kwemapuratifomu akasiyana-siyana kunoitwa pachishandiswa LLVM, uye maraibhurari anoshandiswa muchikamu chikuru chezvishandiso kubva kuGo purojekiti anoshandiswa kutsigira mutauro. Chirongwa chakabatanidzwa chinogona kumhanyisa zvakananga pamamicrocontrollers, zvichibvumira Go kushandiswa semutauro wekunyora otomatiki zvinyorwa.

Kurudziro yekugadzira purojekiti nyowani yaive chishuwo chekushandisa mutauro weGo wakajairwa pazvishandiso zvine compact - vagadziri vakafunga kuti kana paine Python vhezheni ye microcontrollers, saka wadii kugadzira yakafanana yeGo mutauro. Enda yakasarudzwa pachinzvimbo cheRust nekuti zviri nyore kudzidza, inopa shinda-yakazvimirira rutsigiro rwekoroutine-based parallelization, uye inopa yakakura yakajairwa raibhurari ("mabhatiri anosanganisirwa").

Mune chimiro chayo chazvino, 15 microcontroller modhi inotsigirwa, kusanganisira akasiyana mabhodhi kubva Adafruit, Arduino, BBC micro: bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary uye Phytec. Zvirongwa zvinogonawo kuumbwa kuti zvimhanye mubrowser muWebAssembly fomati uye semafaira anozoitwa eLinux. Inotsigira ESP8266/ESP32 controllers Kwete izvozvi, asi imwe purojekiti iri kugadzirwa yekuwedzera rutsigiro rweXtensa chip muLLVM, iyo ichiri kucherechedzwa seisina kugadzikana uye isati yagadzirira kubatanidzwa neTinyGo.

Zvinangwa zveprojekiti zvakakosha:

  • Chizvarwa chezvakanyanya compact executable mafaira;
  • Tsigiro yemhando dzakajairika dzemabhodhi emicrocontroller;
  • Kugona kwekushandisa kweWebhu;
  • CGo tsigiro ine shoma pamusoro painodaidza mabasa muC;
  • Tsigiro yeakawanda akajairwa mapakeji uye kugona kuunganidza yakajairwa kodhi iripo pasina kuichinja.

    Tsigiro ye-multi-core system haisi pakati pezvinangwa zvikuru,
    kuvhurwa kwakanaka kwenhamba huru yemakoroti (kutangwa kwema coroutines pachayo kunotsigirwa zvizere), kubudirira kweyero rekuita rereferensi compiler gc (optimization inosiiwa kuLLVM uye mune mamwe maapplication Tinygo inogona kukurumidza kupfuura gc) uye yakakwana. kugarisana nezvose Go applications.

    Musiyano mukuru kubva kune yakafanana compiler emgo kuyedza kuchengetedza Go's yepakutanga ndangariro manejimendi modhi uchishandisa kuunganidza marara uye kushandisa LLVM kugadzira inoshanda kodhi pane kuinyora kune C inomiririra. Tinygo inopawo nyowani yekumhanyisa raibhurari iyo inoshandisa scheduler, memory allocation system, uye tambo dzinobata dzakagadziridzwa kune compact masisitimu. Mamwe mapakeji, senge sync uye kuratidza, akagadzirwa patsva zvichienderana nenguva itsva yekumhanya.

    Pakati peshanduko mukuburitswa 0.7 ndeyekuitwa kwe "tinygo bvunzo" yekuraira, kupihwa kwerutsigiro rwekuunganidza marara kune akawanda anotangwa mabhodhi (zvakavakirwa paARM Cortex-M) uye WebAssembly, rutsigiro rweHiFive1 rev B bhodhi rakavakirwa paRISC- V architecture uye Arduino nano33 board,
    tsigiro yemutauro yakavandudzwa (rutsigiro rwemabhiti minda uchishandisa getters nemaseta, tsigiro yezvimiro zvisingazivikanwe).

    Source: opennet.ru

  • Voeg