Rust 1.67 programmeringssprog udgivelse

Det generelle programmeringssprog Rust 1.67, 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:

  • For asynkrone funktioner med Future::Output er det nu muligt at specificere "#[must_use]" annoteringer, der inkluderer en advarsel, hvis returværdien ignoreres, hvilket hjælper med at identificere fejl forårsaget af antagelsen om, at funktionen vil ændre værdierne i stedet for at returnere en ny værdi. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } advarsel: ubrugt output fra fremtiden returneret af `bar`, der skal bruges —> src/lib.rs:5:5 | 5 | bar().afvente; | ^^^^^^^^^^^ | = bemærk: `#[warn(unused_must_use)]` slået til som standard
  • Implementeringen af ​​FIFO-køer std::sync::mpsc (multi-producer single-consumer) er blevet opdateret, som er blevet skiftet til at bruge crossbeam-channel-modulet, mens den tidligere API bibeholdes. Den nye implementering udmærker sig ved at løse en række problemer, højere ydeevne og forenklet kodevedligeholdelse.
  • En ny del af API'et er blevet flyttet til kategorien stabil, inklusive metoder og implementeringer af egenskaber er blevet stabiliseret:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {heltal}::ilog
    • {heltal}::ilog2
    • {heltal}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • Ikke-Nul*::BITS
  • "const"-attributten, som bestemmer muligheden for at bruge den i enhver sammenhæng i stedet for konstanter, bruges i funktionerne:
    • char::from_u32
    • char::fra_cifre
    • char::to_digit
    • kerne::char::from_u32
    • kerne::char::fra_cifre
  • Et tredje niveau af understøttelse er blevet implementeret til brug af Rust i Linux-kernen (linuxkernel), såvel som for Sony PlayStation 1 (mipsel-sony-psx), PowerPC med AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platforme qnx710, x86_64-pc-nto-qnx710). Det tredje niveau involverer grundlæggende support, men uden automatiseret test, udgivelse af officielle builds eller kontrol af, om koden kan bygges.

Derudover kan vi bemærke udgivelsen af ​​ARM af patches, der tillader brugen af ​​Rust-sproget til at udvikle drivere og Linux-kernemoduler, der er samlet til systemer baseret på AArch64-arkitekturen.

Kilde: opennet.ru

Tilføj en kommentar