projekt release , 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 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Ä 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 , 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:
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 med alla Go-applikationer.
Den största skillnaden frÄn en liknande kompilator À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
