Rust 1.89 buraxılışı. Debian Sid-də yaklaşık 8% src paketi Rust-a bağlıdır.

Rust 1.89 proqramlaşdırma dili buraxılışı, Mozilla layihəsinə əsaslanır, lakin indi müstəqil maliyyəsiz təşkilat Rust Foundation tərəfindən inkişaf etdirilir. Dili yaddaşın təhlükəsiz işlənməsi üzərində fokuslanıb və aşkar toplu iş yerinə yetirilməsini təmin edən vasitələr təqdim edir, bununla yanaşı, zibil toplayıcı və runtime-ın istifadəsindən qaçınır (runtime yalnız əsas ilkinləşdirmə və standart kitabxananın dəstəklənməsini əhatə edir).

Rust-da yaddaşın idarə olunma metodları inkişafçını göstəricilərlə manipulyasiya zamanı səhvlərdən azad edir və aşağı səviyyəli yaddaşla işin yaratdığı problemlərdən, məsələn, azad edilmiş yaddaş sahəsinə müraciət etmə, sıfır göstəricilərin de-referensiallaşdırılması, buferdən kənara çıxma və s. qoruyur. Kitabxanaların yayılması, konteyner yığımı və layihənin asılılıqlarını idarə etmək üçün Cargo paket meneceri inkişaf etdirilir. Kitabxanaların yerləşdirilməsi üçün crates.io anbarı dəstəklənir.

Rust-da yaddaşın təhlükəsiz işlənməsi, kompilyasiya zamanı istinadların yoxlanılması, obyektlərin sahibliliyinin izlənməsi, obyektlərin zamanını (görünmə sahəsi) diqqətə almaq və kodun icrası zamanı yaddaşa düzgün girişin qiymətləndirilməsi ilə təmin edilir. Rust, eyni zamanda tam ədəd aşmalarından qorunma vasitələri təqdim edir, dəyişənlərin istifadəsi üçün mütləq ilkin olaraq nəzərdə tutulmasını tələb edir, standart kitabxanada səhvləri daha yaxşı işləyir, dəyişməz (immutable) istinadların və dəyişənlərin varsayılan olaraq tətbiq olunduğu konsepsiyanı istifadə edir, mantıqlı səhvləri minimuma endirmək üçün güclü statik tip təsdiqi təklif edir.

