Թողարկվել է Tinygo 0.40-ը՝ Go լեզվի կոմպիլյատորը։ Կոմպիլյատորը հարմար է ցածր հզորության համակարգերի, ինչպիսիք են միկրոկառավարիչները և ներդրված սարքերը, համար կոմպակտ կատարվող ֆայլեր ստեղծելու համար, որոնց ծրագրերը պետք է սպառեն նվազագույն հիշողություն և հաշվողական ռեսուրսներ։ Աջակցվող թիրախային հարթակների համար կոմպիլյացիան իրականացվում է LLVM-ի միջոցով, իսկ ֆունկցիաների գրադարանները փոխառված են Go գործիքակազմի հիմնական շղթայից։ Կոդը տարածվում է BSD լիցենզիայով։
Կոմպիլացված ծրագիրը կարող է անմիջապես աշխատել միկրոկառավարիչների վրա, ինչը թույլ է տալիս օգտագործել Go լեզվի ենթաբազմություն ավտոմատացման սկրիպտներ գրելու համար: Աջակցվում են ավելի քան 100 միկրոկառավարիչների մոդելներ, այդ թվում՝ Adafruit, Arduino, BBC micro, ESP32, M5Stack, ST Micro, Digispark, Raspberry Pi Pico, Nordic Semiconductor, SiFive HiFive1, STM32, Makerdiary և Phytec տարբեր տախտակներ: Հատուկ դրայվերներ են տրամադրվում սենսորների և միացված արտաքին սարքերի հետ փոխազդելու, ինչպես նաև I2C, GPIO և SPI նման ինտերֆեյսներին աջակցելու համար:
Ի տարբերություն նմանատիպ emgo կոմպիլյատորի, որը չի թարմացվել չորս տարի, tinygo-ն պահպանում է Go-ի սկզբնական աղբահանված հիշողության կառավարման մոդելը, և C ներկայացման մեջ կոմպիլյացիայի փոխարեն այն օգտագործում է LLVM՝ մեքենայական կոդն անմիջապես ստեղծելու համար: Ծրագրերը կարող են օգտագործել առկա Go կոդը այնպես, ինչպես կա, ինչպես նաև ստանդարտ փաթեթների մեծ մասը: Մեքենայական կոդ ստեղծելուց բացի, tinygo-ն աջակցում է WebAssembly բայթկոդի ստեղծումը՝ թույլ տալով ստեղծել ինքնուրույն WebAssembly հավելվածներ՝ օգտագործելով WASI (WebAssembly System Interface):
Նոր տարբերակում.
- Կատարվել են աղբահանության օպտիմալացումներ, որոնց արդյունքում կատարողականը բարձրացել է մինչև 10%-ով։
- LLVM 20 գործիքաշարի աջակցությունն արդեն ներդրվել է։
- Ավելացվել է աջակցություն ESP32-S3 հարթակի, ինչպես նաև Xiao ESP32-S3, Gopher ARCADE և Pico2-Ice տախտակների համար։
- Ավելացվել է go-compatibility դրոշը և TINYGO_GOCOMPATIBILITY միջավայրի փոփոխականը՝ հայտարարված Go լեզվի տարբերակի հետ համատեղելիության ստուգումն անջատելու համար։
- Գլոբալ փոփոխականների և ֆունկցիաների համար, «//go:linkname» պրագման միացված է «//go:extern»-ից բացի։
- Կոմպիլյատորն այժմ աջակցում է տողային պարամետրերը որպես միայն ընթերցման նշելը։
- Հետաձգված կանչերով ցիկլերը (հետաձգման օպերատոր) հայտնաբերելու համար կոմպիլյատորն օգտագործում է Tarjan-ի սերտորեն կապված բաղադրիչների որոնման ալգորիթմը։
Source: opennet.ru
