Veröffentlichung von Tinygo 0.40, dem Compiler für die Programmiersprache Go

Die neue Version des Projekts Tinygo 0.40 wurde veröffentlicht. Dieser Compiler ist darauf ausgelegt, kompakte ausführbare Dateien für ressourcenschwache Systeme wie Mikrocontroller und eingebettete Geräte zu generieren, bei denen ein minimaler Speicher- und Rechenleistungsbedarf erforderlich ist. Die Kompilierung für die unterstützten Zielplattformen erfolgt mithilfe von LLVM, während die Funktionsbibliotheken aus dem Hauptwerkzeugsatz des Go-Projekts entlehnt sind. Der Code wird unter der BSD-Lizenz veröffentlicht.

Das kompilierte Programm kann direkt auf Mikrocontrollern ausgeführt werden, was den Einsatz eines Teilbereichs der Programmiersprache Go zur Erstellung von Automatisierungsskripten ermöglicht. Es werden über eintausend Modelle von Mikrocontrollern unterstützt, darunter verschiedene Adafruit-Platinen, Arduino, BBC micro, ESP32, M5Stack, ST Micro, Digispark, Raspberry Pi Pico, Nordic Semiconductor, SiFive HiFive1, STM32, Makerdiary und Phytec. Für die 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.

Im Gegensatz zum ähnlichen Compiler emgo, der in den letzten vier Jahren nicht aktualisiert wurde, behält tinygo das ursprüngliche Speichermanagement-Modell von Go mit einem Garbage Collector bei. Anstelle einer Kompilierung in C-Code wird LLVM zur direkten Generierung von Maschinencode verwendet. Bestehender Go-Code kann unverändert in Programmen verwendet werden, ebenso wie der Großteil der Standardpakete. Neben der Generierung von Maschinencode bietet tinygo Unterstützung für die Erstellung von WebAssembly-Bytecode, wodurch isolierte WebAssembly-Anwendungen unter Verwendung des WASI (WebAssembly System Interface) erstellt werden können.

In der neuen Version:

  • Optimierungen im Garbage Collector wurden implementiert. Der Leistungszuwachs beträgt bis zu 10%.
  • Die Unterstützung für das LLVM 20-Toolkit wurde realisiert.
  • Die Unterstützung für die ESP32-S3-Plattform sowie für die Xiaoplatine ESP32-S3, Gopher ARCADE und Pico2-Ice wurde hinzugefügt.
  • Das Flag go-compatibility und die Umgebungsvariable TINYGO_GOCOMPATIBILITY wurden hinzugefügt, um die Überprüfung der Kompatibilität mit der angegebenen Go-Version zu deaktivieren.
  • Für globale Variablen und Funktionen wurde die pragma "//go:linkname" zusätzlich zu "//go:extern" aktiviert.
  • Im Compiler wurde die Möglichkeit hinzugefügt, String-Parameter als schreibgeschützt zu kennzeichnen.
  • Um Zyklen mit verzögerten Aufrufen (defer-Anweisung) zu identifizieren, wurde im Compiler ein Algorithmus zur Suche nach stark verbundenen Komponenten von Tarjan implementiert.

Quelle: opennet.ru

Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы 🔥 Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы | ProHoster