Udgivelse af Rust 1.79. Der er dannet et konsortium til udvikling af højpålidelige systemer på Rust

Der er udgivet en ny version af programmeringssproget Rust 1.79, som oprindeligt blev udviklet af Mozilla, men nu udvikles under ledelse af den uafhængige non-profit organisation Rust Foundation. Sproget fokuserer på sikker hukommelsesarbejde og tilbyder midler til at opnå høj parallellisme i opgaveløsning uden at bruge en garbage collector eller runtime (runtime er begrænset til grundlæggende initialisering og vedligeholdelse af standardbiblioteket).

Metoder til hukommelsesarbejde i Rust befrier udviklere fra fejl ved manipulation af pekere og beskytter mod problemer, der opstår ved lavniveau håndtering af hukommelse, såsom adgang til hukommelsesområder efter frigivelse, dereferering af nulpekere, buffer-overløb osv. For distribution af biblioteker, byggeprocesser og afhængighedsstyring udvikles pakkehåndteringssystemet Cargo. For opbevaring af biblioteker understøttes repository'et crates.io.

Sikker håndtering af hukommelse sikres i Rust under kompilering ved referencekontrol, sporing af ejerskab af objekter, hensyntagen til livstid af objekter (synlighed) og vurdering af korrekt adgang til hukommelse under kodeudførelse. Rust tilbyder også midler til beskyttelse mod heltals-overløb, kræver obligatorisk initialisering af variabelværdier før brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet med uforanderlige (immutable) referencer og variabler som standard og tilbyder stærk statisk typisering for at minimere logiske fejl.

Hovednyhederne:

  • Der er tilføjet støtte til inline-konstanter, som kan angives direkte i koden ved hjælp af blokke "const { … }", der behandles i konteksten af konstanter og gør det muligt at undgå separeret definition af konstanter. Koden angivet i blokken "const { … }" beregnes i kompileringstiden og bruges som en konstant, uden udførelse under programmet. I modsætning til definition af konstanter gennem udtrykket "const ITEM: … = …" behøver man ikke at angive typen i blokke "const { … }", da de understøtter automatisk typeudledning. For eksempel kan koden med separat definition af en konstant

    const EMPTY: Option<Vec> = None;
    let foo = [EMPTY; 100];

    kan erstattes med brug på stedet:

    let foo = [const { None }; 100];

  • Syntaksen "T: Trait" er blevet stabiliseret til at angive begrænsninger i positionen for associerede typer, hvilket gør det muligt at forkorte definitionen af udtryk med indlejrede typebegrænsninger, der tidligere krævede angivelse af en indlejret impl Trait eller flere "where" betingelser.
  • Der er sikret automatisk forlængelse af livstiden for midlertidige værdier, der bruges i konstruktioner som "match" og "if."

    let a = if true {
    ..;
    &temp() // livstiden vil blive forlænget
    } else {
    ..;
    &temp() // livstiden vil blive forlænget
    };

  • Muligheden for at importere funktionen main fra andre moduler og crate-pakker er blevet stabiliseret.
  • Når den standardbiblioteket kompileres, anvendes flaget "-Cforce-frame-pointers=yes", der tilføjer data til rekonstruktion af stakken under profilering af programmer.
  • En ny batch af API'er er blevet klassificeret som stabile, herunder stabilisering af metoder og implementeringer af traits:
    • {integer}::unchecked_add
    • {integer}::unchecked_mul
    • {integer}::unchecked_sub
    • ::split_at_unchecked
    • ::split_at_mut_unchecked
    • ::utf8_chunks
    • str::Utf8Chunks
    • str::Utf8Chunk
    • ::is_aligned
    • ::is_aligned
    • NonNull::is_aligned
    • ::len
    • ::len
    • ::is_empty
    • ::is_empty
    • NonNull::::is_empty
    • CStr::count_bytes
    • io::Error::downcast
    • num::NonZero
    • path::absolute
    • proc_macro::Literal::byte_character
    • proc_macro::Literal::c_string
  • Kendetegnet «const», som bestemmer muligheden for at bruge det i enhver kontekst i stedet for konstanter, anvendes i funktioner:
    • Atomic*::into_inner
    • io::Cursor::new
    • io::Cursor::get_ref
    • io::Cursor::position
    • io::empty
    • io::repeat
    • io::sink
    • panic::Location::caller
    • panic::Location::file
    • panic::Location::line
    • panic::Location::column
  • Stabiliseret
    en del af funktionerne, der kan bruges til kompilering til det mellemliggende Webassembly (WASM) format.
  • Implementeret tredje niveau af support for platformene aarch64-apple-visionos, aarch64-apple-visionos-sim og riscv32ima-unknown-none-elf. Tredje niveau indebærer grundlæggende support, men uden automatiseret testning, offentliggørelse af officielle builds og verifikation af muligheden for at bygge koden.
  • Implementeret andet niveau af support for målplatforme aarch64-pc-windows-gnullvm, i686-pc-windows-gnullvm og x86_64-pc-windows-gnullvm. Andet niveau af support indebærer en garanti for bygningen.

Desuden har organisationen Rust Foundation, som overvåger økosystemet relateret til Rust-sproget, annonceret dannelsen af konsortiet "Safety-Critical Rust Consortium", der har til formål at anvende Rust-sproget i løsninger, der kræver høj pålidelighed (Safety-Critical Software), hvor en fejl kan true menneskers liv, skade miljøet eller forårsage alvorlige skader på udstyr. Virksomhederne ARM, AdaCore, Ferrous Systems, OxidOS, Synopsys, HighTec EDV-Systeme GmbH, TrustInSoft, Veecle og Woven by Toyota har sluttet sig til konsortiet. Blandt de opgaver, som konsortiet vil håndtere, nævnes udarbejdelse af vejledninger og udvikling af biblioteker, linters og statiske analyseværktøjer samt anvendelse af metoder til formel verifikation af pålidelighed og udvikling af underkategorier af sproget til høj-pålidelige systemer.

Blandt projekterne relateret til høj-pålidelige systemer kan nævnes Verus — et værktøj til at kontrollere korrektheden af kode skrevet i Rust-sproget. Kontrollen udføres ved at definere en specifikation, der beskriver den acceptable adfærd af koden. Under udførelsen af den kørende kode kontrollerer Verus overensstemmelsen med specifikationen for at bekræfte korrektheden.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster