Rust 1.52 programmēšanas valodas izlaidums

Iznācis Mozilla projekta dibinātās, bet tagad neatkarīgās bezpeļņas organizācijas Rust Foundation paspārnē izstrādātās sistēmas programmēšanas valodas Rust 1.52 izlaidums. Valoda koncentrējas uz atmiņas drošību, nodrošina automātisku atmiņas pārvaldību un nodrošina līdzekļus augsta uzdevumu paralēlisma sasniegšanai, neizmantojot atkritumu savācēju vai izpildlaiku (izpildlaiks tiek samazināts līdz standarta bibliotēkas pamata inicializēšanai un uzturēšanai).

Rust automātiskā atmiņas pārvaldība novērš kļūdas, manipulējot ar rādītājiem, un aizsargā pret problēmām, kas rodas no zema līmeņa atmiņas manipulācijām, piemēram, piekļuves atmiņas apgabalam pēc tā atbrīvošanas, nulles rādītāju novirzēm, bufera pārtēriņiem utt. Bibliotēku izplatīšanai, komplektēšanas nodrošināšanai un atkarību pārvaldībai projektā tiek izstrādāts Cargo pakotņu pārvaldnieks. Crates.io repozitorijs tiek atbalstīts bibliotēku mitināšanai.

Galvenie jauninājumi:

  • Noņemta saistība ar komandu “kravas pārbaude” un “kravas klips” izpildes secību. Iepriekš, izsaucot vārdu "cargo clippy" pēc "kravas pārbaudes", utilīta clippy (linter) netika palaists, jo šiem pārbaudes režīmiem trūka kešatmiņas atdalīšanas. Tagad šī problēma ir atrisināta, un secībai, kādā tiek izsauktas “kravas klips” un “kravas pārbaude”, vairs nav nozīmes.
  • Jauna API daļa ir pārvietota uz stabilo kategoriju, tostarp ir stabilizētas šādas metodes:
    • Argumenti::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • char::from_u32
    • šķēle::partition_point
    • str::rsplit_once
    • str::vienreiz sadalīts
  • Metodēs tiek izmantots atribūts “const”, kas nosaka iespēju to izmantot jebkurā kontekstā konstantu vietā:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_lielais burts
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::uz_ascii_lielajiem burtiem
    • u8::to_ascii_mazajiem burtiem
    • u8::eq_ignore_ascii_case
  • Pievienota savākšanas pārbaude unsafe_op_in_unsafe_fn, lai noteiktu, vai nedrošās funkcijās izmantotais nedrošs kods ir ierāmēts ar nedrošiem blokiem.
  • Maināmās norādes uz masīviem ir atļauts nodot norādes veidā uz masīva elementa veidu. let mut x: [izmantot; 2] = [0, 0]; lai p = &mut x kā *mut usize; lai p = &mut x kā *const usize;
  • Clippy (linter) ir pievienoti 9 jauni čeki.
  • Kravas pakotņu pārvaldnieks tagad atbalsta pakotņu lauku “manifest_path” JSON. Pievienots atbalsts licences informācijas norādīšanai SPDX 3.11 formātā crates.io repozitorijā.
  • Veicot testus, ir atļauts norādīt vairākus filtrus, piemēram, palaižot "kravas tests - foo bar", tiks izpildīti visi testi, kas atbilst maskām "foo" un "bar".
  • Noklusējuma LLVM rīkkopa ir atjaunināta uz LLVM 12.
  • Trešais atbalsta līmenis ir ieviests platformām s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl un powerpc-unknown-openbsd. 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