Rust 1.55 programspråk release

Utgivningen av systemprogrammeringsspråket Rust 1.55, grundat av Mozilla-projektet, men nu utvecklat i regi av den oberoende ideella organisationen Rust Foundation, har publicerats. Språket fokuserar på minnessäkerhet, ger automatisk minneshantering och ger möjlighet att uppnå hög uppgiftsparallellism utan att använda en skräpsamlare eller körtid (körtiden reduceras till grundläggande initiering och underhåll av standardbiblioteket).

Rusts automatiska minneshantering eliminerar fel vid manipulering av pekare och skyddar mot problem som uppstår från minnesmanipulation på låg nivå, som att komma åt en minnesregion efter att den har frigjorts, nollpekarereferenser, buffertöverskridanden, etc. För att distribuera bibliotek, säkerställa montering och hantera beroenden utvecklar projektet Cargo package manager. Crates.io-förvaret stöds för värdbibliotek.

Huvudsakliga innovationer:

  • Lastpakethanteraren har förmågan att slå samman dubbletter av fel och varningar som uppstår under ett bygge. När man kör kommandon som "lasttest" och "lastkontroll --all-targets" som resulterar i flera konstruktioner av ett paket med olika parametrar, visas nu användaren en sammanfattning av förekomsten av ett upprepat problem, istället för att visas flera identiska varningar när du bygger samma sak upprepade gånger. $ cargo +1.55.0 check —all-targets Kontrollera foo v0.1.0 varning: funktionen används aldrig: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = notera: '#[warn(dead_code)]' på som standard varning: 'foo' (lib) genererade 1 varning varning: 'foo' (lib test) genererade 1 varning (1 dubblett) Färdiga dev [ooptimerad + debuginfo] mål (s) på 0.84s
  • Flyttalsanalyskoden i standardbiblioteket har flyttats för att använda den snabbare och mer exakta Eisel-Lemire-algoritmen, som har löst några tidigare observerade problem med avrundning och analys av tal med mycket stora antal siffror.
  • Möjligheten att ange oslutna intervall i mallar har stabiliserats ("X.." tolkas som ett intervall som börjar med värdet X och slutar med maxvärdet för heltalstypen): match x as u32 { 0 => println! ("noll!"), 1.. => println!("positivt tal!"), }
  • Utökade felvarianter som täcks av std::io::ErrorKind (klassificerar fel i kategorier som NotFound och WouldBlock). Tidigare föll fel som inte passade in i befintliga kategorier i kategorin ErrorKind::Other, som också användes för fel i tredjepartskod. Det finns nu en separat intern kategori ErrorKind::Uncategorized för fel som inte passar in i befintliga kategorier, och ErrorKind::Other-kategorin är begränsad till fel som inte förekommer i standardbiblioteket (standardbiblioteksfunktioner som returnerar io::Error inte längre använder ErrorKind:: kategorin Annat).
  • En ny del av API:t har flyttats till kategorin stabil, inklusive metoder och implementeringar av egenskaper har stabiliserats:
    • Bundet::klonad
    • Dränera::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • KanskeUninit::assume_init_mut
    • Kanske Uninit::assume_init_ref
    • Kanske Uninit::skriv
    • array::map
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Attributet "const", som bestämmer möjligheten att använda det i alla sammanhang istället för konstanter, används i metoden str::from_utf8_unchecked.
  • Den tredje nivån av stöd har implementerats för powerpc64le-unknown-freebsd-plattformen. Den tredje nivån innebär grundläggande support, men utan automatiserad testning, publicering av officiella builds eller kontroll av om koden kan byggas.

Källa: opennet.ru

Lägg en kommentar