loyiha chiqarilishi , natijada olingan kodning ixcham ko'rinishi va kam resurs sarfi talab qilinadigan sohalar, masalan, mikrokontrollerlar va ixcham bitta protsessorli tizimlar uchun Go tili kompilyatorini ishlab chiqmoqda. Kod BSD litsenziyasi ostida.
Turli maqsadli platformalar uchun kompilyatsiya LLVM yordamida amalga oshiriladi va tilni qo'llab-quvvatlash asosan Go loyihasining asboblar zanjirida ishlatiladigan kutubxonalar tomonidan ta'minlanadi. Kompilyatsiya qilingan dastur to'g'ridan-to'g'ri mikrokontrollerlarda ishlashi mumkin, bu esa Go ni avtomatlashtirish skriptlarini yozish uchun til sifatida ishlatishga imkon beradi.
Yangi loyihani yaratishga turtki bo'lgan narsa ixcham qurilmalarda tanish Go tilidan foydalanish istagi edi - ishlab chiquvchilar, agar mikrokontrollerlar uchun Python versiyasi mavjud bo'lsa, unda nima uchun Go tili uchun shunga o'xshash narsani yaratmaslik kerak, deb o'ylashdi. Rust o'rniga, chunki uni o'rganish osonroq, koroutin asosidagi parallelizm uchun ipga agnostik yordam beradi va keng qamrovli standart kutubxonani taklif qiladi ("batareyalar kiritilgan").
Hozirda 15 ta mikrokontroller modeli qo'llab-quvvatlanadi, jumladan, Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary va Phytec kabi turli xil platalar. Dasturlar brauzerni ishga tushirish uchun WebAssembly formatida va Linux bajariladigan fayllari sifatida ham kompilyatsiya qilinishi mumkin. ESP8266/ESP32 kontrollerlarini qo'llab-quvvatlash , ammo hozirda beqaror deb belgilangan va TinyGo bilan integratsiyaga tayyor emasligi sababli LLVMga Xtensa chipini qo'llab-quvvatlash uchun alohida loyiha ishlab chiqilmoqda.
Loyihaning asosiy maqsadlari:
Ko'p yadroli tizimlarni qo'llab-quvvatlash asosiy maqsadlardan biri emas,
juda ko'p miqdordagi koroutinlarni samarali ishga tushirish (koroutinlarning o'zi ishga tushirilishi to'liq qo'llab-quvvatlanadi), mos yozuvlar gc kompilyatorining ishlash darajasiga erishish (optimallashtirish LLVMga qoldiriladi va ba'zi ilovalarda Tinygo gc dan tezroq bo'lishi mumkin) va yakunlash barcha Go ilovalari bilan.
Shunga o'xshash kompilyatordan asosiy farq Tinygo Go’ning asl axlat yig‘ilgan xotira boshqaruv modelini saqlab qolishga harakat qiladi va C tasviriga kompilyatsiya qilish o‘rniga samarali kod yaratish uchun LLVM’dan foydalanadi. Tinygo shuningdek, ixcham tizimlar uchun optimallashtirilgan rejalashtiruvchi, xotira ajratish tizimi va satrlarni qayta ishlovchilarni amalga oshiradigan yangi ish vaqti kutubxonasini taklif etadi. Sync va reflect kabi bir nechta paketlar yangi ish vaqti yordamida qayta qurildi.
0.7 versiyasidagi o'zgarishlar "tinygo test" buyrug'ini amalga oshirishni, ko'pgina maqsadli platalar (ARM Cortex-M asosidagi) va WebAssembly uchun axlat yig'ishni qo'llab-quvvatlashni, RISC-V arxitekturasiga asoslangan HiFive1 rev B platasini va Arduino nano33 platasini qo'llab-quvvatlashni o'z ichiga oladi.
Yaxshilangan til qo'llab-quvvatlashi (getters va setterlardan foydalangan holda bit maydonlarini qo'llab-quvvatlash, anonim tuzilmalarni qo'llab-quvvatlash).
Manba: opennet.ru
