Rust 1.67 programspråk release

Utgivningen av Rust 1.67 allmänt programmeringsspråk, grundat av Mozilla-projektet, men nu utvecklat under överinseende av den oberoende ideella organisationen Rust Foundation, har publicerats. Språket fokuserar på minnessäkerhet och ger möjlighet att uppnå hög jobbparallellism samtidigt som man undviker användningen av en skräpsamlare och körtid (körtiden reduceras till grundläggande initiering och underhåll av standardbiblioteket).

Rusts minneshanteringsmetoder räddar utvecklaren från fel vid manipulering av pekare och skyddar mot problem som uppstår på grund av minneshantering på låg nivå, som att komma åt ett minnesområde efter att det har frigjorts, avläsning av nollpekare, buffertöverskridningar, etc. För att distribuera bibliotek, tillhandahålla builds och hantera beroenden utvecklar projektet Cargo package manager. Crates.io-förvaret stöds för värdbibliotek.

Minnessäkerhet tillhandahålls i Rust vid kompilering genom referenskontroll, hålla reda på objektägande, hålla reda på objektlivslängder (scopes) och bedöma riktigheten av minnesåtkomst under kodexekvering. Rust ger också skydd mot heltalsspill, kräver obligatorisk initiering av variabelvärden innan användning, hanterar fel bättre i standardbiblioteket, tillämpar konceptet med oföränderliga referenser och variabler som standard, erbjuder stark statisk typning för att minimera logiska fel.

Huvudsakliga innovationer:

  • För asynkrona funktioner med Future::Output är det nu möjligt att ange "#[must_use]"-anteckningar som inkluderar en varning om returvärdet ignoreras, vilket hjälper till att identifiera fel orsakade av antagandet att funktionen kommer att ändra värdena istället för att returnera ett nytt värde. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } varning: oanvänd utdata från framtid returneras av `bar` som måste användas —> src/lib.rs:5:5 | 5 | bar().await; | ^^^^^^^^^^^^ | = notera: `#[warn(unused_must_use)]` på som standard
  • Implementeringen av FIFO-köer std::sync::mpsc (multi-producer single-consumer) har uppdaterats, vilket har bytts till att använda crossbeam-kanalmodulen samtidigt som det tidigare API:et bibehålls. Den nya implementeringen utmärker sig genom att lösa ett antal problem, högre prestanda och förenklat kodunderhåll.
  • En ny del av API:t har flyttats till kategorin stabil, inklusive metoder och implementeringar av egenskaper har stabiliserats:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {heltal}::ilog
    • {heltal}::ilog2
    • {heltal}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • Attributet "const", som bestämmer möjligheten att använda det i alla sammanhang istället för konstanter, används i funktioner:
    • char::from_u32
    • char::från_siffra
    • char::to_digit
    • kärna::char::from_u32
    • kärna::char::från_siffra
  • En tredje nivå av stöd har implementerats för att använda Rust i Linux-kärnan (linuxkärnan), såväl som för Sony PlayStation 1 (mipsel-sony-psx), PowerPC med AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) plattformar qnx710, x86_64-pc-nto-qnx710). Den tredje nivån innebär grundläggande support, men utan automatiserad testning, publicering av officiella builds eller kontroll av om koden kan byggas.

Dessutom kan vi notera publiceringen av ARM av patchar som tillåter användning av Rust-språket för att utveckla drivrutiner och Linux-kärnmoduler sammansatta för system baserade på AArch64-arkitekturen.

Källa: opennet.ru

Lägg en kommentar