Rust 1.93 Yayınlandı. Rex, Fjall 3 ve Arti 1.9.0 Projeleri

Mozilla projesi tarafından geliştirilen ancak şu anda bağımsız, kâr amacı gütmeyen Rust Vakfı himayesinde geliştirilen Rust 1.93 programlama dili yayınlandı. Dil, bellek güvenliğine odaklanıyor ve çöp toplayıcı ve çalışma zamanı kullanmadan (çalışma zamanı, standart kütüphanenin temel başlatılması ve bakımıyla sınırlıdır) görev yürütmede yüksek paralellik elde etmek için araçlar sunuyor.

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:

  • Rust dağıtımına entegre edilmiş ve Musl'un bulunmadığı sistemlerde "*-linux-musl" hedef platformları (aarch64-unknown-linux-musl, x86_64-unknown-linux-musl, powerpc64le-unknown-linux-musl, vb.) için statik bağlantı kurmak amacıyla kullanılan Musl standart C kütüphanesi 1.2.5 sürümüne güncellendi. Dinamik bağlantı için desteklenen minimum Musl sürümü de 1.2.5'e yükseltildi. Rust daha önce DNS çözümleyici uygulamasında sorunlar yaşayan Musl 1.2.3 sürümünü kullanıyordu. Musl 1.2.4'te, DNS çözümleyici, UDP isteği başarısız olursa TCP sorgusu göndermeyi destekleyecek şekilde güncellendi; bu da büyük DNS kayıtlarını sorgulama sorununu çözdü ve kısaltılmış UDP yanıtlarında kısmi sonuçlar döndürmeyi desteklemeyen özyinelemeli DNS sunucularıyla uyumluluğu artırdı. Musl 1.2.5, DNS çözümleyicisinde uzun CNAME dizilerine sahip yanıtların işlenmesini sağlar ve TCP üzerinden iletilen bazı büyük yanıtların kaybolmasına neden olan bir sorunu çözer.
  • Rust dilinde yazılmış global bellek ayırıcılarındaki std::thread_local! makrosu ve std::thread::current fonksiyonuyla ilgili sonsuz özyinelemeye yol açan yeniden giriş sorunlarını gidermek için standart kütüphane yeniden tasarlandı. std::thread_local! ve std::thread::current'ın bellek ayırma girişiminde bulundukları sırada kullanıldıkları aynı ayırıcıyı tekrar çağırmalarını önlemek için, artık doğrudan sistem bellek ayırma mekanizmasını kullanıyorlar.
  • Artık assembly kodu içeren "asm!" bloklarının içinde cfg özniteliklerinin kullanılmasına izin veriliyor. Bu, örneğin, bir asm bloğu içindeki tek tek ifadeler bağlamında genişletilmiş CPU komut setlerinin kullanımını kontrol etmeyi sağlar (önceden, cfg öznitelikleri yalnızca tüm asm bloğu için belirtilebiliyordu). asm!( // veya global_asm! veya naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // … #[cfg(target_feature = "sse2")] a = const 123, // yalnızca sse2'de kullanılır );
  • API'nin yeni bir bölümü kararlı kategorisine taşındı ve özelliklerin yöntemleri ve uygulamaları kararlı hale getirildi:
    • <[MaybeUninit ]>::assume_init_drop
    • <[MaybeUninit ]>::assume_init_ref
    • <[MaybeUninit ]>::assume_init_mut
    • <[MaybeUninit ]>::write_copy_of_slice
    • <[MaybeUninit ]>::write_clone_of_slice
    • Dize::ham_parçalara_dönüştür
    • Vec::into_raw_parts
    • ::kontrol edilmemiş_neg
    • ::kontrol edilmemiş_shl
    • ::kontrol edilmemiş_shr
    • ::kontrol edilmemiş_shl
    • ::kontrol edilmemiş_shr
    • <[T]>::as_array
    • <[T]>::as_array_mut
    • <*const [T]>::as_array
    • <*mut [T]>::as_mut_array
    • VecDeque::pop_front_if
    • VecDeque::pop_back_if
    • Süre::from_nanos_u128
    • karakter::MAX_LEN_UTF8
    • karakter::MAX_LEN_UTF16
    • std::fmt::from_fn
    • std::fmt::FromFn
  • "riscv64a23-unknown-linux-gnu" hedef platformu, derleme garantisi içeren ancak test paketini geçme garantisi içermeyen ikinci destek seviyesine taşındı.

Ayrıca, Rust ile ilgili birkaç projeden de bahsetmekte fayda var:

  • Çekirdek için Linux Rex çerçevesi geliştiriliyor ve bu sayede çekirdeğe eklentiler oluşturulmasına olanak sağlanıyor. Linux Rust dilinde yazılmış olan Rex, eBPF yerine temel işlevselliği genişletmek için kullanılabilir. Rex, eBPF ile aynı güvenlik garantilerini sunar, ancak izolasyon ve güvenlik için Rust'ın dil özelliklerini ve hafif çalışma ortamını kullanır. Bu tür programlar doğrulayıcı kullanmaz ve Rust derleyicisi tarafından yerel koda derlenir.

    Rex programları, güvenlik garantileri sağlayan Rust dilinin bir alt kümesinin kullanımına olanak tanır. Şu anda beş eBPF program türü desteklenmektedir: kprobe, perf_event, tracepoint, xdp ve tc. eBPF yardımcı fonksiyonlarını çağırmak, eBPF harita yapılarıyla etkileşim kurmak, çekirdek kaynaklarını yönetmek, istisnaları ele almak ve çekirdek yapıları üzerinde sarmalayıcılar ve soyutlamalar kullanmak mümkündür.

  • Rust dilinde yazılmış gömülü bir anahtar-değer deposu olan Fjall 3 artık kullanıma sunuldu. Veriler, RocksDB'ye benzer şekilde, değişikliklerin dosyanın sonuna veri eklenerek yazıldığı bir Log-Structured-Merge (LSM) ağacı kullanılarak log biçiminde depolanır. Veritabanına erişim için BTreeMap tarzı bir API sağlanmıştır. Desteklenen özellikler arasında ad alanları, ileri ve geri aralık aramaları, yerleşik sıkıştırma, serileştirilebilir işlemler, anahtarların ve bunlarla ilişkili çok büyük değerlerin ayrı depolanması ve otomatik arka plan veritabanı bakımı yer almaktadır. Kod, Apache 2.0 lisansı altında açık kaynaklıdır.
  • Tor Projesi, Tor araç setinin Rust uygulaması olan Arti 1.9.0'ı yayınladı. Arti'nin kod tabanı, C uygulamasının tamamen yerini alabilecek bir seviyeye ulaştığında, Tor geliştiricileri Arti'yi birincil Tor uygulaması haline getirmeyi ve C uygulamasının bakımını kademeli olarak sonlandırmayı planlıyor. Yeni sürüm, röleler için işlevsellik uygulamaya devam ediyor ve sunucular Dizinler (Dizin Yetkilisi), dinamik olarak atanan portlarla çalışma desteği iyileştirildi (proxy.socks_listen = "auto"), onion servisleri için anahtarları yönetmek üzere deneysel bir API eklendi.

Kaynak: opennet.ru

DDoS korumalı siteler, VPS VDS sunucuları için güvenilir hosting satın alın 🔥 DDoS korumalı, güvenilir VPS ve VDS sunucu barındırma hizmeti satın alın | ProHoster