Əsas yeniliklər:

  • Müxtəlif kontekstə əsaslanaraq bu parametrlərin dəyərlərini çıxarmaq üçün «const» avtomatlaşdırılmış parametr adı kimi «_» simvolunun istifadəsi imkanı təmin edilib. pub fn all_false() -> [bool; LEN] { [false; _] }
  • Yeni lint xəbərdarlığı «mismatched_lifetime_syntaxes» əlavə edilib, bu isə «lifetime elision» mexanizmi ilə funksiyaların imzalarında həyat dövrünün qeyri-aşkar müəyyənləşdirilməsi problemini həll edir (linklərin həyat dövrünü avtomatik şəkildə müəyyən edir, onun əl ilə göstərilməsini tələb etmir). Xəbərdarlıq, funksiyanın giriş və çıxış parametrlərinin eyni növ qrupuna aid olduğunu yoxlayır. Qruplar, həyat dövrünün açıq şəkildə təyin edilməsinə və kompilator tərəfindən avtomatik olaraq həyat dövrünün çıxarılmasına dəstək əsasında formalaşır (məsələn, tip «&'a T» və «ContainsLifetime» açıq şəkildə həyat dövrünü ehtiva edə bilər, amma kompilator avtomatik olaraq müəyyən edə bilmir; «&T», «&'_ T» və «ContainsLifetime» tiplərində isə həm açıq təyin etmə, həm də avtomatik müəyyən etmə mümkündür).
  • x86 sistemləri üçün «target_feature» atributunda sha512, sm3, sm4, kl və widekl genişləndirilmiş əmrlər dəstinin dəstəklənməsini yoxlamaq imkanı təmin edilib, həmçinin avx512 ayrılmış funksiyaları. #[target_feature(enable = «avx512bw»)] pub fn cool_simd_code(/* .. */) -> /* … */ { /* … */ }
  • Doctest-i (sənədlərə daxil edilmiş testlər) yalnız bu günkü hədəf platformasında deyil, həm də paket meneceri «cargo» işə salınarkən göstərilən digər platformalarda işə salmaq imkanı təmin edilib («cargo test —doc —target other_target»).
  • Hədəf platforması «wasm32-unknown-unknown» üçün «extern 'C'» funksiyaları üçün WebAssembly üçün standart C ABI həyata keçirilib.
  • Bəzi növ uyğunluğu məsələləri ilə yanaşı, daha əvvəl «improper_ctypes_definitions» lint xəbərdarlığı göstərilən внешних C funksiyaları (extern «C») üçün i128 və u128 tiplərinin istifadəsinə icazə verilir.
  • Yeni API stabil vəziyyətə keçirilib, o cümlədən stabil edilmiş metodlar və strukturlar:
    • X86 prosessorları üçün bir çox daxili funksiyalar (Intrinsics), bunlara AVX512, SHA512, SM3 və SM4 funksiyaları daxildir.
    • NonZero
    • File::lock
    • File::lock_shared
    • File::try_lock
    • File::try_lock_shared
    • File::unlock
    • NonNull::from_ref
    • NonNull::from_mut
    • NonNull::without_provenance
    • NonNull::with_exposed_provenance
    • NonNull::expose_provenance
    • OsString::leak
    • PathBuf::leak
    • Result::flatten
    • std::os::linux::net::TcpStreamExt::quickack
    • std::os::linux::net::TcpStreamExt::set_quickack

    "const" işarəsi funksiyalarda tətbiq edilmişdir:

    • ::as_mut_slice
    • ::eq_ignore_ascii_case
    • str::eq_ignore_ascii_case
  • «x86_64-apple-darwin» hədəf platformasının dəstəkləmə dərəcəsinin birinci səviyyədən ikincisinə keçirilməsi prosesi başlayıb (Apple x86_64 memarlığını dəstəkləməkdən imtina etməyi planlaşdırır). Birinci səviyyə dəstək, ikili yığınların formalaşdırılması, dərin testlər keçirilməsi və platformanın ən yüksək dəstək təminatı deməkdir — kompilatorun hər bir dəyişkənliyi tam test dəstini yerinə yetirməklə yoxlanılır. İkinci səviyyə dəstək, yığın üçün təminat verir, lakin test dəstini keçərkən hər hansı bir təminat yoxdur.
  • «loongarch32-unknown-none» və «loongarch32-unknown-none-softfloat» platformaları üçün üçüncü səviyyə dəstəyi tətbiq edilib. Üçüncü səviyyə, avtomatlaşdırılmış test etmə, rəsmi yığınların dərc edilməsi və kodun yığılma imkanlarının yoxlanılması olmadan əsas dəstək deməkdir.

Rust ilə bağlı hadisələri və layihələri də qeyd etmək olar:

  • Debian-da Rust paketləri haqqında hesabat dərc edilib. Bildirilir ki, Debian Unstable (Sid) branch-də main repositoriyasında təxminən 8% src paketləri «librust-*» paketi ilə yığma asılılıqlara malikdir. Debian 12-də bu cür paketlər 4.5%-dir. Həmçinin qeyd olunub ki, 3 min paketdən çox Rust dilində yazılmış kodu olan librust-..-dev paketlərinə malikdir və 150 src paketi Rust üzərində tərtib edilmiş icra edilə bilən faylları və ya kitabxanaları təqdim edir.

    Debian üçün maraqlı olan paketlər arasında sudo-rs, ntpd-rs, uutils, Sequoia, rpgp, hickory (DNS), Rustls, rav1d və fish var. APT, QEMU (virtiofsd), Linux kernel və Mesa-da Rust üçün optional dəstək tətbiq edilib, həmçinin LibreOffice-də gözlənilir. crate paketlərini Debian src paketlərinə çevirmək üçün debcargo alətləri həyata keçirilib.

  • Rust-da yenidən yazılmış tmux terminal multiplexorunun klonu olan tmux-rs layihəsi təqdim edilib.
  • Collabora şirkətinin Tyr sürücüsü developer, GPU-lar üçün kernel səviyyəsində işləyən sürücülər və Rust dilində belə sürücülərin inkişaf prinsipləri barədə məqalə dərc edib.
  • Rust dilində yazılmış universal tətbiq nümayiş etdirilmişdir ki, bu tətbiq həm CPU-da, həm də müxtəlif GPU platformalarında işləyə bilir: CUDA NVIDIA üçün, Vulkan dəstəkləyən GPU-lar üçün SPIR-V, Apple üçün Metal, Windows üçün DirectX 12, brauzerlər üçün WebGPU.

Mənbə: opennet.ru

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster