Rust programlama dili 1.68 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.68 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:

  • Cargo paket yöneticisi ve Crates.io deposu, depoda mevcut tüm paketlerin mevcut sürümlerini yansıtan bir dizinle çalışmanın yeni bir yolunu tanımlayan Sparse protokolü için istikrarlı bir desteğe sahiptir. Yeni protokol, Crates.io ile çalışma hızınızı önemli ölçüde artırmanıza ve depodaki paket sayısının daha da artmasıyla ölçeklendirme sorunlarını çözmenize olanak tanır.

    Tam bir dizinin indirilmesinden kaynaklanan gecikmeleri azaltmak için Sparse, dizine Git kullanarak erişmek yerine, belirli bir projenin bağımlılıklarını kapsayan yalnızca gerekli dizin verilerinin HTTPS üzerinden doğrudan indirilmesini içerir. Dizin verilerini sağlamak için yeni bir hizmet olan index.crates.io kullanılır. Varsayılan olarak yeni protokolün Rust 1.70 dalında kullanılması planlanıyor ve bundan önce bunu etkinleştirmek için "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" ortam değişkenini ayarlayabilir veya "[registries.txt" dosyasına 'protocol =' parametresini ekleyebilirsiniz. .cargo/config.toml dosyasının 'seyrek' bölümünün Crates-io]" bölümü.

  • Durumunun yerel olarak sabitlenmesiyle "T" ifadesinden bir Pin<&mut T> yapısı oluşturmanıza olanak tanıyan "pin!" makrosu eklendi (Box::pin'den farklı olarak, yığın üzerinde bellek ayırmaz, ancak bağlar) yığın düzeyinde).
  • Standart ayırma paketini kullanırken kullanılan bir varsayılan bellek ayırma hata işleyicisi önerilmiştir. Yalnızca tahsisi etkinleştiren uygulamalar (std olmadan) artık bellek tahsisi başarısız olduğunda "panik!" işleyicisini çağıracak ve isteğe bağlı olarak "#[panic_handler]" kullanılarak durdurulabilecek. Std kütüphanesini kullanan programlar hata bilgilerini stderr'e yazdırmaya ve çökmeye devam edecektir.
  • API'nin yeni bir bölümü kararlı kategorisine taşındı ve özelliklerin yöntemleri ve uygulamaları kararlı hale getirildi:
    • {core,std}::pin::pin!
    • ima eden {f32,f64} için
    • std::path::MAIN_SEPARATOR_STR
    • PathBuf için DerefMut'u uygulayın
  • VecDeque::new fonksiyonunda sabitler yerine herhangi bir bağlamda kullanılma olasılığını belirleyen “const” özelliği kullanılmaktadır.
  • Android platformunda çalışmak için artık en az NDK r25 (API 19) gereklidir; Desteklenen minimum Android sürümü 4.4'e (KitKat) yükseltildi.
  • Sony PlayStation Vita platformu için üçüncü düzey destek uygulandı (armv7-sony-vita-newlibeabihf). Üçüncü düzey temel desteği içerir ancak otomatik testler, resmi yapıların yayınlanması veya kodun oluşturulup oluşturulamayacağının kontrol edilmesi söz konusu değildir.

Kaynak: opennet.ru

Yorum ekle