Rust 1.68 programmeringsspråkutgivelse

Utgivelsen av Rust 1.68 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:

  • Cargo-pakkebehandleren og crates.io-depotet har stabilisert støtte for Sparse-protokollen, som definerer en ny måte å jobbe på med en indeks som gjenspeiler de tilgjengelige versjonene av alle pakkene som finnes i depotet. Den nye protokollen lar deg øke hastigheten på arbeidet med crates.io betydelig og løse skaleringsproblemer med ytterligere vekst i antall pakker i depotet.

    For å redusere forsinkelsene forårsaket av nedlasting av en full indeks, involverer Sparse i stedet for å få tilgang til indeksen ved å bruke Git direkte nedlasting over HTTPS bare de nødvendige indeksdataene, som dekker avhengighetene til et bestemt prosjekt. En ny tjeneste, index.crates.io, brukes til å gi indeksdata. Som standard er den nye protokollen planlagt brukt i Rust 1.70-grenen, og før det, for å aktivere den, kan du sette miljøvariabelen "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" eller legge til 'protocol ='-parameteren til "[registrene. crates-io]"-delen av .cargo/config.toml-filen 'sparse'.

  • Lagt til "pin!"-makroen, som lar deg lage en Pin<&mut T>-struktur fra uttrykket "T" med lokal pinning av tilstanden (i motsetning til Box::pin, allokerer den ikke minne på haugen, men binder på stabelnivå).
  • En standard minneallokeringsfeilbehandler er foreslått, brukt ved bruk av standard allokeringspakken. Applikasjoner som bare aktiverer alloc (uten std) vil nå kalle "panic!"-behandleren når minnetildeling mislykkes, som eventuelt kan avskjæres ved hjelp av "#[panic_handler]". Programmer som bruker std-biblioteket vil fortsette å skrive ut feilinformasjon til stderr og krasjer.
  • En ny del av API har blitt flyttet til kategorien stabil, inkludert metodene og implementeringene av egenskaper er stabilisert:
    • {core,std}::pin::pin!
    • impl Fra for {f32,f64}
    • std::bane::MAIN_SEPARATOR_STR
    • impl DerefMut for PathBuf
  • «const»-attributtet, som bestemmer muligheten for å bruke det i enhver kontekst i stedet for konstanter, brukes i VecDeque::new-funksjonen.
  • For å jobbe på Android-plattformen kreves det nå minst NDK r25 (API 19), dvs. Minimum støttet Android-versjon er hevet til 4.4 (KitKat).
  • Det tredje nivået av støtte er implementert for Sony PlayStation Vita-plattformen (armv7-sony-vita-newlibeabihf). Det tredje nivået innebærer grunnleggende støtte, men uten automatisert testing, publisering av offisielle bygg, eller sjekk om koden kan bygges.

Kilde: opennet.ru

Legg til en kommentar