Die Kompilierung für verschiedene Zielplattformen wird mit LLVM implementiert, und zur Unterstützung der Sprache werden Bibliotheken verwendet, die im Haupt-Toolkit des Go-Projekts verwendet werden. Das kompilierte Programm kann direkt auf Mikrocontrollern ausgeführt werden, sodass Go als Sprache zum Schreiben von Automatisierungsskripten verwendet werden kann.
Die Motivation für die Erstellung eines neuen Projekts war der Wunsch, die bekannte Go-Sprache auf kompakten Geräten zu verwenden – die Entwickler überlegten, wenn es eine Python-Version für Mikrocontroller gäbe, warum dann nicht eine ähnliche Version für die Go-Sprache erstellen? Gehen
In der aktuellen Form werden 15 Mikrocontroller-Modelle unterstützt, darunter verschiedene Boards von Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary und Phytec. Programme können auch für die Ausführung in einem Browser im WebAssembly-Format und als ausführbare Dateien für Linux kompiliert werden. Unterstützt ESP8266/ESP32-Controller
Hauptziele des Projekts:
Die Unterstützung von Multicore-Systemen gehört nicht zu den Hauptzielen,
Effizienter Start einer großen Anzahl von Coroutinen (der Start von Coroutinen selbst wird vollständig unterstützt), Erreichen des Leistungsniveaus des Referenz-Compilers gc (die Optimierung wird LLVM überlassen und in einigen Anwendungen kann Tinygo schneller als gc sein) und vollständig
Der Hauptunterschied zu einem ähnlichen Compiler
Zu den Änderungen in Version 0.7 gehören die Implementierung des Befehls „tinygo test“, die Bereitstellung von Garbage-Collection-Unterstützung für die meisten Zielplatinen (basierend auf ARM Cortex-M) und WebAssembly sowie Unterstützung für die HiFive1-Rev.-B-Karte auf Basis des RISC- V-Architektur und das Arduino nano33-Board,
verbesserte Sprachunterstützung (Unterstützung für Bitfelder mit Gettern und Settern, Unterstützung für anonyme Strukturen).
Source: opennet.ru