Publikimi i gjuhës programuese Rust 1.52

Është publikuar publikimi i gjuhës programuese të sistemit Rust 1.52, i themeluar nga projekti Mozilla, por tashmë i zhvilluar nën kujdesin e organizatës së pavarur jofitimprurëse Rust Foundation. Gjuha fokusohet në sigurinë e kujtesës, siguron menaxhimin automatik të kujtesës dhe siguron mjetet për të arritur paralelizëm të lartë të detyrave pa përdorur një grumbullues mbeturinash ose kohëzgjatjeje (koha e funksionimit reduktohet në inicializimin bazë dhe mirëmbajtjen e bibliotekës standarde).

Menaxhimi automatik i kujtesës i Rust eliminon gabimet gjatë manipulimit të treguesve dhe mbron nga problemet që lindin nga manipulimi i nivelit të ulët të memories, të tilla si qasja në një rajon memorie pasi të jetë liruar, mosreferencat e treguesit null, tejkalimet e buferit, etj. Për të shpërndarë bibliotekat, për të siguruar montimin dhe për të menaxhuar varësitë, projekti po zhvillon menaxherin e paketave Cargo. Depoja e crates.io mbështetet për pritjen e bibliotekave.

Risitë kryesore:

  • U hoq lidhja për rendin e ekzekutimit të komandave "kontrolli i ngarkesës" dhe "cargo clippy". Më parë, thirrja "cargo clippy" pas "cargo check" nuk e nisi mjetin clippy (linter) për shkak të mungesës së ndarjes së cache-ve për këto mënyra kontrolli. Tani ky problem është zgjidhur dhe rendi në të cilin thirren "cargo clippy" dhe "cargo check" nuk ka më rëndësi.
  • Një pjesë e re e API-së është transferuar në kategorinë e qëndrueshme, duke përfshirë metodat e mëposhtme janë stabilizuar:
    • Argumentet::as_str
    • karakter:: MAX
    • char::REPLACEMENT_SHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::nga_shifror
    • char::from_u32_unchecked
    • char::nga_u32
    • slice::partition_point
    • str::rsplit_once
    • str::split_once
  • Atributi "const", i cili përcakton mundësinë e përdorimit të tij në çdo kontekst në vend të konstanteve, përdoret në metodat:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_kase
    • char::to_ascii_vogla
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_vogla
    • u8::eq_ignore_ascii_case
  • U shtua kontrolli i litave unsafe_op_in_unsafe_fn për të përcaktuar nëse kodi i pasigurt i përdorur në funksione të pasigurta është i përshtatur nga blloqe të pasigurta.
  • Lejohet të hidhen tregues të ndryshueshëm në vargje në formën e treguesve për llojin e elementit të grupit. le mut x: [përdor; 2] = [0, 0]; le të p = &mut x si *mut usize; le të p = &mut x si *const usize;
  • Në clippy (linter) janë shtuar 9 çeqe të reja.
  • Menaxheri i paketave të ngarkesave tani mbështet fushën "manifest_path" në JSON për paketat. U shtua mbështetje për specifikimin e informacionit të licencës në formatin SPDX 3.11 në depon e crates.io.
  • Lejohet të specifikohen filtra të shumtë gjatë ekzekutimit të testeve, për shembull ekzekutimi i "testit të ngarkesës - foo bar" do të ekzekutojë të gjitha testet që përputhen me maskat "foo" dhe "bar".
  • Paketa e parazgjedhur e veglave LLVM është përditësuar në LLVM 12.
  • Niveli i tretë i mbështetjes është zbatuar për platformat s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl dhe powerpc-unknown-inux-musl. 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.

Burimi: opennet.ru

Shto një koment