LLVM tabanlı Go derleyicisi Tinygo 0.7.0'in piyasaya sürülmesi

Mevcut proje sürümü Tinygo 0.7.0, mikrodenetleyiciler ve kompakt tek işlemcili sistemler gibi ortaya çıkan kodun kompakt temsilini ve düşük kaynak tüketimini gerektiren alanlar için bir Go dili derleyicisi geliştiriyor. Kod tarafından dağıtıldı BSD lisansı altında.

Çeşitli hedef platformlar için derleme, LLVM kullanılarak uygulanır ve Go projesinin ana araç setinde kullanılan kütüphaneler, dili desteklemek için kullanılır. Derlenen program doğrudan mikro denetleyiciler üzerinde çalıştırılabilir ve bu da Go'nun otomasyon komut dosyaları yazmak için bir dil olarak kullanılmasına olanak tanır.

Yeni bir proje yaratmanın motivasyonu, tanıdık Go dilini kompakt cihazlarda kullanma arzusuydu - geliştiriciler, mikrodenetleyiciler için bir Python sürümü varsa, o zaman neden Go dili için benzer bir dil yaratmayalım diye düşündüler. Gitmek seçilmiş Rust yerine öğrenilmesi daha kolaydır, eşyordam tabanlı paralelleştirme için iş parçacığından bağımsız destek sağlar ve kapsamlı bir standart kitaplık sunar (“piller dahil”).

Mevcut haliyle Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary ve Phytec'in çeşitli kartları dahil olmak üzere 15 mikrodenetleyici modeli desteklenmektedir. Programlar ayrıca bir tarayıcıda WebAssembly formatında ve Linux için yürütülebilir dosyalar olarak çalışacak şekilde derlenebilir. ESP8266/ESP32 kontrol cihazlarını destekler henüz değilancak hala kararsız olarak işaretlenen ve TinyGo ile entegrasyona hazır olmayan LLVM'deki Xtensa çipine destek eklemek için ayrı bir proje geliştiriliyor.

Projenin temel hedefleri:

  • Çok kompakt yürütülebilir dosyaların oluşturulması;
  • Mikrodenetleyici kartlarının en yaygın modelleri için destek;
  • Web için başvuru imkanı;
  • C'de işlevleri çağırırken minimum ek yük ile CGo desteği;
  • Standart paketlerin çoğu için destek ve genel mevcut kodu değiştirmeden derleme yeteneği.

    Çok çekirdekli sistemlerin desteklenmesi ana hedefler arasında yer almıyor,
    çok sayıda eşyordamın verimli bir şekilde başlatılması (eşyordamların başlatılması tamamen desteklenir), referans derleyici gc'nin performans seviyesine ulaşılması (optimizasyon LLVM'ye bırakılır ve bazı uygulamalarda Tinygo, gc'den daha hızlı olabilir) ve tamamlanır uygunluk tüm Go uygulamalarıyla.

    Benzer bir derleyiciden temel fark emgo çöp toplamayı kullanarak Go'nun orijinal bellek yönetimi modelini koruma ve onu bir C gösterimine derlemek yerine verimli kod oluşturmak için LLVM'yi kullanma girişimidir. Tinygo ayrıca kompakt sistemler için optimize edilmiş bir zamanlayıcı, bellek ayırma sistemi ve dize işleyicileri uygulayan yeni bir çalışma zamanı kitaplığı sunar. Sync ve Reflect gibi bazı paketler yeni çalışma zamanına göre yeniden oluşturuldu.

    Sürüm 0.7'deki değişiklikler arasında "tinygo test" komutunun uygulanması, çoğu hedef kart için çöp toplama desteğinin sağlanması (ARM Cortex-M'ye dayalı) ve WebAssembly, RISC-'ye dayalı HiFive1 rev B kartı desteği yer alıyor. V mimarisi ve Arduino nano33 kartı,
    geliştirilmiş dil desteği (alıcıları ve ayarlayıcıları kullanan bit alanları desteği, anonim yapılar için destek).

    Kaynak: opennet.ru

  • Yorum ekle