Rust 1.62 programmēšanas valodas izlaidums

Publicēts vispārējas nozīmes programmēšanas valodas Rust 1.62 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:

  • “Cargo” pakotņu pārvaldnieks piedāvā komandu “add”, kas ļauj pievienot jaunas atkarības Cargo.toml manifestam vai mainīt esošās atkarības no komandrindas. Komanda arī ļauj norādīt atsevišķas funkcijas un versijas, piemēram: cargo add serde —features derive cargo add nom@5
  • Pievienota iespēja izmantot “#[derive(Default)]” ar enums, kurā noklusējuma opcija ir definēta, izmantojot atribūtu “#[noklusējums]”. #[atvasināt(noklusējuma)] enum Varbūt { #[noklusējums] Nekas, kaut kas (T), }
  • Linux platformā tiek izmantota kompaktāka un ātrāka Mutex sinhronizācijas mehānisma ieviešana, kuras pamatā ir Linux kodola nodrošināto futexes izmantošana. Atšķirībā no iepriekš izmantotās implementācijas, kas balstīta uz pthreads bibliotēku, jaunajā versijā Mutex stāvokļa saglabāšanai tiek izmantoti tikai 5 baiti, nevis 40. Līdzīgi Condvar un RwLock bloķēšanas mehānismi ir pārnesti uz futex.
  • Ir ieviests otrs atbalsta līmenis x86_64-unknown-none mērķa platformai, kas paredzēts, lai ģenerētu izpildāmos failus, kas var darboties bez operētājsistēmas. Piemēram, norādīto mērķa platformu var izmantot, rakstot kodola komponentus. Otrais atbalsta līmenis ietver montāžas garantiju.
  • Trešais atbalsta līmenis ir ieviests platformām aarch64-pc-windows-gnullvm un x86_64-pc-windows-gnullvm. Trešais līmenis ietver pamata atbalstu, taču bez automatizētas testēšanas, oficiālu būvējumu publicēšanas vai pārbaudes, vai kodu var izveidot.
  • Jauna API daļa ir pārvietota uz stabilo kategoriju, tostarp ir stabilizētas pazīmju metodes un ieviešanas:
    • bool::then_some
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::lines
    • windows::CommandExt::raw_arg
    • impl AssertUnwindSafe noklusējuma vērtība
    • No > Rc
    • No > lokam <[u8]>
    • FusedIterator priekš EncodeWide

    Avots: opennet.ru

Pievieno komentāru