Rust 1.68 programmēšanas valodas izlaidums

Publicēts vispārējas nozīmes programmēšanas valodas Rust 1.68 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 un crates.io repozitorijs ir stabilizējuši Sparse protokola atbalstu, kas definē jaunu veidu, kā strādāt ar indeksu, kas atspoguļo visu repozitorijā esošo pakotņu pieejamās versijas. Jaunais protokols ļauj ievērojami palielināt darba ātrumu ar crates.io un atrisināt mērogošanas problēmas, palielinoties pakotņu skaitam repozitorijā.

    Lai samazinātu aizkavēšanos, ko izraisa pilna indeksa lejupielāde, Sparse tā vietā, lai piekļūtu indeksam, izmantojot Git, ietver tiešu lejupielādi, izmantojot HTTPS, tikai nepieciešamos indeksa datus, kas aptver konkrēta projekta atkarības. Indeksa datu nodrošināšanai tiek izmantots jauns pakalpojums index.crates.io. Pēc noklusējuma jauno protokolu plānots lietot Rust 1.70 zarā, un pirms tam, lai to iespējotu, var iestatīt vides mainīgo "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" vai pievienot parametru 'protocol =' "[registries. crates-io]" faila .cargo/config.toml sadaļa 'sparse'.

  • Pievienots makro “pin!”, kas ļauj izveidot Pin<&mut T> struktūru no izteiksmes “T” ar tās stāvokļa lokālu piespraušanu (atšķirībā no Box::pin, tas nepiešķir atmiņu kaudzītei, bet saistās. kaudzes līmenī).
  • Ir ierosināts noklusējuma atmiņas piešķiršanas kļūdu apstrādātājs, ko izmanto, izmantojot standarta piešķiršanas pakotni. Lietojumprogrammas, kas iespējo tikai alloc (bez std), tagad izsauks “panic!” apdarinātāju, ja atmiņas piešķiršana neizdodas, ko pēc izvēles var pārtvert, izmantojot “#[panic_handler]”. Programmas, kas izmanto std bibliotēku, turpinās drukāt kļūdu informāciju uz stderr un avarēs.
  • Jauna API daļa ir pārvietota uz stabilo kategoriju, tostarp ir stabilizētas pazīmju metodes un ieviešanas:
    • {core,std}::pin::pin!
    • impl No priekš {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut PathBuf
  • Atribūts “const”, kas nosaka iespēju to izmantot jebkurā kontekstā konstantu vietā, tiek izmantots funkcijā VecDeque::new.
  • Lai strādātu Android platformā, tagad ir nepieciešams vismaz NDK r25 (API 19), t.i. Minimālā atbalstītā Android versija ir palielināta līdz 4.4 (KitKat).
  • Trešais atbalsta līmenis ir ieviests Sony PlayStation Vita platformai (armv7-sony-vita-newlibeabihf). 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.

Avots: opennet.ru

Pievieno komentāru