Tinygo 0.7.0 versiyasi, LLVM-ga asoslangan Go kompilyatori

Mavjud loyiha chiqarilishi Tinygo 0.7.0, mikrokontrollerlar va ixcham yagona protsessorli tizimlar kabi natijada olingan kodni ixcham taqdim etish va kam resurs sarfini talab qiladigan sohalar uchun Go tili kompilyatorini ishlab chiqmoqda. Kod tarqaladi BSD litsenziyasi ostida.

Turli maqsadli platformalar uchun kompilyatsiya LLVM yordamida amalga oshiriladi va Go loyihasining asosiy asboblar to'plamida ishlatiladigan kutubxonalar tilni qo'llab-quvvatlash uchun ishlatiladi. Kompilyatsiya qilingan dastur to'g'ridan-to'g'ri mikrokontrollerlarda ishga tushirilishi mumkin, bu Go'dan avtomatlashtirish skriptlarini yozish uchun til sifatida foydalanish imkonini beradi.

Yangi loyihani yaratishga ixcham qurilmalarda tanish Go tilidan foydalanish istagi sabab bo‘ldi - ishlab chiquvchilar agar mikrokontrollerlar uchun Python versiyasi mavjud bo‘lsa, nega Go tili uchun shunga o‘xshashini yaratmaslik kerak, degan xulosaga kelishdi. Bor tanlangan Rust o'rniga, chunki uni o'rganish osonroq, korutinga asoslangan parallellashtirish uchun ipdan mustaqil yordam beradi va keng standart kutubxonani taklif qiladi ("batareyalar kiritilgan").

Hozirgi shaklda 15 ta mikrokontroller modellari qo'llab-quvvatlanadi, jumladan Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary va Phytec kompaniyalarining turli platalari. Dasturlarni brauzerda WebAssembly formatida va Linux uchun bajariladigan fayllar sifatida ishlash uchun kompilyatsiya qilish ham mumkin. ESP8266/ESP32 kontrollerlarini qo'llab-quvvatlaydi Hali emas, ammo LLVM-da Xtensa chipini qo'llab-quvvatlash uchun alohida loyiha ishlab chiqilmoqda, u hali ham beqaror deb belgilangan va TinyGo bilan integratsiyaga tayyor emas.

Loyihaning asosiy maqsadlari:

  • Juda ixcham bajariladigan fayllarni yaratish;
  • Mikrokontroller platalarining eng keng tarqalgan modellarini qo'llab-quvvatlash;
  • Internet uchun ariza berish imkoniyati;
  • Cda funksiyalarni chaqirishda minimal yuk bilan CGo qo'llab-quvvatlash;
  • Ko'pgina standart paketlarni qo'llab-quvvatlash va standart mavjud kodni o'zgartirmasdan kompilyatsiya qilish qobiliyati.

    Ko'p yadroli tizimlarni qo'llab-quvvatlash asosiy maqsadlar qatoriga kirmaydi,
    juda ko'p sonli koroutinlarni samarali ishga tushirish (koroutinlarning o'zi to'liq qo'llab-quvvatlanadi), gc mos yozuvlar kompilyatorining ishlash darajasiga erishish (optimallashtirish LLVM ga qoldiriladi va ba'zi ilovalarda Tinygo gc dan tezroq bo'lishi mumkin) va to'liq muvofiqligi barcha Go ilovalari bilan.

    Shunga o'xshash kompilyatordan asosiy farq emgo axlat yig'ish yordamida Go'ning asl xotira boshqaruv modelini saqlab qolishga urinishdir va uni C ko'rinishiga kompilyatsiya qilish o'rniga samarali kod yaratish uchun LLVM dan foydalaning. Tinygo shuningdek, ixcham tizimlar uchun optimallashtirilgan rejalashtiruvchi, xotira ajratish tizimi va string ishlov beruvchilarni amalga oshiradigan yangi ish vaqti kutubxonasini taklif etadi. Sinxronlash va aks ettirish kabi ba'zi paketlar yangi ish vaqti asosida qayta yaratildi.

    0.7 versiyasidagi o'zgarishlar orasida "tinygo test" buyrug'ini amalga oshirish, ko'pgina maqsadli platalar uchun axlat yig'ishni qo'llab-quvvatlash (ARM Cortex-M asosida) va WebAssembly, RISC-ga asoslangan HiFive1 rev B platasini qo'llab-quvvatlash kiradi. V arxitekturasi va Arduino nano33 platasi,
    takomillashtirilgan tilni qo'llab-quvvatlash (getterlar va sozlagichlar yordamida bit maydonlarini qo'llab-quvvatlash, anonim tuzilmalarni qo'llab-quvvatlash).

    Manba: opennet.ru

  • a Izoh qo'shish