Publikimi i gjuhës programuese Rust 1.44

botuar lëshimi i gjuhës programuese të sistemit Ndryshku 1.44, e themeluar nga projekti Mozilla. Gjuha fokusohet në sigurinë e kujtesës, siguron menaxhimin automatik të kujtesës dhe ofron mjete për arritjen e paralelizmit të lartë të detyrave pa përdorur një grumbullues mbeturinash dhe Runtime.

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. Një menaxher paketash po zhvillohet për të shpërndarë bibliotekat, për të siguruar montimin dhe për të menaxhuar varësitë nga projekti. ngarkesë, duke ju lejuar të merrni bibliotekat e nevojshme për programin me një klik. Një depo mbështetet për të pritur bibliotekat arka.io.

Në tekstin e njoftimit të versionit të ri, zhvilluesit e Rust u përfshinë në politikë dhe refuzuan të publikonin një përmbledhje të plotë të ndryshimeve në Rust 1.44 si shenjë solidariteti me protestuesit kundër dhunës policore, duke treguar se kjo çështje është më e rëndësishme sesa shkëmbimi i njohurive teknike. bazë risitë:

  • Menaxheri i paketës së ngarkesave integron komandën "pema e ngarkesave", e cila shfaq një grafik varësie të ngjashme me pemën. Shtohet gjithashtu opsioni "—duplicates" ("pema e ngarkesave -d"), i cili ju lejon të vlerësoni varësitë në versione të ndryshme të së njëjtës paketë.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── amoniak v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── log v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── log v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [ndërtoj-varësi] │ │ │ └── version_check v0.1.5
    ...

  • Për aplikacionet që nuk lidhen me një std ("#![no_std]"), mbështetja për teknikat e programimit asinkron zbatohet bazuar në funksionin "async", bllokun async move { ... } dhe operatorin ".wait", i cili thjeshtoni shkrimin e rrjedhës kryesore të komandave të mbajtësve jo-bllokues.
  • Mbështetja për një skemë të përkufizimit të hierarkisë së modulit të zgjeruar është shtuar në analizues. Për shembull, konstrukti i mëposhtëm nuk do të prodhojë një gabim, pavarësisht mungesës aktuale të modulit "foo/bar/baz.rs" (konstrukti është ende semantikisht i pavlefshëm dhe mund të shkaktojë një gabim, por ndryshimet mund të shihen dhe analizohen në niveli i kompilimit makro dhe i kushtëzuar):

    #[cfg(FALSE)] mod foo {
    shiriti i modalitetit {
    mod baz;
    }
    }

  • Përpiluesi rustc ka shtuar aftësinë për të përdorur flamurin "-C codegen-units" në modalitetin incremental. Zbatimi i catch_unwind është ripunuar në mënyrë që të mos ketë ndikim në performancë nëse procesi i shthurjes çaktivizohet dhe nuk bëhen përjashtime.
  • Mbështetja e nivelit 64 është ofruar për platformat aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos dhe x64_XNUMX-apple-tvos. Niveli i tretë përfshin mbështetjen bazë, por pa testime dhe publikime të automatizuara të ndërtimeve zyrtare.
  • Një pjesë e re e API-ve është transferuar në kategorinë e qëndrueshme, duke përfshirë të stabilizuar
    PathBuf::me_kapacitet,
    PathBuf:: Kapaciteti,
    PathBuf:: qartë,
    PathBuf::rezervë,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_uncheked,
    Layout::align_to,
    Layout::pad_to_align,
    Layout::array dhe
    Paraqitja::zgjero.

  • Funksionet e zgjeruara të bibliotekës standarde:
    • U shtua një variant i veçantë "vec![]" që pasqyrohet drejtpërdrejt në Vec::new(), duke lejuar që "vec![]" të përdoret në kontekst në vend të konstanteve.
    • Një zbatim (impl) i tiparit është shtuar për të konvertuar::I pagabueshëm hashish.
    • OsString zbaton tregues inteligjentë DerefMut и IndexMut, duke kthyer "&mut OsStr".
    • Mbështetje e shtuar për Unicode 13.
    • Zbatuar në String Nga<&mut str>.
    • IoSlice zbaton tiparin Copy.
    • Vec zbatuar Nga<[T; N]>.
    • proc_macro::LexError zbaton fmt::Display dhe Error.
  • Atributi “const”, i cili përcakton nëse mund të përdoret në çdo kontekst në vend të konstanteve, përdoret në metodat nga_le_bytes, në_le_bytes, nga_be_bytes, në_be_bytes, nga_ne_bytes dhe në_ne_bytes për të gjitha llojet e numrave të plotë.
  • U shtua mbështetje për gjenerimin e bibliotekave statike në formatin ".a" në vend të ".lib" për platformat GNU në Windows.
  • Kërkesat minimale për LLVM janë ngritur në versionin 8 të LLVM.

Burimi: opennet.ru

Shto një koment