Vydání Tinygo 0.7.0, kompilátor Go založený na LLVM

Dostupný vydání projektu Tinygo 0.7.0, která vyvíjí kompilátor jazyka Go pro oblasti, kde je vyžadována kompaktní reprezentace výsledného kódu a nízká spotřeba zdrojů, jako jsou mikrokontroléry a kompaktní jednoprocesorové systémy. Kód distribuovány pod licencí BSD.

Kompilace pro různé cílové platformy je implementována pomocí LLVM a jazykovou podporu poskytují knihovny používané primárně v nástrojové sadě projektu Go. Zkompilovaný program lze spustit přímo na mikrokontrolérech, což umožňuje použití Go jako jazyka pro psaní automatizačních skriptů.

Motivací pro vytvoření nového projektu byla touha používat známý jazyk Go na kompaktních zařízeních - vývojáři uvažovali, že pokud existuje verze Pythonu pro mikrokontroléry, proč nevytvořit něco podobného pro jazyk Go. vybraný místo Rustu, protože se snáze učí, poskytuje podporu pro paralelismus založený na korutinách nezávislou na vláknech a nabízí komplexní standardní knihovnu („baterie jsou součástí balení“).

V současné době je podporováno 15 modelů mikrokontrolérů, včetně různých desek od společností Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary a Phytec. Programy lze také kompilovat pro spuštění v prohlížeči ve formátu WebAssembly a jako spustitelné soubory pro... LinuxPodpora pro řadiče ESP8266/ESP32 ještě ne, ale vyvíjí se samostatný projekt, který má do LLVM přidat podporu pro čip Xtensa, jenž je momentálně označen jako nestabilní a není připraven k integraci s TinyGo.

Klíčové cíle projektu:

  • Generování velmi kompaktních spustitelných souborů;
  • Podpora nejběžnějších modelů desek mikrokontrolérů;
  • Připraveno pro web;
  • Podpora CGo s minimální režií při volání funkcí v jazyce C;
  • Podpora většiny standardních balíčků a schopnost kompilovat obecný existující kód bez jeho změny.

    Podpora vícejádrových systémů není jedním z hlavních cílů,
    efektivní spouštění obrovského množství korutin (samotné spouštění korutin je plně podporováno), dosažení úrovně výkonu referenčního kompilátoru gc (optimalizace je ponechána na LLVM a v některých aplikacích může být Tinygo rychlejší než gc) a kompletní kompatibilitu se všemi aplikacemi Go.

    Hlavní rozdíl oproti podobnému kompilátoru emgo Tinygo se pokouší zachovat původní model správy paměti Go s garbage collectorem a využívá LLVM k generování efektivního kódu namísto kompilace do reprezentace v jazyce C. Tinygo také nabízí novou běhovou knihovnu, která implementuje plánovač, systém alokace paměti a obslužné rutiny řetězců optimalizované pro kompaktní systémy. Několik balíčků, jako například sync a reflect, bylo znovu sestaveno s použitím nového běhového prostředí.

    Změny ve verzi 0.7 zahrnují implementaci příkazu „tinygo test“, podporu pro garbage collection pro většinu cílových desek (založených na ARM Cortex-M) a WebAssembly, podporu pro desku HiFive1 rev B založenou na architektuře RISC-V a desku Arduino nano33.
    Vylepšená jazyková podpora (podpora bitových polí pomocí getterů a setterů, podpora anonymních struktur).

    Zdroj: opennet.ru

  • Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster