Tinygo 0.40, in compiler foar de Go-taal, is útbrocht. De compiler is geskikt foar it generearjen fan kompakte útfierbere bestannen foar systemen mei leech enerzjyferbrûk, lykas mikrokontrollers en ynbêde apparaten, waans programma's minimaal ûnthâld en berekkeningsboarnen moatte ferbrûke. Kompilaasje foar stipe doelplatfoarms wurdt ymplementearre mei LLVM, en de funksjebibleteken binne liend fan 'e kearn Go-toolchain. De koade wurdt ferspraat ûnder de BSD-lisinsje.
It kompilearre programma kin direkt op mikrokontrollers rinne, wêrtroch't in subset fan 'e Go-taal brûkt wurde kin foar it skriuwen fan automatisearringsskripts. Mear as 100 mikrokontrollermodellen wurde stipe, ynklusyf ferskate boards fan Adafruit, Arduino, BBC micro, ESP32, M5Stack, ST Micro, Digispark, Raspberry Pi Pico, Nordic Semiconductor, SiFive HiFive1, STM32, Makerdiary, en Phytec. Spesjale stjoerprogramma's wurde levere foar ynteraksje mei sensoren en ferbûne eksterne apparaten, lykas foar it stypjen fan ynterfaces lykas I2C, GPIO, en SPI.
Oars as de ferlykbere emgo-kompiler, dy't al fjouwer jier net bywurke is, behâldt tinygo it orizjinele garbage-collected ûnthâldbehearmodel fan Go, en ynstee fan te kompilearjen nei in C-representaasje, brûkt it LLVM om direkt masinekoade te generearjen. Programma's kinne besteande Go-koade sa't dy is brûke, lykas de measte standertpakketten. Neist it generearjen fan masinekoade stipet tinygo WebAssembly bytecode-generaasje, wêrtroch't selsstannige WebAssembly-applikaasjes makke wurde kinne mei de WASI (WebAssembly System Interface).
Yn de nije ferzje:
- Der binne optimalisaasjes makke foar de jiskefetkollektor, wat resultearre yn in prestaasjeferbettering fan maksimaal 10%.
- Stipe foar LLVM 20 toolchain is ymplementearre.
- Stipe tafoege foar it ESP32-S3-platfoarm, lykas Xiao ESP32-S3, Gopher ARCADE, en Pico2-Ice boards.
- De go-kompatibiliteitsflagge en de TINYGO_GOCOMPATIBILITY-omjouwingsfariabele binne tafoege om kompatibiliteitskontrôle mei de ferklearre Go-taalferzje út te skeakeljen.
- Foar globale fariabelen en funksjes is it pragma "//go:linkname" ynskeakele neist "//go:extern".
- De compiler stipet no it markearjen fan stringparameters as allinich-lêzen.
- Om syklusen mei útstelde oprop (defer-operator) te detektearjen, brûkt de compiler it strak keppele komponintsykalgoritme fan Tarjan.
Boarne: opennet.ru
