Rust 1.62 programmeringssprog udgivelse

Det generelle programmeringssprog Rust 1.62, grundlagt af Mozilla-projektet, men nu udviklet i regi af den uafhængige non-profit organisation Rust Foundation, er blevet frigivet. Sproget fokuserer på hukommelsessikkerhed og giver midlerne til at opnå høj jobparallelisme, samtidig med at man undgår brugen af ​​en skraldeopsamler og runtime (runtime reduceres til grundlæggende initialisering og vedligeholdelse af standardbiblioteket).

Rusts hukommelseshåndteringsmetoder sparer udvikleren for fejl ved manipulation af pointere og beskytter mod problemer, der opstår på grund af hukommelseshåndtering på lavt niveau, såsom adgang til et hukommelsesområde efter det er blevet frigivet, dereferencing af nul-pointere, bufferoverskridelser osv. For at distribuere biblioteker, levere builds og administrere afhængigheder udvikler projektet Cargo Package Manager. Crates.io-lageret understøttes til hosting af biblioteker.

Hukommelsessikkerhed er tilvejebragt i Rust på kompileringstidspunktet gennem referencekontrol, holde styr på objektejerskab, holde styr på objektlevetider (scopes) og vurdere rigtigheden af ​​hukommelsesadgang under kodeudførelse. Rust giver også beskyttelse mod heltalsoverløb, kræver obligatorisk initialisering af variabelværdier før brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet med uforanderlige referencer og variabler som standard, tilbyder stærk statisk skrivning for at minimere logiske fejl.

Vigtigste innovationer:

  • Pakkehåndteringen "cargo" tilbyder kommandoen "add", som giver dig mulighed for at tilføje nye afhængigheder til Cargo.toml-manifestet eller ændre eksisterende afhængigheder fra kommandolinjen. Kommandoen giver dig også mulighed for at specificere individuelle funktioner og versioner, for eksempel: cargo add serde —features derive cargo add nom@5
  • Tilføjet muligheden for at bruge "#[derive(Default)]" med enums, hvor standardindstillingen er defineret ved hjælp af "#[default]"-attributten. #[derive(Standard)] enum Måske { #[standard] Intet, Noget(T), }
  • På Linux-platformen bruges en mere kompakt og hurtigere implementering af Mutex-synkroniseringsmekanismen, baseret på brugen af ​​futexes leveret af Linux-kernen. I modsætning til den tidligere anvendte implementering baseret på pthreads-biblioteket, bruger den nye version kun 5 bytes i stedet for 40 til at lagre Mutex-tilstanden. Tilsvarende er Condvar- og RwLock-låsemekanismerne blevet overført til futex.
  • Et andet niveau af understøttelse af x86_64-unknown-none-målplatformen er blevet implementeret, designet til at generere eksekverbare filer, der kan fungere uden et operativsystem. For eksempel kan den angivne målplatform bruges, når du skriver kernekomponenter. Det andet supportniveau involverer en monteringsgaranti.
  • Det tredje niveau af support er blevet implementeret for platformene aarch64-pc-windows-gnullvm og x86_64-pc-windows-gnullvm. Det tredje niveau involverer grundlæggende support, men uden automatiseret test, udgivelse af officielle builds eller kontrol af, om koden kan bygges.
  • En ny del af API'et er blevet flyttet til kategorien stabil, inklusive metoder og implementeringer af egenskaber er blevet stabiliseret:
    • bool::så_nogle
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::lines
    • windows::CommandExt::raw_arg
    • impl standardværdi for AssertUnwindSafe
    • Fra > for Rc
    • Fra > for Arc<[u8]>
    • FusedIterator til EncodeWide

    Kilde: opennet.ru

Tilføj en kommentar