Rust programlama dili 1.65 sürümü

Mozilla projesi tarafından kurulan ancak şu anda kar amacı gütmeyen bağımsız bir kuruluş olan Rust Foundation'ın himayesinde geliştirilen Rust 1.65 genel amaçlı programlama dilinin sürümü yayınlandı. Dil, bellek güvenliğine odaklanır ve bir çöp toplayıcı ve çalışma zamanı kullanımından kaçınırken yüksek iş paralelliği elde etmenin yollarını sağlar (çalışma zamanı, standart kitaplığın temel başlatma ve bakımına indirgenir).

Rust'ın bellek işleme yöntemleri, geliştiriciyi işaretçileri işlerken hatalardan korur ve serbest bırakıldıktan sonra bir bellek alanına erişme, boş işaretçilerin başvurusunu kaldırma, arabellek taşmaları vb. gibi düşük seviyeli bellek manipülasyonundan kaynaklanan sorunlara karşı koruma sağlar. Kitaplıkları dağıtmak, derlemeler sağlamak ve bağımlılıkları yönetmek için proje Kargo paketi yöneticisini geliştirir. Crates.io deposu kitaplıkları barındırmak için desteklenir.

Rust'ta bellek güvenliği, derleme zamanında referans kontrolü, nesne sahipliğinin izlenmesi, nesne ömürlerinin (kapsamların) izlenmesi ve kod yürütme sırasında bellek erişiminin doğruluğunun değerlendirilmesi yoluyla sağlanır. Rust ayrıca tamsayı taşmalarına karşı koruma sağlar, kullanımdan önce değişken değerlerinin zorunlu olarak başlatılmasını gerektirir, standart kitaplıkta hataları daha iyi işler, değişmez referanslar ve değişkenler kavramını varsayılan olarak uygular, mantıksal hataları en aza indirmek için güçlü statik yazım sunar.

Ana yenilikler:

  • Başka bir türle ilişkili tür takma adları oluşturmayı mümkün kılan ve tür oluşturucuları özelliklerle ilişkilendirmenize olanak tanıyan genel ilişkili türler (GAT, Genel İlişkili Türler) için destek eklendi. özellik Foo { type Bar<'x>; }
  • Desen eşleşme durumunu doğrudan "let" ifadesinin içinde kontrol etmenize ve desen eşleşmiyorsa isteğe bağlı kod çalıştırmanıza olanak tanıyan "let ... else" ifadesi uygulandı. let Ok(count) = u64::from_str(count_str) else { panik!("Tamsayı ayrıştırılamıyor: '{count_str}'"); };
  • Sonlandırılacak bloğu tanımlamak için blok adını (etiketi) kullanarak adlandırılmış bloklardan erken çıkmak için break ifadesinin kullanılmasına izin verin. let sonuç = 'blok: { do_thing(); if koşul_not_met() { break 'blok 1; } do_next_thing(); if koşul_not_met() { break 'blok 2; } do_last_thing(); 3 };
  • Linux için, daha önce yalnızca macOS platformunda mevcut olan hata ayıklama bilgilerini (split-debuginfo) ayrı ayrı kaydetme özelliği eklendi. "-Csplit-debuginfo=unpacked" seçeneğini belirlerken, DWARF formatındaki hata ayıklama verileri ".dwo" uzantılı birkaç ayrı nesne dosyasına kaydedilecektir. "-Csplit-debuginfo=packed" seçeneğinin belirtilmesi, proje için tüm hata ayıklama verilerini içeren ".dwp" formatında tek bir paket oluşturacaktır. Hata ayıklama bilgilerini doğrudan ELF nesnelerinin .debug_* bölümüne entegre etmek için "-Csplit-debuginfo=off" seçeneğini kullanabilirsiniz.
  • API'nin yeni bir bölümü kararlı kategorisine taşındı ve özelliklerin yöntemleri ve uygulamaları kararlı hale getirildi:
    • std::backtrace::Backtrace
    • Bağlı::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Sabitler yerine herhangi bir bağlamda kullanılma olasılığını belirleyen “const” niteliği, <*const T&>::offset_from ve <*mut T>::offset_from fonksiyonlarında kullanılır.
  • LSP (Dil Sunucusu Protokolü) protokolünün uygulanmasının pas analiz cihazına aktarılmasının son aşamasının bir parçası olarak, eski Rust Dil Sunucusu (RLS) uygulaması, geçiş önerisiyle birlikte bir uyarı yayınlayan bir saplama sunucusuyla değiştirildi. pas analizörü kullanarak.
  • Derleme sırasında MIR ara kodunun satır içi dağıtımına yönelik destek etkinleştirilir ve bu da tipik kasa paketlerinin derlenmesini %3-10 oranında hızlandırır.
  • Planlanan oluşturmaları hızlandırmak için Kargo paketi yöneticisi, kuyrukta yürütülmeyi bekleyen işlerin sıralanmasını sağlar.

Ek olarak, Rust dilinin Volvo'da otomotiv bilgi sistemleri bileşenlerini geliştirmek için kullanımına ilişkin röportajı da not edebilirsiniz. Rust'ta mevcut ve test edilmiş kodun yeniden yazılmasına yönelik bir plan yoktur ancak yeni kod için Rust, kaliteyi daha düşük maliyetlerle artırmak için tercih edilen seçeneklerden biridir. AUTOSAR (AUTomotive Open System ARchitecture) ve SAE (Otomotiv Mühendisleri Topluluğu) otomotiv derneklerinde de Rust dilinin kullanımına ilişkin çalışma grupları oluşturuldu.

Ayrıca, Google'ın mühendislikten sorumlu başkan yardımcısı David Kleidemacher, Android platformunda şifreleme anahtarlarını yönetmek için kullanılan kodun Rust'a çevrilmesinin yanı sıra yığında DNS over HTTPS protokolünün uygulanmasında Rust'un kullanımı hakkında konuştu. UWB yongaları için (Ultra Geniş Bant) ve Tensor G2 yongasıyla ilişkili sanallaştırma çerçevesinde (Android Sanallaştırma Çerçevesi). Rust'ta yeniden yazılan yeni Bluetooth ve Wi-Fi yığınları Android için de geliştiriliyor. Genel strateji, öncelikle en savunmasız ve hayati yazılım bileşenlerini Rust'a dönüştürerek ve ardından diğer ilgili alt sistemlere genişleterek güvenliği kademeli olarak güçlendirmektir. Geçtiğimiz yıl Rust dili, Android platformunun geliştirilmesine izin verilen diller listesine dahil edildi.

Kaynak: opennet.ru

Yorum ekle