Tinygo 0.7.0-in buraxılışı, LLVM əsaslı Go tərtibçisi

Mövcuddur layihə buraxılışı Tinygo 0.7.0, mikrokontrollerlər və kompakt tək prosessorlu sistemlər kimi nəticədə yaranan kodun kompakt təqdimatını və aşağı resurs istehlakını tələb edən sahələr üçün Go dili tərtibçisini inkişaf etdirir. Kod yayılır BSD lisenziyası altında.

Müxtəlif hədəf platformalar üçün kompilyasiya LLVM-dən istifadə etməklə həyata keçirilir və Go layihəsindən əsas alət dəstində istifadə olunan kitabxanalar dili dəstəkləmək üçün istifadə olunur. Tərtib edilmiş proqram birbaşa mikrokontrollerlərdə işlədilə bilər, bu da Go-dan avtomatlaşdırma skriptlərinin yazılması üçün dil kimi istifadə edilməsinə imkan verir.

Yeni layihənin yaradılmasında motivasiya tanış Go dilindən yığcam cihazlarda istifadə etmək istəyi idi - tərtibatçılar belə əsaslandırdılar ki, əgər mikrokontrollerlər üçün Python versiyası varsa, niyə də Go dili üçün oxşarını yaratmayaq. Get seçilmiş Rust əvəzinə, çünki öyrənmək daha asandır, korutinə əsaslanan paralelləşdirmə üçün ipdən müstəqil dəstək verir və geniş standart kitabxana təklif edir (“batareyalar daxildir”).

Hazırkı formada Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary və Phytec-dən müxtəlif lövhələr də daxil olmaqla 15 mikrokontroller modeli dəstəklənir. Proqramlar həmçinin WebAssembly formatında brauzerdə və Linux üçün icra edilə bilən fayllar kimi işləmək üçün tərtib edilə bilər. ESP8266/ESP32 nəzarətçiləri dəstəkləyir Hələ yox, lakin hələ də qeyri-sabit kimi qeyd olunan və TinyGo ilə inteqrasiyaya hazır olmayan LLVM-də Xtensa çipinə dəstək əlavə etmək üçün ayrıca layihə hazırlanır.

Layihənin əsas məqsədləri:

  • Çox yığcam icra edilə bilən faylların yaradılması;
  • Mikrokontroller lövhələrinin ən ümumi modellərinə dəstək;
  • Veb üçün müraciət imkanı;
  • C-də funksiyaları çağırarkən minimum yüklə CGo dəstəyi;
  • Standart paketlərin əksəriyyəti üçün dəstək və ümumi mövcud kodu dəyişdirmədən tərtib etmək imkanı.

    Çox nüvəli sistemlərə dəstək əsas məqsədlər arasında deyil,
    çoxlu sayda koroutinlərin səmərəli işə salınması (koroutinlərin işə salınması tam dəstəklənir), istinad kompilyatorunun gc performans səviyyəsinə nail olmaq (optimallaşdırma LLVM-də qalır və bəzi tətbiqlərdə Tinygo gc-dən daha sürətli ola bilər) və tam Uyğunluq bütün Go proqramları ilə.

    Bənzər bir kompilyatordan əsas fərq emqo Zibil kolleksiyasından istifadə edərək Go-nun orijinal yaddaş idarəetmə modelini qorumaq cəhdidir və onu C təmsilçiliyinə tərtib etmək əvəzinə səmərəli kod yaratmaq üçün LLVM-dən istifadə edir. Tinygo həmçinin kompakt sistemlər üçün optimallaşdırılmış planlayıcı, yaddaş ayırma sistemi və sətir işləyicilərini həyata keçirən yeni iş vaxtı kitabxanası təklif edir. Sinxronizasiya və əks etdirmə kimi bəzi paketlər yeni iş vaxtı əsasında yenidən yaradılmışdır.

    0.7 buraxılışındakı dəyişikliklər arasında "tinygo test" əmrinin həyata keçirilməsi, əksər hədəf lövhələri üçün zibil toplama dəstəyinin təmin edilməsi (ARM Cortex-M əsasında) və WebAssembly, RISC- əsasında HiFive1 rev B lövhəsi üçün dəstək var. V memarlıq və Arduino nano33 lövhəsi,
    təkmilləşdirilmiş dil dəstəyi (alıcı və təyinedicilərdən istifadə edərək bit sahələrinə dəstək, anonim strukturlara dəstək).

    Mənbə: opennet.ru

  • Добавить комментарий