Rugina 1.96.0

Comunicatul a fost publicat Rugina 1.96.0 — cea mai recentă versiune stabilă a limbajului de programare Rust. Actualizarea a fost lansată. 28 luna mai a anului 2026; poate fi instalat folosind comanda standard rustup update stable. Principalele modificări includ noi tipuri de intervale în core::range, stabilizarea macrocomenzilor de potrivire a șabloanelor, întărirea comportamentului de compilare WebAssembly și remedieri pentru două vulnerabilități din Cargo.

Schimbari majore

  • Noi tipuri de intervale core::range::Range*.
    Noile tipuri de intervale au fost stabilizate în biblioteca standard: core::range::Range, RangeFrom, RangeInclusive și iteratorii asociați. Spre deosebire de vechile tipuri din core::ops, noile intervale nu implementează direct Iterator, ci sunt convertite într-un iterator prin IntoIterator. Acest lucru permite ca aceste intervale să fie copiabile, ceea ce este convenabil, de exemplu, atunci când se stochează un interval ca și câmp de structură. Sintaxe precum 0..1 creează în prezent vechile tipuri de intervale, dar este planificată migrarea către noile tipuri într-o versiune viitoare a limbajului.

  • Adăugate assert_matches! și debug_assert_matches!.
    Noile macrocomenzi vă permit să verificați dacă o valoare se potrivește cu un anumit model. Acest lucru este similar ca concept cu assert!(matches!(…)), dar în cazul unei erori, este afișată o reprezentare de depanare a valorii, simplificând diagnosticarea. Aceste macrocomenzi nu au fost adăugate în Prelude pentru a evita conflictele cu crate-uri terțe populare, așa că trebuie importate explicit din core sau std.

  • A fost modificat comportamentul țintelor WebAssembly.
    Rust nu mai transmite --allow-undefined către linker pentru build-urile WebAssembly. Simbolurile nedefinite sunt acum tratate ca erori în timpul link-urilor, în loc să fie convertite automat în importuri din modulul „env”. Aceasta ar trebui să detecteze mai devreme erorile de build și numele nevalide ale simbolurilor. Vechiul comportament poate fi inversat, dacă este necesar, folosind RUSTFLAGS=-Clink-arg=--allow-undefined sau prin specificarea explicită a modulului wasm importat folosind #[link(wasm_import_module = "env")].

  • Cargo-ul a primit remedieri de securitate.
    Rust 1.96.0 remediază două vulnerabilități care afectează utilizatorii registrelor terțe. CVE-2026-5223 Legat de gestionarea legăturilor simbolice în arhivele tar ale crate-urilor: un pachet malițios dintr-un registru terț ar putea suprascrie memoria cache a unui alt pachet din același registru. Începând cu Rust 1.96.0, Cargo respinge arhivele crate care conțin legături simbolice. CVE-2026-5222 Această problemă se referă la normalizarea URL-urilor în registrul sparse și, în circumstanțe rare, ar putea duce la trimiterea unui token Cargo către un registru malițios. Potrivit echipei Rust, utilizatorii crates.io nu sunt afectați de aceste probleme.

  • Schimbări în limbaj.
    Lansarea include: Câteva corecții și îmbunătățiri minore: S-a permis transmiterea metavariabilelor expr ale macrocomenzilor către cfg, s-a corectat conversia never-type în expresiile de tuplu, s-au remediat cazuri rare de indicii incorecte de inferență de tip pentru argumentele funcției, s-a adăugat suport pentru registrele vectoriale s390x în asamblarea inline și s-au reactivat constantele ManuallyDrop ca șabloane - aceasta remediază o regresie introdusă în Rust 1.94.0.

  • Modificări ale compilatorului și platformelor.
    Pentru LinuxSuportul pentru relaxarea legăturilor a fost activat pentru țintele LoongArch - o optimizare a legăturilor care simplifică unele tranziții și apeluri după implementarea codului. Pentru riscv64gc-unknown-fuchsia, configurația de bază a fost actualizată la profilul RVA22 cu suport pentru extensii vectoriale.

  • Actualizări standard ale bibliotecii.
    A fost adăugat suport pentru iterarea peste intervale de numere întregi diferite de zero. De asemenea, a fost remediată gestionarea lentă a adreselor gazdă în SGX prin ToSocketAddr, iar definiția memoriei „citibile/scriibile” a fost clarificată în documentație și contractele interne: pointerul nul a fost eliminat din definiția generală, iar excepțiile sunt acum specificate separat pentru metode specifice.

  • API-uri stabilizate.
    Printre interfețele stabilizate se numără assert_matches!, debug_assert_matches!, implementări ale lui From pentru AssertUnwindSafe , LazyCell și LazyLock , precum și noi tipuri de intervale și iteratori din core::range, inclusiv Range, RangeFrom, RangeToInclusive și iteratorii acestora.

  • Cargo: Modificări ale dependențelor și documentației.
    O dependență poate specifica acum atât un depozit Git, cât și un registru alternativ: versiunea Git va fi utilizată local, iar versiunea registrului va fi utilizată în timpul publicării, similar cu comportamentul din cazul crates.io. De asemenea, a fost adăugat suport pentru target.'cfg(..)'.rustdocflags în configurația Cargo.

  • Rustdoc gestionează acum documentația mai precis.
    Notele API depreciate sunt acum redate ca documentație obișnuită, fără procesarea specială anterioară prin white-space: pre-wrap. În plus, rustdoc nu mai elimină missing_doc_code_examples pentru elementele din interiorul impl, iar metodele și funcțiile asociate sunt acum separate în bara laterală a documentației.

  • Posibile incompatibilități.
    Lansarea conține mai multe modificări care pot apărea în cod non-standard: aspectul unor enumerații #[repr(Int)] a fost corectat în cazuri extreme, iar unele transformări inutile de tip unsize în Pin au fost dezactivate. Compilările WebAssembly se blochează acum pe simboluri nedefinite, atributul #![reexport_test_harness_main] stabilizat accidental a fost din nou supus unei restricții de funcționalitate, opțiunea -Csoft-float a fost eliminată, iar versiunea minimă externă LLVM a fost mărită la 21. Pentru AVR, tipul c_double a fost schimbat în f32, deoarece fișierele double C sunt implicit pe 32 de biți pe aceste ținte.

Sursa: linux.org.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster