Lansarea Rust 1.90. Instrumentarul pentru dezvoltarea driver-elor Windows în Rust.

A fost lansat versiunea 1.90 a limbajului de programare Rust, inițial dezvoltat de proiectul Mozilla, dar acum susținut de organizația non-profit Rust Foundation. Limbajul se concentrează pe operarea sigură cu memoria și oferă instrumente pentru atingerea unui înalt grad de paralelism în execuția sarcinilor, fără a utiliza un garbage collector și un runtime (runtime-ul este redus la inițializarea de bază și întreținerea bibliotecii standard).

Metodele de gestionare a memoriei în Rust scutesc dezvoltatorul de erori în manipularea pointerilor și protejează împotriva problemelor care apar din lucrul de nivel scăzut cu memoria, cum ar fi accesarea unui spațiu de memorie după ce acesta a fost eliberat, dereferința pointerilor nuli, depășirea limitelor buffer-ului etc. Pentru distribuirea bibliotecilor, asigurarea construirii și gestionarea dependențelor, se dezvoltă managerul de pachete Cargo. Pentru găzduirea bibliotecilor, suportul este oferit prin intermediul repository-ului crates.io.

Lucrul sigur cu memoria este asigurat în Rust în timpul compilării prin verificarea referințelor, urmărirea proprietății obiectelor, luarea în considerare a timpului de viață al obiectelor (domeniul de vizibilitate) și evaluarea corectitudinii accesului la memorie în timpul execuției codului. Rust oferă, de asemenea, instrumente pentru protejarea împotriva suprasaturării numerice, impune inițializarea obligatorie a valorilor variabilelor înainte de utilizare, gestionează mai bine erorile în biblioteca standard, aplică conceptul de referințe și variabile imutabile (immutable) din oficiu și oferă o tipizare statică puternică pentru a minimiza erorile logice.

Noutăți principale:

  • În Linux, pe computerele cu arhitectură x86_64, pentru legarea dinamică a pachetului crate, se utilizează implicit linker-ul LLD din proiectul LLVM. Utilizarea LLD în comparație cu linker-ul BFD a dus la îmbunătățirea performanței legării fișierelor executabile mari și a proiectelor cu o cantitate mare de informații de depanare, precum și la accelerarea recompilării incrementale. În majoritatea cazurilor, LLD este compatible înapoi cu BFD. În caz de probleme, se poate reveni la BFD specificând în variabila de mediu RUSTFLAGS flag-ul „-C linker-features=-lld” sau adăugând în fișierul de configurare .cargo/config.toml: [target.x86_64-unknown-linux-gnu] rustflags = [„-Clinker-features=-lld”]
  • În managerul de pachete cargo, comanda „publish” dispune de opțiunea „—workspace”, permițând publicarea automată a tuturor pachetelor din spațiul de lucru ales (un set de pachete care utilizează un singur fișier Cargo.lock și un director comun pentru rezultatele compilării), păstrând ordinea de succesiune a pachetelor și având în vedere dependențele dintre ele.
  • O nouă porțiune de API a fost transformată în stabilitate, inclusiv metode și implementări ale tiparelor stabilize.
    • u{n}::checked_sub_signed
    • u{n}::overflowing_sub_signed
    • u{n}::saturating_sub_signed
    • u{n}::wrapping_sub_signed
    • impl Copy for IntErrorKind
    • impl Hash for IntErrorKind
    • impl PartialEq<&CStr> for CStr
    • impl PartialEq<CString> for CStr
    • impl PartialEq<Cow<CStr>> for CStr
    • impl PartialEq<&CStr> for CString
    • impl PartialEq<CStr> for CString
    • impl PartialEq<Cow<CStr>> for CString
    • impl PartialEq<&CStr> for Cow
    • impl PartialEq<CStr> for Cow
    • impl PartialEq<CString> for Cow
  • Semnul „const” aplicat în funcții:
    • <[T]>::reverse
    • f32::floor
    • f32::ceil
    • f32::trunc
    • f32::fract
    • f32::round
    • f32::round_ties_even
    • f64::floor
    • f64::ceil
    • f64::trunc
    • f64::fract
    • f64::round
    • f64::round_ties_even
  • Pentru platformele țintă bazate pe biblioteca Musl, aflate la al treilea nivel de suport, linkage-ul dinamic este inclus implicit: mips64-unknown-linux-muslabi64, powerpc64-unknown-linux-musl, powerpc-unknown-linux-musl, powerpc-unknown-linux-muslspe, riscv32gc-unknown-linux-musl, s390x-unknown-linux-musl și thumbv7neon-unknown-linux-musleabihf.
  • Platforma țintă „x86_64-apple-darwin” a fost mutată de la primul nivel de suport la al doilea (Apple intenționează să oprească suportul pentru arhitectura x86_64). Primul nivel de suport implică crearea de build-uri binare, realizarea de teste exhaustive și oferirea unei garanții de suport maxim pentru platformă - fiecare modificare în compilator este verificată printr-un set complet de teste. Al doilea nivel de suport presupune garanția build-ului, dar fără garanții în privința trecerii testului de verificare.

De asemenea, dezvoltarea de către Microsoft a unui set de unelte pentru dezvoltarea driverelor Windows în limbajul Rust merită menționată. Pe GitHub a fost deja publicat un set de pachete crate pentru crearea driverelor bazate pe WDM (Windows Driver Kit), KMDF (Kernel-Mode Driver Framework) și UMDF (User-Mode Driver Framework), precum și servicii Win32 care sunt compatibile cu Windows 11. Scopul proiectului este de a oferi dezvoltatorilor în limbajul Rust biblioteci și funcții similare celor oferite în setul de unelte WDK pentru dezvoltatorii de drivere în C. În etapa actuală, setul de unelte pentru dezvoltarea driverelor în Rust utilizează un număr mare de apeluri unsafe în interacțiunea cu subsistemele Windows, dar pe viitor se preconizează pregătirea unor abstracții sigure pentru structurile nucleului și DDI (Device Driver Interface). Realizările proiectului sunt distribuite sub licențele MIT și Apache 2.0.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster