Rust 1.67 programmēšanas valodas izlaidums

Publicēts vispārējas nozīmes programmēšanas valodas Rust 1.67 izlaidums, kas dibināts ar Mozilla projektu, bet tagad izstrādāts neatkarīgās bezpeļņas organizācijas Rust Foundation paspārnē. Valoda koncentrējas uz atmiņas drošību un nodrošina līdzekļus, lai sasniegtu augstu darba paralēlismu, vienlaikus izvairoties no atkritumu savācēja un izpildlaika izmantošanas (izpildlaiks tiek samazināts līdz standarta bibliotēkas pamata inicializēšanai un uzturēšanai).

Rust atmiņas apstrādes metodes pasargā izstrādātāju no kļūdām, manipulējot ar rādītājiem, un aizsargā pret problēmām, kas rodas zema līmeņa atmiņas apstrādes dēļ, piemēram, piekļūšana atmiņas apgabalam pēc tā atbrīvošanas, nulles rādītāju atsauču atcelšana, bufera pārtēriņi utt. Lai izplatītu bibliotēkas, nodrošinātu būvējumus un pārvaldītu atkarības, projekts izstrādā Cargo pakotņu pārvaldnieku. Crates.io repozitorijs tiek atbalstīts bibliotēku mitināšanai.

Atmiņas drošība tiek nodrošināta Rust kompilēšanas laikā, pārbaudot atsauces, sekojot līdzi objekta īpašumtiesībām, sekojot līdzi objektu kalpošanas laikam (tvērumam) un novērtējot atmiņas piekļuves pareizību koda izpildes laikā. Rūsa arī nodrošina aizsardzību pret veselu skaitļu pārpildīšanu, pieprasa obligātu mainīgo vērtību inicializāciju pirms lietošanas, labāk apstrādā kļūdas standarta bibliotēkā, pēc noklusējuma piemēro nemainīgu atsauču un mainīgo jēdzienu, piedāvā spēcīgu statisko rakstīšanu, lai samazinātu loģiskās kļūdas.

Galvenie jauninājumi:

  • Asinhronajām funkcijām ar Future::Output tagad ir iespējams norādīt "#[must_use]" anotācijas, kas ietver brīdinājumu, ja tiek ignorēta atgrieztā vērtība, kas palīdz identificēt kļūdas, ko izraisa pieņēmums, ka funkcija mainīs vērtības. nevis atgriezt jaunu vērtību. #[must_use] async fn bar() -> u32 {0} async fn caller() { bar().gaida; } brīdinājums: neizmantota nākotnes izvade, kuru atgriež `josla`, kas ir jāizmanto —> src/lib.rs:5:5 | 5 | bar().gaida; | ^^^^^^^^^^^ | = piezīme: `#[warn(unused_must_use)]` ir ieslēgts pēc noklusējuma
  • Atjaunināta FIFO rindu std::sync::mpsc (vairāku ražotāju viena patērētāja) ieviešana, kas ir pārslēgta uz crossbeam-channel moduļa izmantošanu, saglabājot iepriekšējo API. Jaunā ieviešana izceļas ar vairāku problēmu atrisināšanu, augstāku veiktspēju un vienkāršotu koda apkopi.
  • Jauna API daļa ir pārvietota uz stabilo kategoriju, tostarp ir stabilizētas pazīmju metodes un ieviešanas:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {integer}::ilog
    • {integer}::ilog2
    • {integer}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • Atribūts "const", kas nosaka iespēju to izmantot jebkurā kontekstā konstantu vietā, tiek izmantots funkcijās:
    • char::from_u32
    • char::from_digit
    • char::to_digit
    • kodols::char::from_u32
    • kodols::char::no_cipara
  • Trešais atbalsta līmenis ir ieviests Rust lietošanai Linux kodolā (linuxkernel), kā arī Sony PlayStation 1 (mipsel-sony-psx), PowerPC ar AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platformas qnx710, x86_64-pc-nto-qnx710). Trešais līmenis ietver pamata atbalstu, taču bez automatizētas testēšanas, oficiālu būvējumu publicēšanas un koda izveides pārbaudes.

Turklāt mēs varam atzīmēt, ka ARM ir publicējusi ielāpus, kas ļauj izmantot Rust valodu, lai izstrādātu draiverus un Linux kodola moduļus, kas samontēti sistēmām, kuru pamatā ir AArch64 arhitektūra.

Avots: opennet.ru

Pievieno komentāru