pagpagawas sa proyekto , nga nagpalambo og Go language compiler para sa mga lugar nga nagkinahanglan og compact representation sa resulta nga code ug ubos nga resource consumption, sama sa microcontrollers ug compact single-processor system. Code ubos sa lisensya sa BSD.
Ang paghugpong para sa nagkalain-laing target nga plataporma gipatuman gamit ang LLVM, ug ang mga library nga gigamit sa main toolkit gikan sa Go project gigamit sa pagsuporta sa pinulongan. Ang gihugpong nga programa mahimong direktang ipadagan sa mga microcontroller, nga nagtugot sa Go nga gamiton isip usa ka pinulongan alang sa pagsulat sa mga script sa automation.
Ang kadasig sa paghimo og bag-ong proyekto mao ang tinguha nga gamiton ang pamilyar nga Go language sa mga compact device - ang mga developers nangatarongan nga kung adunay bersyon sa Python alang sa microcontrollers, nan nganong dili maghimo og susama alang sa Go language. Lakaw imbes nga Rust tungod kay kini mas sayon nga makat-on, naghatag og thread-independent nga suporta alang sa coroutine-based parallelization, ug nagtanyag og usa ka halapad nga standard library ("lakip ang mga baterya").
Sa kasamtangan nga porma niini, 15 ka microcontroller nga mga modelo ang gisuportahan, lakip ang nagkalain-laing tabla gikan sa Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary ug Phytec. Ang mga programa mahimo usab nga i-compile aron modagan sa usa ka browser sa WebAssembly nga format ug isip mga executable nga mga file alang sa Linux. Nagsuporta sa ESP8266/ESP32 controllers , apan usa ka bulag nga proyekto ang gihimo aron makadugang suporta alang sa Xtensa chip sa LLVM, nga gimarkahan gihapon nga dili lig-on ug dili andam alang sa pag-integrate sa TinyGo.
Pangunang tumong sa proyekto:
Ang suporta alang sa mga multi-core nga sistema dili usa sa mga nag-unang katuyoan,
episyente nga paglansad sa daghang mga coroutine (ang paglansad sa mga coroutine mismo hingpit nga gisuportahan), pagkab-ot sa lebel sa pasundayag sa reference compiler gc (pag-optimize gibilin sa LLVM ug sa pipila nga mga aplikasyon ang Tinygo mahimong mas paspas kaysa gc) ug kompleto uban sa tanan nga mga aplikasyon sa Go.
Ang nag-unang kalainan gikan sa usa ka susama nga compiler usa ka pagsulay sa pagpreserbar sa orihinal nga modelo sa pagdumala sa memorya ni Go gamit ang pagkolekta sa basura ug paggamit sa LLVM aron makamugna og episyente nga code imbes nga i-compile kini ngadto sa representasyon sa C. Nagtanyag usab ang Tinygo og bag-ong library sa runtime nga nag-implementar og scheduler, memory allocation system, ug mga string handler nga na-optimize para sa mga compact system. Ang ubang mga pakete, sama sa pag-sync ug pagpamalandong, gimugna pag-usab base sa bag-ong runtime.
Lakip sa mga pagbag-o sa pagpagawas sa 0.7 mao ang pagpatuman sa "tinygo test" nga sugo, ang paghatag sa suporta sa pagkolekta sa basura alang sa kadaghanan sa mga target boards (base sa ARM Cortex-M) ug WebAssembly, suporta alang sa HiFive1 rev B board base sa RISC- V nga arkitektura ug ang Arduino nano33 board,
gipaayo nga suporta sa pinulongan (suporta alang sa mga bit field gamit ang mga getter ug setter, suporta alang sa anonymous nga mga istruktura).
Source: opennet.ru
