deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Lingua Franca, C, Python, TypeScript ve Rust için deterministik eşzamanlılık sunuyor

UC Berkeley kökenli, reaktör odaklı bir koordinasyon dili olan Lingua Franca, deterministik eşzamanlı ve dağıtık programlar vaat ederken geliştiricilerin C, C++, Python, TypeScript veya Rust kullanmaya devam etmesine olanak tanıyor.

Lingua Franca, C, Python, TypeScript ve Rust için deterministik eşzamanlılık sunuyor

Uzun yıllara yayılan araştırmadan doğan bir koordinasyon dili

Açık kaynak bir eşzamanlı ve dağıtık yazılım projesi olan Lingua Franca, deterministik eşzamanlılık vaadiyle 17 Ekim'de Hacker News'in ana sayfasına ulaştı. Projenin web sitesine göre Lingua Franca (LF) genel amaçlı bir dil değil, bir koordinasyon dili: reaktif bileşenlerin nasıl bağlandığını ve etkileşime girdiğini tanımlıyor ve ham thread'ler, publish-subscribe sistemleri, actor çerçeveleri veya servis odaklı mimarilerle kurulan programlardan daha tekrarlanabilir bir davranış vaat ediyor.

Projenin kökleri UC Berkeley'e uzanıyor ve hesaplama modelleri üzerine yürütülen uzun soluklu araştırmalardan doğdu. Kiel Üniversitesi ve TU Dresden'den araştırmacılar erken dönemde projeye katıldı; diyagram sentezi ve yerleşim araçları, verimli runtime uygulamaları ve derleyici iyileştirmeleriyle katkı sağladılar. Sitede ayrıca UT Dallas'tan gerçek zamanlı sistemler, NTNU'dan gömülü sistemler, Hanyang Üniversitesi ve Arizona State Üniversitesi'nden ise ağ ve güvenlik alanlarında uzmanlaşmış katkıcılar listeleniyor.

Reaktörler ve dilin parçası olan zaman

LF, geliştiricileri tarafından ilk reaktör odaklı koordinasyon dili olarak tanımlanıyor. Programcılar reaktör adı verilen reaktif bileşenler tanımlıyor ve bunları bir mimari oluşturacak şekilde bir araya getiriyor; zamanlama, iletişim ve senkronizasyonu altta yatan runtime üstleniyor. Proje, bu tasarımın yarış koşullarını yapısal olarak ortadan kaldırdığını, dolayısıyla geliştiricilerin hiçbir zaman elle thread veya lock yönetmediğini iddia ediyor.

Zamanlama, kütüphanelerle üzerine eklenen bir şey değil, dilin birinci sınıf bir parçası. Site, bir ana reaktörün iki Player reaktörünü örneklediği ve her oyuncunun reveal çıktısını diğerinin observe girdisine bağladığı bir taş-kağıt-makas programıyla bunu gösteriyor. LF eşzamanlı olaylara kesin bir anlam verdiği için her iki oyuncunun da aynı anda seçim yapması gerekliliği doğrudan kodda ifade ediliyor ve proje, dilin semantiğinin oyunun adil olmasını garanti ettiğini söylüyor. Dil ayrıca nedensellik analizi yapıyor: bir oyuncu kendi seçimini yapmadan önce rakibinin seçimini görebilseydi bu bir nedensellik döngüsü oluştururdu ve LF programı çalıştırmak yerine geçersiz olarak işaretlerdi.

Geliştiricilerden dil değiştirmelerini istememek

Tasarımın dikkat çekici bir yanı, LF'nin mevcut programlama dilleriyle rekabet etmemesi. Koordinasyon dosyaları yapıyı tanımlıyor; her reaksiyonun içindeki asıl hesaplama ise bir host dilinde yazılıyor. Proje şu anda C, C++, Python, TypeScript ve Rust'ı destekliyor; yani ekipler eşzamanlılık modelini benimserken halihazırda kullandıkları dilleri, kütüphaneleri ve becerileri koruyabiliyor. Siteye göre bu, geliştiricilerin alışık oldukları araç zincirlerinden vazgeçmeden thread kütüphanelerine ve mesaj geçiş middleware'lerine bel bağlamayı bırakmasını sağlıyor.

Tek mimari, tek makine ya da çok makine

LF ayrıca dağıtımı yeniden tasarım gerektiren bir konu olmaktan çıkarıp bir dağıtım kararı haline getirmeyi hedefliyor. Site, reaktörler kümesi olarak tasarlanmış bir uygulamanın, model dağıtık yürütmenin mekanik detaylarını gizlediği için minimal değişiklikle tek bir makineden dağıtık bir kurulumaya taşınabileceğini iddia ediyor. Tek süreçli programları öngörülebilir kılan özellikler — açık bağlantılar ve nedensellik denetimleri — dağıtık duruma da taşınıyor; nedensellik denetimi, belirsizliğin genellikle en zor kontrol edildiği alandır.

Neden önemli

Yarış koşulları gibi eşzamanlılık hatalarının yeniden üretilmesi ve düzeltilmesi meşhur biçimde zordur; çünkü çoğu eşzamanlı programın olayların tek bir doğru dizilimi yoktur. Tasarımdan gelen deterministik davranış sunan bir model, çok thread'li ve dağıtık sistemleri thread kütüphanelerinin ve actor çerçevelerinin genellikle vaat etmediği bir biçimde test edilebilir ve öngörülebilir kılardı. Dilin içindeki zaman semantiği de gömülü ve gerçek zamanlı iş yükleri için önemli; bu alanlarda zamanlamayı kesin biçimde belirtmek bir optimizasyon değil, doğruluğun bir parçası. Lingua Franca'nın ana sayfa anı, hesaplama modelleri üzerine yıllarca süren akademik çalışmanın ana akım dillerle — C, C++, Python, TypeScript ve Rust — çalışan bir biçimde paketlendiğini ve büyük ölçüde araştırma makalelerinde yaşayan bir yaklaşımı denemeyi uygulayıcılar için kolaylaştırdığını gösteriyor.

  • #concurrency
  • #programming-languages
  • #open-source
  • #distributed-systems
  • #embedded-systems

İlgili yazılar