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ə yığcam tək prosessorlu sistemlər kimi nəticədə yaranan kodun yığcam təmsili və aşağı resurs sərfiyyatının tələb olunduğu sahələr üçün Go dili kompilyatorunu 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ə dil dəstəyi əsasən Go layihəsinin alətlər silsiləsində istifadə olunan kitabxanalar tərəfindən təmin edilir. Tərtib edilmiş proqram birbaşa mikrokontrollerlərdə işləyə 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 olub – tərtibatçılar belə əsaslandırıblar ki, əgər mikrokontrollerlər üçün Python versiyası varsa, niyə Go dili üçün oxşar bir şey yaratmayaq. seçilmiş Rust əvəzinə, çünki öyrənmək daha asandır, korutinə əsaslanan paralellik üçün ip-aqnostik dəstək verir və hərtərəfli standart kitabxana təklif edir ("batareyalar daxildir").

Hal-hazırda, Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary və Phytec şirkətlərinin müxtəlif lövhələri də daxil olmaqla, 15 mikrokontroller modeli dəstəklənir. Proqramlar həmçinin brauzerin icrası üçün WebAssembly formatında və icra edilə bilən fayllar kimi tərtib edilə bilər. LinuxESP8266/ESP32 kontrollerləri üçün dəstək Hələ yox, lakin hazırda qeyri-sabit kimi qeyd olunan və TinyGo ilə inteqrasiyaya hazır olmayan LLVM-ə 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ı;
  • Ən ümumi mikrokontroller lövhəsi modelləri üçün dəstək;
  • Veb hazır;
  • C funksiyalarını ç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ərdən biri deyil,
    çoxlu sayda koroutinlərin səmərəli işə salınması (koroutinlərin özü tam dəstəklənir), istinad gc kompilyatorunun 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 Tinygo, Go-nun orijinal zibillə yığılmış yaddaş idarəetmə modelini qorumağa çalışır və 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 bir neçə paket yeni iş vaxtından istifadə edərək yenidən qurulmuşdur.

    Buraxılış 0.7-dəki dəyişikliklərə "tinygo test" əmrinin tətbiqi, əksər hədəf lövhələri üçün zibil toplanması dəstəyi (ARM Cortex-M əsaslı) və WebAssembly, RISC-V arxitekturasına və Arduino nano33 lövhəsinə əsaslanan HiFive1 rev B lövhəsinə dəstək,
    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

  • DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster