Vydanie Tinygo 0.7.0, kompilátor Go založený na LLVM

K dispozícii vydanie projektu Tinygo 0.7.0, ktorá vyvíja kompilátor jazyka Go pre oblasti, ktoré vyžadujú kompaktnú reprezentáciu výsledného kódu a nízku spotrebu zdrojov, ako sú mikrokontroléry a kompaktné jednoprocesorové systémy. kód distribuovaný pod licenciou BSD.

Kompilácia pre rôzne cieľové platformy sa implementuje pomocou LLVM a na podporu jazyka sa používajú knižnice použité v hlavnom súbore nástrojov z projektu Go. Kompilovaný program je možné priamo spustiť na mikrokontroléroch, čo umožňuje používať Go ako jazyk na písanie automatizačných skriptov.

Motiváciou pre vytvorenie nového projektu bola túžba používať známy jazyk Go na kompaktných zariadeniach - vývojári usúdili, že ak existuje verzia Python pre mikrokontroléry, prečo nevytvoriť podobnú pre jazyk Go. Choď vybraný namiesto Rustu, pretože sa ľahšie učí, poskytuje podporu paralelizácie založenú na korutíne nezávislú od vlákien a ponúka rozsiahlu štandardnú knižnicu („batérie sú súčasťou balenia“).

V súčasnej podobe je podporovaných 15 modelov mikrokontrolérov, vrátane rôznych dosiek od spoločností Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary a Phytec. Programy je tiež možné skompilovať na spustenie v prehliadači vo formáte WebAssembly a ako spustiteľné súbory pre Linux. Podporuje ovládače ESP8266/ESP32 Ešte nie, no pripravuje sa samostatný projekt na pridanie podpory pre čip Xtensa v LLVM, ktorý je stále označený ako nestabilný a nie je pripravený na integráciu s TinyGo.

Hlavné ciele projektu:

  • Generovanie veľmi kompaktných spustiteľných súborov;
  • Podpora najbežnejších modelov dosiek mikrokontrolérov;
  • Možnosť aplikácie pre web;
  • podpora CGo s minimálnou réžiou pri volaní funkcií v jazyku C;
  • Podpora väčšiny štandardných balíkov a schopnosť zostaviť generický existujúci kód bez jeho zmeny.

    Podpora viacjadrových systémov nepatrí medzi hlavné ciele,
    efektívne spustenie veľkého množstva korutín (samotné spustenie korutín je plne podporované), dosiahnutie výkonnostnej úrovne referenčného kompilátora gc (optimalizácia je ponechaná na LLVM a v niektorých aplikáciách môže byť Tinygo rýchlejší ako gc) a kompletný kompatibilita so všetkými aplikáciami Go.

    Hlavný rozdiel od podobného kompilátora emgo je pokusom zachovať pôvodný model správy pamäte Go pomocou zberu odpadu a použiť LLVM na generovanie efektívneho kódu namiesto jeho kompilácie do C reprezentácie. Tinygo tiež ponúka novú runtime knižnicu, ktorá implementuje plánovač, systém prideľovania pamäte a manipulátory reťazcov optimalizované pre kompaktné systémy. Niektoré balíčky, ako napríklad synchronizácia a zrkadlenie, boli znovu vytvorené na základe nového runtime.

    Medzi zmeny vo verzii 0.7 patrí implementácia príkazu „tinygo test“, poskytovanie podpory zberu odpadu pre väčšinu cieľových dosiek (založené na ARM Cortex-M) a WebAssembly, podpora dosky HiFive1 rev B založenej na RISC- Architektúra V a doska Arduino nano33,
    vylepšená podpora jazykov (podpora bitových polí pomocou getterov a nastavovačov, podpora anonymných štruktúr).

    Zdroj: opennet.ru

  • Pridať komentár