Release av Tinygo 0.7.0, LLVM-baserad Go-kompilator

TillgÀngliga projekt release Tinygo 0.7.0, som utvecklar en Go-sprÄkkompilator för omrÄden som krÀver kompakt representation av den resulterande koden och lÄg resursförbrukning, sÄsom mikrokontroller och kompakta enprocessorsystem. Koda levererad av under BSD-licensen.

Kompilering för olika mÄlplattformar implementeras med hjÀlp av LLVM, och bibliotek som anvÀnds i huvudverktygslÄdan frÄn Go-projektet anvÀnds för att stödja sprÄket. Det kompilerade programmet kan köras direkt pÄ mikrokontroller, vilket gör att Go kan anvÀndas som ett sprÄk för att skriva automatiseringsskript.

Motivationen för att skapa ett nytt projekt var önskan att anvÀnda det vÀlbekanta Go-sprÄket pÄ kompakta enheter - utvecklarna resonerade att om det fanns en Python-version för mikrokontroller, varför inte skapa en liknande för Go-sprÄket. GÄ vald istÀllet för Rust eftersom det Àr lÀttare att lÀra sig, ger trÄdoberoende stöd för koroutinbaserad parallellisering och erbjuder ett omfattande standardbibliotek ("batterier medföljer").

För nÀrvarande stöds 15 mikrokontrollermodeller, inklusive olika kort frÄn Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary och Phytec. Program kan ocksÄ kompileras för webblÀsarkörning i WebAssembly-format och som körbara filer för LinuxStöd för ESP8266/ESP32-kontroller inte Àn, men ett separat projekt utvecklas för att lÀgga till stöd för Xtensa-chippet i LLVM, som fortfarande Àr markerat som instabilt och inte redo för integration med TinyGo.

Viktiga projektmÄl:

  • Generering av mycket kompakta körbara filer;
  • Stöd för de vanligaste modellerna av mikrokontrollerkort;
  • Möjlighet till applikation för webben;
  • CGo-stöd med minimal overhead vid anrop av funktioner i C;
  • Stöd för de flesta standardpaket och möjligheten att kompilera befintlig standardkod utan att Ă€ndra den.

    Stöd för flerkÀrniga system hör inte till huvudmÄlen,
    effektiv lansering av ett stort antal coroutines (lanseringen av coroutines i sig stöds fullt ut), uppnÄende av prestandanivÄn för referenskompilatorn gc (optimering lÀmnas till LLVM och i vissa applikationer kan Tinygo vara snabbare Àn gc) och fullstÀndig kompatibilitet med alla Go-applikationer.

    Den största skillnaden frÄn en liknande kompilator emgo Àr ett försök att bevara Gos ursprungliga minneshanteringsmodell genom att anvÀnda skrÀpinsamling och anvÀnda LLVM för att generera effektiv kod istÀllet för att kompilera den till en C-representation. Tinygo erbjuder ocksÄ ett nytt runtime-bibliotek som implementerar en schemalÀggare, minnesallokeringssystem och strÀnghanterare optimerade för kompakta system. Vissa paket, som sync och reflect, har Äterskapats baserat pÄ den nya körtiden.

    Bland Àndringarna i release 0.7 Àr implementeringen av kommandot "tinygo test", tillhandahÄllandet av sophÀmtningsstöd för de flesta mÄlkort (baserat pÄ ARM Cortex-M) och WebAssembly, stöd för HiFive1 rev B-kortet baserat pÄ RISC- V-arkitektur och Arduino nano33-kortet,
    förbÀttrat sprÄkstöd (stöd för bitfÀlt med hjÀlp av getters och sÀttare, stöd för anonyma strukturer).

    KĂ€lla: opennet.ru

  • Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster