Rust 1.46 programmeringssprog udgivelse

offentliggjort udgivelse 1.46 af systemets programmeringssprog Rust, grundlagt af Mozilla-projektet. Sproget fokuserer på hukommelsessikkerhed, giver automatisk hukommelsesstyring og giver værktøjer til at opnå høj opgaveparallelisme uden at bruge en skraldeopsamler og runtime.

Rusts automatiske hukommelsesstyring eliminerer fejl ved manipulation af pointere og beskytter mod problemer, der opstår fra manipulation af hukommelsen på lavt niveau, såsom adgang til en hukommelsesregion, efter at den er blevet frigivet, nul pointer-dereferencer, bufferoverskridelser osv. En pakkemanager er ved at blive udviklet til at distribuere biblioteker, sikre samling og administrere afhængigheder af projektet. Last, som giver dig mulighed for at få de biblioteker, du skal bruge til programmet, med et enkelt klik. Et lager er understøttet til at være vært for biblioteker kasser.io.

The main innovationer:

  • Funktionerne for funktioner defineret ved hjælp af udtrykket "const fn" er blevet udvidet, som ikke kun kan kaldes som regulære funktioner, men også bruges i enhver sammenhæng i stedet for konstanter. Disse funktioner beregnes på kompileringstidspunktet, ikke ved runtime, så de er underlagt visse begrænsninger, såsom muligheden for kun at læse fra konstanter.

    Den nye udgivelse fjerner forbuddet mod at bruge boolske operatorer ("&&" og "||") i sådanne funktioner, og tillader brugen af ​​"hvis", "hvis lad", "match" konstruktioner,
    "while", "while let" og "loop", og giver også mulighed for at konvertere til skiver (slice, dynamiske arrays) ved hjælp af udtrykket "&[T]". Brugen af ​​disse funktioner i "const fn"-funktionerne giver dig mulighed for at flytte nogle ressourcekrævende operationer til kompileringsstadiet. For eksempel gør implementeringen af ​​"const-sha1" det muligt at beregne SHA-1 hashes på kompileringstidspunktet, hvilket fører til at fremskynde WinRT-bindinger for Rust med næsten 40 gange.

  • For at gøre fejlmeddelelser mere informative er understøttelse af "#[track_caller]"-attributten blevet stabiliseret, hvilket er nyttigt til funktioner som unwrap, hvilket kan forårsage panik, hvis typer bruges forkert. Den angivne attribut vil blive brugt af panikbehandleren til at udskrive den opkaldendes placering i en fejlmeddelelse.
  • "const"-attributten, som bestemmer muligheden for at bruge den i enhver sammenhæng i stedet for konstanter, bruges i std::mem::forget-metoden.
  • En ny del af API'et er blevet flyttet til den stabile kategori, inklusive den stabiliserede Option::zip og vec::Drain::as_slice.
  • I pakkeforvalter Cargo tilføjet understøttelse af nye miljøvariabler indstillet ved kompilering af en pakke: CARGO_BIN_NAME (navnet på den resulterende eksekverbare fil), CARGO_CRATE_NAME (pakkenavn), CARGO_PKG_LICENSE (licens angivet i manifestet), CARGO_PKG_LICENSE_FILE (sti til licensfilen).

Kilde: opennet.ru

Tilføj en kommentar