Tinygo 0.7.0, LLVM-pohjaisen Go-kääntäjän julkaisu

Saatavilla projektin julkaisu Tinygo 0.7.0, joka kehittää Go-kielen kääntäjää alueille, joilla vaaditaan tuloksena olevan koodin kompaktia esitystapaa ja vähän resursseja kuluttavaa, kuten mikrokontrollereille ja kompakteille yhden prosessorin järjestelmille. jakelija BSD-lisenssillä.

Käännös eri kohdealustoille toteutetaan LLVM:llä, ja kielitukea tarjoavat pääasiassa Go-projektin työkaluketjussa käytetyt kirjastot. Käännetty ohjelma voi toimia suoraan mikrokontrollereissa, mikä mahdollistaa Go:n käytön kielenä automaatioskriptien kirjoittamiseen.

Uuden projektin luomisen motivaationa oli halu käyttää tuttua Go-kieltä kompakteissa laitteissa - kehittäjät päättelivät, että jos mikrokontrollereille on olemassa Python-versio, miksi ei luoda jotain vastaavaa Go-kielelle. valittu Rustin sijaan, koska se on helpompi oppia, tarjoaa säikeistä riippumattoman tuen korutiinipohjaiselle rinnakkaisuudelle ja kattavan standardikirjaston ("paristot sisältyvät hintaan").

В текущем виде поддерживается 15 моделей микроконтроллеров, включая различные платы Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary и Phytec. Программы также могут быть собраны для запуска в браузере в формате WebAssembly и в виде исполняемых файлов для Linux. Поддержки контроллеров ESP8266/ESP32 Ei vielä, mutta erillistä projektia kehitetään Xtensa-sirun tuen lisäämiseksi LLVM:ään, joka on tällä hetkellä merkitty epävakaaksi eikä valmiiksi integroitavaksi TinyGon kanssa.

Hankkeen keskeiset tavoitteet:

  • Erittäin kompaktien suoritettavien tiedostojen generointi;
  • Tuki yleisimmille mikrokontrollerikorttimalleille;
  • Verkkovalmiina;
  • CGo-tuki minimaalisella lisäkululla C-funktioita kutsuttaessa;
  • Tuki useimmille vakiopaketteille ja mahdollisuus kääntää olemassa oleva standardikoodi muuttamatta sitä.

    Moniydinjärjestelmien tuki ei ole yksi päätavoitteista,
    valtavan määrän korutiinien tehokas käynnistys (itse korutiinien käynnistys on täysin tuettu), referenssi-gc-kääntäjän suorituskykytason saavuttaminen (optimointi jätetään LLVM:lle ja joissakin sovelluksissa Tinygo voi olla nopeampi kuin gc) ja täydellinen yhteensopivuus kaikkien Go-sovellusten kanssa.

    Tärkein ero vastaavaan kääntäjään verrattuna Emgo Tinygo pyrkii säilyttämään Go:n alkuperäisen roskienkeräykseen perustuvan muistinhallintamallin ja hyödyntää LLVM:ää tehokkaan koodin luomiseen C-kielelle kääntämisen sijaan. Tinygo tarjoaa myös uuden ajonaikaisen kirjaston, joka toteuttaa ajoituksen, muistin allokointijärjestelmän ja merkkijonojen käsittelijät, jotka on optimoitu kompakteille järjestelmille. Useita paketteja, kuten sync ja reflect, on rakennettu uudelleen uutta ajonaikaista ympäristöä käyttäen.

    Versiossa 0.7 tehtyihin muutoksiin kuuluvat "tinygo test" -komennon toteutus, tuki roskienkeräykselle useimmille kohdelevyille (ARM Cortex-M -pohjaisille) ja WebAssemblylle, tuki RISC-V-arkkitehtuuriin perustuvalle HiFive1 rev B -levylle ja Arduino nano33 -levylle.
    Parannettu kielituki (tuki bittikentille gettereiden ja settereiden avulla, tuki anonyymeille rakenteille).

    Lähde: opennet.ru

  • Osta luotettava isännöinti sivustoille, joissa on DDoS-suojaus, VPS VDS -palvelimet 🔥 Osta luotettavaa verkkosivustojen hostingia DDoS-suojauksella, VPS VDS -palvelimilla | ProHoster