Publikimi i gjuhës programuese Rust 1.67

Gjuha e programimit për qëllime të përgjithshme Rust 1.67, e themeluar nga projekti Mozilla, por tani e zhvilluar nën kujdesin e organizatës së pavarur jofitimprurëse Rust Foundation, është publikuar. Gjuha fokusohet në sigurinë e kujtesës dhe siguron mjetet për të arritur paralelizëm të lartë të punës duke shmangur përdorimin e një grumbulluesi të mbeturinave dhe kohën e funksionimit (koha e funksionimit reduktohet në inicializimin bazë dhe mirëmbajtjen e bibliotekës standarde).

Metodat e trajtimit të memories Rust e ruajnë zhvilluesin nga gabimet gjatë manipulimit të treguesve dhe mbrojnë nga problemet që lindin për shkak të trajtimit të nivelit të ulët të kujtesës, të tilla si qasja në një zonë memorie pasi të jetë liruar, mosreferencimi i treguesve null, tejkalimet e buferit, etj. Për të shpërndarë bibliotekat, për të ofruar ndërtime dhe për të menaxhuar varësitë, projekti zhvillon menaxherin e paketave Cargo. Depoja e crates.io mbështetet për pritjen e bibliotekave.

Siguria e memories sigurohet në Rust në kohën e përpilimit përmes kontrollit të referencës, mbajtjes së gjurmës së pronësisë së objektit, mbajtjes së gjurmëve të jetëgjatësisë së objektit (scopes) dhe vlerësimit të saktësisë së aksesit në kujtesë gjatë ekzekutimit të kodit. Rust siguron gjithashtu mbrojtje kundër tejmbushjeve të numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave përpara përdorimit, trajton më mirë gabimet në bibliotekën standarde, zbaton konceptin e referencave dhe variablave të pandryshueshme si parazgjedhje, ofron shtypje të fortë statike për të minimizuar gabimet logjike.

Risitë kryesore:

  • Për funksionet asinkronike me Future::Output, tani është e mundur të specifikohen shënimet "#[must_use]" që përfshijnë një paralajmërim nëse vlera e kthyer shpërfillet, gjë që ndihmon në identifikimin e gabimeve të shkaktuara nga supozimi se funksioni do të ndryshojë vlerat në vend që të kthejë një vlerë të re. #[duhet_përdorur] async fn bar() -> u32 { 0 } async fn thirrësi() { bar().prit; } warning: outputi i papërdorur i së ardhmes i kthyer nga `bar` që duhet të përdoret —> src/lib.rs:5:5 | 5 | bar().prit; | ^^^^^^^^^^^ | = shënim: `#[paralajmërim(unused_must_use)]` është aktivizuar si parazgjedhje
  • Është përditësuar zbatimi i rradhëve FIFO std::sync::mpsc (konsumator i vetëm me shumë prodhues), i cili është kaluar në përdorimin e modulit të kanalit të kryqëzuar duke ruajtur API-në e mëparshme. Implementimi i ri dallohet nga zgjidhja e një sërë problemesh, performanca më e lartë dhe mirëmbajtja e thjeshtuar e kodit.
  • Një pjesë e re e API-së është zhvendosur në kategorinë e qëndrueshme, duke përfshirë metodat dhe implementimet e tipareve janë stabilizuar:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {integer}::ilog
    • {integer}::ilog2
    • {integer}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • JoZero*::BITS
  • Atributi "const", i cili përcakton mundësinë e përdorimit të tij në çdo kontekst në vend të konstanteve, përdoret në funksionet:
    • char::nga_u32
    • char::nga_shifror
    • char::to_shifror
    • bërthamë::char::nga_u32
    • bërthamë::char::nga_shifror
  • Një nivel i tretë i mbështetjes është zbatuar për përdorimin e Rust në kernelin Linux (linuxkernel), si dhe për Sony PlayStation 1 (mipsel-sony-psx), PowerPC me AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platformat qnx710, x86_64-pc-nto-qnx710). Niveli i tretë përfshin mbështetjen bazë, por pa testim të automatizuar, publikim të ndërtimeve zyrtare ose kontrollim nëse kodi mund të ndërtohet.

Për më tepër, mund të vërejmë publikimin nga ARM të arnimeve që lejojnë përdorimin e gjuhës Rust për të zhvilluar drejtues dhe module kernel Linux të mbledhura për sistemet e bazuara në arkitekturën AArch64.

Burimi: opennet.ru

Shto një koment