Rust 1.68 programmeringssprog udgivelse

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

  • Cargo-pakkeadministratoren og crates.io-lageret har stabiliseret understøttelse af Sparse-protokollen, som definerer en ny måde at arbejde på med et indeks, der afspejler de tilgængelige versioner af alle pakker, der findes i depotet. Den nye protokol giver dig mulighed for markant at øge hastigheden af ​​arbejdet med crates.io og løse skaleringsproblemer med yderligere vækst i antallet af pakker i depotet.

    For at reducere forsinkelserne forårsaget af at downloade et fuldt indeks, involverer Sparse i stedet for at få adgang til indekset ved hjælp af Git direkte download over HTTPS kun de nødvendige indeksdata, der dækker afhængighederne af et bestemt projekt. En ny tjeneste, index.crates.io, bruges til at levere indeksdata. Som standard er den nye protokol planlagt til at blive brugt i Rust 1.70-grenen, og før det, for at aktivere den, kan du indstille miljøvariablen "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" eller tilføje parameteren 'protocol =' til "[registre. crates-io]" sektionen af ​​.cargo/config.toml filen 'sparse'.

  • Tilføjet "pin!"-makroen, som giver dig mulighed for at oprette en Pin<&mut T>-struktur fra udtrykket "T" med lokal pinning af dens tilstand (i modsætning til Box::pin, allokerer den ikke hukommelse på heapen, men binder på stakniveau).
  • En standard hukommelsesallokeringsfejlbehandler er blevet foreslået, brugt ved brug af standardallokeringspakken. Programmer, der kun aktiverer alloc (uden std) vil nu kalde "panic!"-handleren, når hukommelsesallokering mislykkes, hvilket valgfrit kan opsnappes ved hjælp af "#[panic_handler]". Programmer, der bruger std-biblioteket, fortsætter med at udskrive fejlinformation til stderr og går ned.
  • En ny del af API'et er blevet flyttet til kategorien stabil, inklusive metoder og implementeringer af egenskaber er blevet stabiliseret:
    • {core,std}::pin::pin!
    • impl Fra for {f32,f64}
    • std::sti::MAIN_SEPARATOR_STR
    • impl DerefMut for PathBuf
  • "const"-attributten, som bestemmer muligheden for at bruge den i enhver sammenhæng i stedet for konstanter, bruges i VecDeque::new-funktionen.
  • For at arbejde på Android-platformen kræves der nu mindst NDK r25 (API 19), dvs. Den mindste understøttede Android-version er blevet hævet til 4.4 (KitKat).
  • Det tredje niveau af support er blevet implementeret til Sony PlayStation Vita-platformen (armv7-sony-vita-newlibeabihf). Det tredje niveau involverer grundlæggende support, men uden automatiseret test, udgivelse af officielle builds eller kontrol af, om koden kan bygges.

Kilde: opennet.ru

Tilføj en kommentar