Veröffentlichung von Tinygo 0.7.0, LLVM-basierter Go-Compiler

VerfĂŒgbar Projektfreigabe Tinygo 0.7.0, das einen Go-Sprachcompiler fĂŒr Bereiche entwickelt, die eine kompakte Darstellung des resultierenden Codes und einen geringen Ressourcenverbrauch erfordern, wie etwa Mikrocontroller und kompakte Einzelprozessorsysteme. Code vertrieben von unter der BSD-Lizenz.

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 ausgewĂ€hlt anstelle von Rust, weil es einfacher zu erlernen ist, Thread-unabhĂ€ngige UnterstĂŒtzung fĂŒr Coroutine-basierte Parallelisierung bietet und eine umfangreiche Standardbibliothek („Batterien inklusive“) bietet.

Aktuell werden 15 Mikrocontroller-Modelle unterstĂŒtzt, darunter verschiedene Boards von Adafruit, Arduino, BBC micro:bit, STMicroelectronics, Digispark, Nordic Semiconductor, Makerdiary und Phytec. Programme können außerdem im WebAssembly-Format fĂŒr die BrowserausfĂŒhrung und als ausfĂŒhrbare Dateien kompiliert werden. LinuxUnterstĂŒtzung fĂŒr ESP8266/ES32-Controller noch nicht, aber es wird ein separates Projekt entwickelt, um UnterstĂŒtzung fĂŒr den Xtensa-Chip in LLVM hinzuzufĂŒgen, der immer noch als instabil markiert und nicht bereit fĂŒr die Integration mit TinyGo ist.

Hauptziele des Projekts:

  • Generierung sehr kompakter ausfĂŒhrbarer Dateien;
  • UnterstĂŒtzung fĂŒr die gĂ€ngigsten Modelle von Mikrocontroller-Boards;
  • Anwendungsmöglichkeit fĂŒr das Web;
  • CGo-UnterstĂŒtzung mit minimalem Overhead beim Aufrufen von Funktionen in C;
  • UnterstĂŒtzung fĂŒr die meisten Standardpakete und die Möglichkeit, generischen vorhandenen Code zu kompilieren, ohne ihn zu Ă€ndern.

    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 KompatibilitĂ€t mit allen Go-Anwendungen.

    Der Hauptunterschied zu einem Ă€hnlichen Compiler Emgo ist ein Versuch, das ursprĂŒngliche Speicherverwaltungsmodell von Go mithilfe der Garbage Collection beizubehalten und LLVM zu verwenden, um effizienten Code zu generieren, anstatt ihn in eine C-Darstellung zu kompilieren. Tinygo bietet außerdem eine neue Laufzeitbibliothek, die einen fĂŒr kompakte Systeme optimierten Scheduler, ein Speicherzuweisungssystem und String-Handler implementiert. Einige Pakete, z. B. Sync und Reflect, wurden basierend auf der neuen Laufzeit neu erstellt.

    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

  • Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz und VPS-VDS-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster