Release van Tinygo 0.7.0, op LLVM gebaseerde Go-compiler

Beschikbaar projectuitgave Tinygo 0.7.0, dat een Go-taalcompiler ontwikkelt voor gebieden die een compacte weergave van de resulterende code en een laag bronnenverbruik vereisen, zoals microcontrollers en compacte systemen met één processor. Code gedistribueerd door onder BSD-licentie.

Compilatie voor verschillende doelplatforms wordt geΓ―mplementeerd met behulp van LLVM, en bibliotheken die worden gebruikt in de hoofdtoolkit van het Go-project worden gebruikt om de taal te ondersteunen. Het gecompileerde programma kan rechtstreeks op microcontrollers worden uitgevoerd, waardoor Go kan worden gebruikt als taal voor het schrijven van automatiseringsscripts.

De motivatie voor het creΓ«ren van een nieuw project was de wens om de bekende Go-taal op compacte apparaten te gebruiken - de ontwikkelaars redeneerden dat als er een Python-versie voor microcontrollers was, waarom dan niet een soortgelijke versie voor de Go-taal zouden maken. Gaan geselecteerd in plaats van Rust omdat het gemakkelijker te leren is, thread-onafhankelijke ondersteuning biedt voor op coroutine gebaseerde parallellisatie en een uitgebreide standaardbibliotheek biedt (β€œinclusief batterijen”).

Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ поддСрТиваСтся 15 ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ‹ Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary ΠΈ Phytec. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ собраны для запуска Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ WebAssembly ΠΈ Π² Π²ΠΈΠ΄Π΅ исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² для Linux. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² ESP8266/ESP32 Nog niet, maar er wordt een apart project ontwikkeld om ondersteuning toe te voegen voor de Xtensa-chip in LLVM, die nog steeds als onstabiel is gemarkeerd en niet klaar is voor integratie met TinyGo.

Belangrijkste projectdoelen:

  • Genereren van zeer compacte uitvoerbare bestanden;
  • Ondersteuning voor de meest voorkomende modellen microcontrollerkaarten;
  • Mogelijkheid tot toepassing voor het web;
  • CGo-ondersteuning met minimale overhead bij het aanroepen van functies in C;
  • Ondersteuning voor de meeste standaardpakketten en de mogelijkheid om bestaande standaardcode te compileren zonder deze te wijzigen.

    Ondersteuning voor multi-coresystemen behoort niet tot de hoofddoelen,
    efficiΓ«nte lancering van een groot aantal coroutines (de lancering van coroutines zelf wordt volledig ondersteund), het bereiken van het prestatieniveau van de referentiecompiler gc (optimalisatie wordt overgelaten aan LLVM en in sommige toepassingen kan Tinygo sneller zijn dan gc) en voltooid verenigbaarheid met alle Go-applicaties.

    Het belangrijkste verschil met een vergelijkbare compiler emgo is een poging om het oorspronkelijke geheugenbeheermodel van Go te behouden met behulp van garbagecollection en LLVM te gebruiken om efficiΓ«nte code te genereren in plaats van deze naar een C-representatie te compileren. Tinygo biedt ook een nieuwe runtimebibliotheek die een planner, een geheugentoewijzingssysteem en stringhandlers implementeert die zijn geoptimaliseerd voor compacte systemen. Sommige pakketten, zoals sync en reflect, zijn opnieuw gemaakt op basis van de nieuwe runtime.

    Tot de veranderingen in release 0.7 behoren de implementatie van het commando β€˜tinygo test’, het bieden van ondersteuning voor garbagecollection voor de meeste doelborden (gebaseerd op ARM Cortex-M) en WebAssembly, ondersteuning voor het HiFive1 rev B-bord gebaseerd op de RISC- V-architectuur en het Arduino nano33-bord,
    verbeterde taalondersteuning (ondersteuning voor bitvelden met behulp van getters en setters, ondersteuning voor anonieme structuren).

    Bron: opennet.ru

  • Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers πŸ”₯ Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster