Derxistina zimanê bernamekirinê Rust 2021 (1.56)

Serbestberdana zimanê bernamesaziya pergalê Rust 1.56, ku ji hêla projeya Mozilla ve hatî damezrandin, lê naha di bin banê rêxistina ne-qezenc a serbixwe Rust Foundation de hatî pêşve xistin, hate weşandin. Digel jimareya guhertoya birêkûpêk, berdan di heman demê de Rust 2021 jî tê destnîşan kirin û aramkirina guhertinên ku di sê salên borî de hatine pêşniyar kirin nîşan dide. Rust 2021 di heman demê de dê di sê salên pêş de wekî bingehek ji bo zêdekirina fonksiyonê bixebite, mîna ku çawa serbestberdana Rust 2018 bû bingehek ji bo pêşkeftina ziman di sê salên borî de.

Ji bo domandina lihevhatinê, pêşdebir dikarin di bernameyên xwe de etîketên "2015", "2018" û "2021" bikar bînin, ku dihêlin ku bername bi perçeyên dewleta ziman ên ku bi çapên bijartî yên Rust re têkildar in ve werin girêdan. Weşan ji bo veqetandina guheztinên lihevnehatî hatine destnîşan kirin û di metadata pakêtên bargiran de bi qada "çap" di beşa "[pakêt]" de têne mîheng kirin. Mînakî, çapa "2018" fonksiyona ku ji dawiya sala 2018-an ve hatî stabîlkirin vedihewîne û her weha hemî guhertinên din ên ku lihevhatinê naşkînin jî vedigire. Di çapa 2021-an de taybetmendiyên têkbirina hevberdanê yên ku di berdana 1.56-a heyî de hatine pêşniyar kirin û ji bo pêkanîna pêşerojê hatine pejirandin vedihewîne. Ji bilî ziman bi xwe, edîtor rewşa amûr û belgeyan jî dihesibîne.

Nakokiyên mezin ên ku di Rust 2021 de hatine tomar kirin:

  • Di Girtinan de Girtina Veqetandî - Girtî naha dikarin navên zeviyên kesane li şûna tevahiya nasnameyê bigirin. Mînakî, "|| ax + 1" dê li şûna "a" tenê "ax" bigire.
  • Taybetmendiya IntoIterator ji bo rêzikan: array.into_iter() destûrê dide te ku hûn li ser hêmanên rêzê li gorî nirxan dubare bikin, ne bi referansê.
  • Pêvajoya vegotinên "|" di makro_qanûnan de hate guherandin (OR Boolean) di şablonan de - Diyarkera ":pat" ya di maçan de nuha "A | B".
  • Rêvebirê pakêta kargoyê ji hêla xwerû ve guhertoya duyemîn a çareserkerê taybetmendiyê vedihewîne, ku piştgirî di Rust 1.51 de xuya bû.
  • Taybetmendiyên TryFrom, TryInto û FromIterator li modula pirtûkxaneya standard a pêşgotinê hatine zêdekirin.
  • Panîk!(..) û îdia dikin!(expr, ..) makro niha her tim format_args bikar tînin!(..) ji bo formatkirina rêzan, mîna println!().
  • Biwêjên ident#, ident»... û ident'...' di hevoksaziya ziman de hatine parastin.
  • Bare_trait_objects û hişyariyên ellipsis_inclusive_range_patterns ber bi xeletiyan ve birin.

Di Rust 1.56 de nû:

  • Di Cargo.toml de, di beşa "[pakêtê]" de, qada guhertoya rust-ê hatî zêdekirin, bi navgîniya wê hûn dikarin guhertoya herî kêm a piştgirîkirî ya Rust ji bo pakêta kulikê diyar bikin. Ger guhertoya heyî bi pîvana diyarkirî re hev nagire, Cargo dê bi peyamek xeletiyê re bixebite.
  • Dema ku nimûne bi karanîna biwêjên "binding @ pattern" lihevhatin, piştgirî ji bo diyarkirina girêdanên zêde tê peyda kirin (mînak, "bila matrix @ Matrix { row_len, .. } = get_matrix();").
  • Parçeyek nû ya API-yê hate veguheztin kategoriya îstîqrar, di nav de rêbaz û pêkanînên taybetmendiyan hatine stabîlkirin:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter:: nav_parçeyan
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::biçûk_kirin
    • String::biçûk_kirin
    • OsString::biçûk_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::biçûk_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • Taybetmendiya "const", ku îmkana karanîna di her çarçoveyê de li şûna domdar diyar dike, di fonksiyonan de tê bikar anîn
    • std::mem::transmute
    • [T]:: yekem
    • [T]::split_first
    • [T]:: dawî
    • [T]::split_last
  • Berhevkar hate guheztin ku LLVM guhertoya 13 bikar bîne.
  • Asta duyemîn a piştgiriyê ji bo platforma aarch64-apple-ios-sim û astek sêyemîn jî ji bo platformên powerpc-nenas-freebsd û riscv32imc-esp-espidf hatiye bicîh kirin. Asta sêyemîn piştgirîya bingehîn digire, lê bêyî ceribandina otomatîk, weşandina avahiyên fermî, an kontrolkirina ka kod dikare were çêkirin.

Bînin bîra xwe ku Rust balê dikişîne ser ewlehiya bîranînê, rêveberiya bîranînê ya otomatîk peyda dike, û amûrek peyda dike ku meriv di cîbicîkirina kar de paralelîzma bilind bi dest bixe bêyî ku berhevkarek çopê an dema xebitandinê bikar bîne (dema xebitandinê ji destpêkirina bingehîn û domandina pirtûkxaneya standard re kêm dibe).

Rêvebiriya bîranîna otomatîkî ya Rust di dema manîpulekirina nîşankeran de xeletiyan ji holê radike û li hember pirsgirêkên ku ji manîpulasyona bîranînê ya nizm derdikevin diparêze, wek mînak gihîştina herêmek bîranînê piştî ku ew azad bû, veqetandinên nîşangirên betal, zêdekirina tampon, hwd. Ji bo belavkirina pirtûkxaneyan, misogerkirina civîn û birêvebirina pêwendiyan, proje rêveberê pakêtê Cargo pêşve dike. Depoya crates.io ji bo pirtûkxaneyên mêvandar têne piştgirî kirin.

Source: opennet.ru

Add a comment