Rust 1.47 programsprÄk release

publiceras version 1.47 av systemets programmeringssprÄk Rust, 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 sophÀmtare О runtime (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. LaddningEtt arkiv stöds för att vara vÀrd för bibliotek. lÄdor.io.

Den huvudsakliga innovationer:

  • Implementerat stöd för typer för matriser 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 inblandade 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 LLVM 11 (Rost anvĂ€ndningsomrĂ„den LLVM som backend för kodgenereringSamtidigt bevaras möjligheten att bygga med gamla LLVM:er, upp till version 8, men som standard (i rust-lang/llvm-projekt) 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 inblandade verktygskedja frĂ„n FreeBSD 11.4 (FreeBSD 10 stöder inte LLVM 11).

KĂ€lla: opennet.ru

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster