version 1.47 av systemets programmeringssprÄk , grundat av Mozilla-projektet. SprÄket fokuserar pÄ minnessÀkerhet, tillhandahÄller automatisk minneshantering och ger möjlighet att uppnÄ hög parallellitet i uppgiftskörning utan anvÀndning av О (körtiden Àr begrÀnsad till grundlÀggande initialisering och underhÄll av standardbiblioteket).
Automatisk minneshantering i Rust rÀddar utvecklaren frÄn fel vid manipulering av pekare och skyddar mot problem som uppstÄr vid minneshantering pÄ lÄg nivÄ, sÄsom Ätkomst till ett minnesomrÄde efter att det har frigjorts, avreferensering av nullpekare, buffertöverskridningar etc. En pakethanterare utvecklas för att distribuera bibliotek, sÀkerstÀlla assemblering och hantera projektberoenden. Ett arkiv stöds för att vara vÀrd för bibliotek. .
Den huvudsakliga :
- Implementerat stöd för typer för godtycklig storlek. Tidigare, pÄ grund av omöjligheten att definiera generiska funktioner för alla heltal, tillhandahöll standardbiblioteket inbyggt stöd för egenskaper endast för arrayer med upp till 32 element (egenskaper för varje storlek definierades statiskt). Med skapandet av funktionaliteten för konstanta generiska funktioner ("const generics") blev det möjligt att definiera generiska funktioner för vilken arraystorlek som helst, men de ingÄr Ànnu inte i sprÄkets stabila funktioner, Àven om de Àr implementerade i kompilatorn och nu i standardbiblioteket för arraytyper av alla storlekar.
Till exempel kommer följande konstruktion i Rust 1.47 att skriva ut innehÄllet i arrayen, medan det tidigare skulle ha resulterat i ett fel:
fn main() {
lÄt xs = [0; 34];println!(«{:?}», xs);
} - TillhandahÄlls utgÄng av kortare spÄr (backtrace), utgÄng i nödsituationer. Element som inte Àr av intresse i de flesta situationer, men som stör utmatningen och distraherar uppmÀrksamheten frÄn de primÀra orsakerna till problemet, utesluts frÄn spÄret. För att returnera en fullstÀndig spÄrning kan du anvÀnda miljövariabeln "RUST_BACKTRACE=full". Till exempel för koden
fn main() {
panik!();
}Tidigare utfördes spÄrningen i 23 steg, men nu kommer den att reduceras till
3 steg för att förstÄ kÀrnan direkt:trÄden 'main' fick panik vid 'explicit panic', src/main.rs:2:5
stack bakÄtspÄrning:
0: std::panik::begin_panic
pĂ„ /rustc/dâŠd75a/library/std/src/panicking.rs:497
1: lekplats::main
pÄ ./src/main.rs:2
2: kÀrna::ops::funktion::FnOnce::call_once
pĂ„ /rustc/dâŠd75a/library/core/src/ops/function.rs:227 - Rustc-kompilatorn uppdaterad för att bygga med (Rost LLVM som backend för Samtidigt bevaras möjligheten att bygga med gamla LLVM:er, upp till version 8, men som standard (i ) anvĂ€nder nu LLVM 11. Lanseringen av LLVM 11 förvĂ€ntas inom de nĂ€rmaste dagarna.
- PÄ plattformen Windows rustc-kompilatorn har nu stöd för aktivering av Control Flow Guard-kontroller med flaggan "-C control-flow-guard". Denna flagga ignoreras för nÀrvarande pÄ andra plattformar.
- En ny del av API har överförts till kategorin stabil, inklusive stabiliserad
Identifierare::new_raw,
Intervall::Ă€r_tomt,
RangeInclusive::is_empty,
Resultat::as_deref,
Resultat::as_deref_mut,
Vec::lÀcka,
pekare::offset_frÄn,
f32::TAU och
f64::TAU. - Attributet "const", som bestÀmmer möjligheten att anvÀnda det i alla sammanhang istÀllet för konstanter, anvÀnds i metoderna:
- ny för alla heltal förutom noll;
- checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub och saturating_mul för alla heltal;
- is_ascii_alphabetic, is_ascii_versaler, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_interpunctuation, is_ascii_graphic, is_ascii_whitespace och is_ascii-typer för char
- För FreeBSD verktygskedja frÄn FreeBSD 11.4 (FreeBSD 10 stöder inte LLVM 11).
KĂ€lla: opennet.ru
