Die neue Version des Tinygo-Projekts 0.32 ist verfügbar, das den Go-Compiler für Bereiche entwickelt, in denen eine kompakte Darstellung des generierten Codes und ein niedriger Ressourcenverbrauch erforderlich sind, wie z. B. bei Mikrocontrollern und kompakten Einprozessorsystemen. Die Kompilierung für verschiedene Zielplattformen erfolgt mithilfe von LLVM, und zur Unterstützung der Sprache werden hauptsächlich die Bibliotheken aus dem Go-Projekt verwendet. Der Code wird unter der BSD-Lizenz verbreitet.
Das kompilierte Programm kann direkt auf Mikrocontrollern ausgeführt werden, was es ermöglicht, Go als Sprache zur Automatisierungsskripterstellung zu verwenden. Aktuell werden über einhundert Modelle von Mikrocontrollern unterstützt, darunter verschiedene Adafruit-Boards, Arduino, BBC micro, ESP32, M5Stack, ST Micro, Digispark, Raspberry Pi Pico, Nordic Semiconductor, SiFive HiFive1, STM32, Makerdiary und Phytec. Zur Interaktion mit Sensoren und angeschlossenen externen Geräten sowie zur Unterstützung von Schnittstellen wie I2C, GPIO und SPI stehen spezielle Treiber zur Verfügung.
Programme können auch im WebAssembly-Format (wasm/wasi) für die Ausführung im Browser und als ausführbare Dateien für Linux erstellt werden.
Hauptziele des Projekts:
- Die Möglichkeit, ein Teilmenge der vertrauten Programmiersprache Go auf kompakten Geräten zu verwenden. Die Sprache Go wurde anstelle von Rust gewählt, da sie einfacher zu erlernen ist, unabhängige Unterstützung für paralleles Arbeiten auf der Grundlage von Koroutinen bietet und eine umfangreiche Standardbibliothek („Batterien sind enthalten“) mitbringt.
- Generierung von sehr kompakten ausführbaren Dateien.
- Unterstützung der gängigsten Modelle von Mikrocontroller-Platinen.
- Anwendungsmöglichkeiten für das Web und die Erstellung isolierter WebAssembly-Anwendungen, unter Verwendung der WASI-Schnittstelle (WebAssembly System Interface) für den Umgang mit Dateien, Sockets und anderen Funktionen, die vom Betriebssystem bereitgestellt werden.
- Unterstützung von CGo mit minimalen Overheadkosten beim Aufruf von Funktionen in der Programmiersprache C.
- Unterstützung der meisten Standardpakete und die Möglichkeit, bestehenden typisierten Code ohne Änderungen zu kompilieren.
- Im Gegensatz zum zurzeit veralteten Compiler emgo verwendet Tinygo das originale Speicherverwaltungskonzept von Go mit Garbage Collection und nutzt LLVM, um effizienten Maschinencode zu generieren, anstatt in C-Code zu kompilieren.
Die neue Version bietet Unterstützung für Platinen und Chips wie Pico W, Adafruit ESP32 Feather V2, M5 Paper, PCA10059, stm32 nucleol476rg und Pimoroni Badger2040-W. Sie ist kompatibel mit LLVM 18 und ermöglicht die Verwendung von Leerzeichen in den Namen von Speichern im UF2-Format. Für die ESP32-Plattform wurde die Unterstützung für den I2C-Bus hinzugefügt. Die Unterstützung für WebAssembly wurde erweitert.
Quelle: opennet.ru
