Tinygo 0.7.0, uz LLVM balstīta Go kompilatora izlaišana

Pieejams projekta izlaidums Tinygo 0.7.0, kas izstrādā Go valodas kompilatoru jomām, kurās nepieciešams kompakts iegūtā koda attēlojums un zems resursu patēriņš, piemēram, mikrokontrolleri un kompaktas viena procesora sistēmas. Kods izplata saskaņā ar BSD licenci.

Kompilācija dažādām mērķa platformām tiek īstenota, izmantojot LLVM, un valodas atbalstam tiek izmantotas Go projekta galvenajā rīku komplektā izmantotās bibliotēkas. Sastādīto programmu var tieši darbināt uz mikrokontrolleriem, ļaujot Go izmantot kā valodu automatizācijas skriptu rakstīšanai.

Motivācija jauna projekta izveidei bija vēlme kompaktajās ierīcēs izmantot pazīstamo Go valodu - izstrādātāji sprieda, ja jau ir Python versija mikrokontrolleriem, tad kāpēc gan neizveidot līdzīgu Go valodai. Aiziet atlasīts Rust vietā, jo to ir vieglāk iemācīties, nodrošina no pavedieniem neatkarīgu atbalstu korutīnai balstītai paralelizācijai un piedāvā plašu standarta bibliotēku (“iekļauti akumulatori”).

Pašreizējā formā tiek atbalstīti 15 mikrokontrolleru modeļi, tostarp dažādas plates no Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary un Phytec. Programmas var arī kompilēt, lai tās darbotos pārlūkprogrammā WebAssembly formātā un kā izpildāmos failus operētājsistēmai Linux. Atbalsta ESP8266/ESP32 kontrolierus Vēl nē, taču tiek izstrādāts atsevišķs projekts, lai pievienotu atbalstu Xtensa mikroshēmai LLVM, kas joprojām ir atzīmēta kā nestabila un nav gatava integrācijai ar TinyGo.

Projekta galvenie mērķi:

  • Ļoti kompaktu izpildāmo failu ģenerēšana;
  • Atbalsts izplatītākajiem mikrokontrolleru plates modeļiem;
  • Iespēja lietot Web;
  • CGo atbalsts ar minimālām izmaksām, izsaucot funkcijas C;
  • Atbalsts lielākajai daļai standarta pakotņu un iespēja apkopot vispārēju esošo kodu, to nemainot.

    Atbalsts daudzkodolu sistēmām nav viens no galvenajiem mērķiem,
    efektīva milzīga skaita korutīnu palaišana (paša korutīnu palaišana ir pilnībā atbalstīta), atsauces kompilatora gc veiktspējas līmeņa sasniegšana (optimizācija ir atstāta LLVM ziņā un dažās lietojumprogrammās Tinygo var būt ātrāka par gc) un pabeigta savietojamība ar visām Go lietojumprogrammām.

    Galvenā atšķirība no līdzīga kompilatora emgo ir mēģinājums saglabāt Go sākotnējo atmiņas pārvaldības modeli, izmantojot atkritumu savākšanu, un izmantot LLVM, lai ģenerētu efektīvu kodu, nevis kompilētu to C attēlojumā. Tinygo piedāvā arī jaunu izpildlaika bibliotēku, kas ievieš plānotāju, atmiņas piešķiršanas sistēmu un virkņu apstrādātājus, kas optimizēti kompaktām sistēmām. Dažas pakotnes, piemēram, sinhronizācija un atspoguļošana, ir izveidotas no jauna, pamatojoties uz jauno izpildlaiku.

    Starp izmaiņām versijā 0.7 ir iekļauta komandas “tinygo test” ieviešana, atkritumu savākšanas atbalsta nodrošināšana lielākajai daļai mērķa paneļu (pamatojoties uz ARM Cortex-M) un WebAssembly, atbalsts HiFive1 rev B platei, kuras pamatā ir RISC- V arhitektūra un Arduino nano33 plate,
    uzlabots valodas atbalsts (atbalsts bitu laukiem, izmantojot ieguvējus un iestatītājus, atbalsts anonīmām struktūrām).

    Avots: opennet.ru

  • Pievieno komentāru