Rust 1.67 programmeringsspråkutgivelse

Utgivelsen av Rust 1.67 generell programmeringsspråk, grunnlagt av Mozilla-prosjektet, men nå utviklet i regi av den uavhengige ideelle organisasjonen Rust Foundation, har blitt publisert. Språket fokuserer på minnesikkerhet og gir midler til å oppnå høy jobbparallellisme samtidig som man unngår bruk av en søppeloppsamler og kjøretid (kjøretiden reduseres til grunnleggende initialisering og vedlikehold av standardbiblioteket).

Rusts minnehåndteringsmetoder sparer utvikleren fra feil ved manipulering av pekere og beskytter mot problemer som oppstår på grunn av minnehåndtering på lavt nivå, for eksempel tilgang til et minneområde etter at det har blitt frigjort, avreferering av null-pekere, bufferoverskridelser, etc. For å distribuere biblioteker, tilby bygg og administrere avhengigheter, utvikler prosjektet Cargo-pakkeansvarlig. Crates.io-depotet støttes for hosting av biblioteker.

Minnesikkerhet er gitt i Rust på kompileringstidspunktet gjennom referansesjekking, holde styr på objekteierskap, holde styr på objektlevetider (scopes), og vurdere riktigheten av minnetilgang under kjøring av kode. Rust gir også beskyttelse mot heltallsoverløp, krever obligatorisk initialisering av variabelverdier før bruk, håndterer feil bedre i standardbiblioteket, bruker konseptet med uforanderlige referanser og variabler som standard, tilbyr sterk statisk skriving for å minimere logiske feil.

Hovedinnovasjoner:

  • For asynkrone funksjoner med Future::Output er det nå mulig å spesifisere "#[must_use]" merknader som inkluderer en advarsel hvis returverdien ignoreres, noe som hjelper til med å identifisere feil forårsaket av antakelsen om at funksjonen vil endre verdiene i stedet for å returnere en ny verdi. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } advarsel: ubrukt utgang av fremtidig returnert av `bar` som må brukes —> src/lib.rs:5:5 | 5 | bar().avvent; | ^^^^^^^^^^^ | = merk: `#[warn(unused_must_use)]` på som standard
  • Implementeringen av FIFO-køer std::sync::mpsc (multi-producer single-consumer) har blitt oppdatert, som har blitt byttet til å bruke crossbeam-channel-modulen mens den tidligere API-en ble opprettholdt. Den nye implementeringen utmerker seg ved å løse en rekke problemer, høyere ytelse og forenklet kodevedlikehold.
  • En ny del av API har blitt flyttet til kategorien stabil, inkludert metodene og implementeringene av egenskaper er stabilisert:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {heltall}::ilog
    • {heltall}::ilog2
    • {heltall}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • Ikke null*::BITS
  • "const"-attributtet, som bestemmer muligheten for å bruke det i enhver kontekst i stedet for konstanter, brukes i funksjonene:
    • char::from_u32
    • char::fra_siffer
    • char::to_digit
    • kjerne::char::from_u32
    • kjerne::char::fra_siffer
  • Et tredje nivå av støtte er implementert for bruk av Rust i Linux-kjernen (linuxkernel), så vel som for Sony PlayStation 1 (mipsel-sony-psx), PowerPC med AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-)-plattformene qnx710, x86_64-pc-nto-qnx710). Det tredje nivået innebærer grunnleggende støtte, men uten automatisert testing, publisering av offisielle bygg, eller sjekk om koden kan bygges.

I tillegg kan vi legge merke til utgivelsen av ARM av patcher som tillater bruk av Rust-språket for å utvikle drivere og Linux-kjernemoduler satt sammen for systemer basert på AArch64-arkitekturen.

Kilde: opennet.ru

Legg til en kommentar