Megjelent a Tinygo 0.7.0, LLVM-alapú Go fordító

Elérhető projekt kiadás Tinygo 0.7.0, amely Go nyelvi fordítót fejleszt olyan területekre, ahol a kapott kód kompakt megjelenítése és alacsony erőforrás-felhasználás szükséges, mint például a mikrokontrollerek és a kompakt egyprocesszoros rendszerek. Kód forgalmazza a BSD licenc alatt.

A különféle célplatformokhoz való fordítást LLVM segítségével valósítják meg, és a Go projekt fő eszköztárában használt könyvtárakat használják a nyelv támogatására. A lefordított program közvetlenül futtatható mikrokontrollereken, így a Go nyelvként használható automatizálási szkriptek írásához.

Az új projekt létrehozásának motivációja az volt, hogy az ismerős Go nyelvet kompakt eszközökön is használni akarták – a fejlesztők úgy érveltek, hogy ha van Python-verzió mikrokontrollerekhez, akkor miért ne készíthetnénk hasonlót a Go nyelvhez. Megy kiválasztott Rust helyett, mert könnyebben megtanulható, szálfüggetlen támogatást nyújt a korutin alapú párhuzamosításhoz, és kiterjedt szabványkönyvtárat kínál ("akkumulátorok is benne vannak").

Jelenlegi formájában 15 mikrokontroller modell támogatott, köztük az Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary és Phytec különféle kártyái. A programokat böngészőben WebAssembly formátumban és futtatható fájlokként is le lehet fordítani Linux alatt. Támogatja az ESP8266/ESP32 vezérlőket még nem, de egy külön projektet fejlesztenek ki az LLVM-ben található Xtensa chip támogatására, amely még mindig instabilként van megjelölve, és nem áll készen a TinyGo-val való integrációra.

A projekt legfontosabb céljai:

  • Nagyon kompakt futtatható fájlok generálása;
  • A mikrovezérlő kártyák leggyakoribb modelljeinek támogatása;
  • Webes alkalmazás lehetősége;
  • CGo támogatás minimális többletköltséggel a függvények C nyelven történő hívásakor;
  • Támogatja a legtöbb szabványos csomagot, és a meglévő szabványos kód fordításának lehetősége annak megváltoztatása nélkül.

    A többmagos rendszerek támogatása nem tartozik a fő célok közé,
    hatalmas számú korutin hatékony elindítása (maga a korutinok elindítása teljes mértékben támogatott), a gc referencia fordító teljesítményszintjének elérése (az optimalizálás az LLVM-re van bízva, és egyes alkalmazásokban a Tinygo gyorsabb lehet, mint a gc) és kompatibilitás az összes Go alkalmazással.

    A fő különbség egy hasonló fordítóhoz képest emgo egy kísérlet arra, hogy a Go eredeti memóriakezelési modelljét szemétgyűjtéssel megőrizze, és az LLVM segítségével hatékony kódot generáljon ahelyett, hogy C-reprezentációra fordítaná. A Tinygo egy új futásidejű könyvtárat is kínál, amely ütemezőt, memóriaelosztási rendszert és karakterlánc-kezelőket valósít meg kompakt rendszerekre optimalizálva. Egyes csomagokat, például a szinkronizálást és a tükrözést, újra létrehozták az új futási környezet alapján.

    A 0.7-es kiadás változásai között szerepel a „tinygo test” parancs megvalósítása, a szemétgyűjtési támogatás biztosítása a legtöbb céltáblához (ARM Cortex-M alapú) és a WebAssembly, valamint a RISC-alapú HiFive1 rev B kártya támogatása. V architektúra és az Arduino nano33 kártya,
    továbbfejlesztett nyelvtámogatás (gettereket és settereket használó bitmezők támogatása, névtelen struktúrák támogatása).

    Forrás: opennet.ru

  • Hozzászólás