Itusilẹ ede siseto Rust 2021 (1.56)

Itusilẹ ti ede siseto eto Rust 1.56, ti o da nipasẹ iṣẹ akanṣe Mozilla, ṣugbọn ni idagbasoke ni bayi labẹ awọn itusilẹ ti ominira ti kii ṣe èrè agbari Rust Foundation, ni a ti tẹjade. Ni afikun si nọmba ẹya deede, itusilẹ tun jẹ apẹrẹ Rust 2021 ati samisi imuduro ti awọn ayipada ti a dabaa ni ọdun mẹta sẹhin. Rust 2021 yoo tun jẹ ipilẹ fun jijẹ iṣẹ ṣiṣe ni ọdun mẹta to nbọ, iru si bii itusilẹ ti Rust 2018 ṣe di ipilẹ fun idagbasoke ede ni ọdun mẹta sẹhin.

Lati ṣetọju ibamu, awọn olupilẹṣẹ le lo awọn aami "2015", "2018" ati "2021" ninu awọn eto wọn, gbigba awọn eto laaye lati sopọ mọ awọn ege ipinlẹ ede ti o baamu si awọn ẹda ti o yan ti Rust. A ṣe afihan awọn ẹda lati yapa awọn iyipada ti ko ni ibamu ati pe a tunto ni metadata ti awọn idii ẹru nipasẹ aaye “àtúnse” ni apakan “[package]”. Fun apẹẹrẹ, àtúnse “2018” pẹlu iṣẹ ṣiṣe iduroṣinṣin bi ti opin 2018 ati pe o tun bo gbogbo awọn iyipada siwaju ti ko ba ibamu. Atilẹjade 2021 ni afikun pẹlu awọn ẹya interoperability-fifọ ti a dabaa ninu itusilẹ 1.56 lọwọlọwọ ati fọwọsi fun imuse ọjọ iwaju. Ni afikun si ede funrararẹ, awọn olutọsọna tun ṣe akiyesi ipo ti awọn irinṣẹ ati awọn iwe.

Awọn aiṣedeede nla ti o gbasilẹ ni Rust 2021:

  • Yaworan lọtọ ni Awọn pipade - Awọn pipade le ni bayi gba awọn orukọ aaye kọọkan dipo gbogbo idamo. Fun apẹẹrẹ, "|| ax + 1" yoo gba "ake" nikan dipo "a".
  • Iwa IntoIterator fun awọn ohun elo: array.into_iter () ngbanilaaye lati ṣe atunto awọn eroja orun nipasẹ awọn iye, dipo awọn itọkasi.
  • Ṣiṣẹda awọn ọrọ “|” ti yipada ni macro_rules (Boolean OR) ni awọn ilana - Apejuwe ": pat" ni awọn ere-kere ni bayi bọwọ fun "A | B".
  • Oluṣakoso package ẹru pẹlu nipasẹ aiyipada ẹya keji ti ipinnu ẹya, atilẹyin eyiti o han ni Rust 1.51.
  • TryFrom, TryInto ati FromIterator ni a ti ṣafikun si module ikawe boṣewa iṣaaju.
  • Awọn ijaaya! (..) ati assert! (expr, ..) macros bayi nigbagbogbo lo format_args! (..) lati ọna kika awọn gbolohun ọrọ, iru si println! ().
  • Awọn ikosile idamo#, idanimọ»..." ati idamo'...' wa ni ipamọ ninu sintasi ede.
  • Ti gbe bare_trait_objects ati ellipsis_inclusive_range_patterns ikilo si awọn aṣiṣe.

Tuntun ni ipata 1.56:

  • Ni Cargo.toml, ni apakan “[package]”, aaye ti ikede ipata ti ṣafikun, nipasẹ eyiti o le pinnu ẹya atilẹyin ti o kere ju ti Rust fun package crate. Ti ẹya ti isiyi ko ba baramu paramita pàtó kan, Ẹru yoo da iṣẹ duro pẹlu ifiranṣẹ aṣiṣe.
  • Nigbati ilana ibaamu ni lilo awọn ọrọ “abuda @ Àpẹẹrẹ”, atilẹyin ti pese fun sisọ awọn afikun awọn abuda (fun apẹẹrẹ, “jẹ ki matrix @ Matrix {row_len, .. } = get_matrix();").
  • Apa tuntun ti API ni a ti gbe si ẹka ti iduroṣinṣin, pẹlu awọn ọna ati awọn imuse ti awọn abuda ti jẹ imuduro:
    • std :: os :: unix :: fs :: chroot
    • UnsafeCell :: raw_get
    • BufWriter :: sinu_awọn ẹya ara
    • mojuto:: ijaaya:: {UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec :: isunki_si
    • Okun :: isunki_si
    • OsString :: isunki_to
    • PathBuf :: isunki_to
    • BinaryHeap :: isunki_to
    • VecDeque :: isunki_to
    • HashMap :: isunki_si
    • HashSet :: isunki_si
  • Ẹya “const”, eyiti o pinnu iṣeeṣe ti lilo ni eyikeyi ipo dipo awọn iduro, ni a lo ninu awọn iṣẹ
    • std :: mem :: transmute
    • [T] :: akọkọ
    • [T] :: pipin_akọkọ
    • [T] :: kẹhin
    • [T] :: pipin_kẹhin
  • A ti yipada alakojo lati lo ẹya LLVM 13.
  • Ipele atilẹyin keji ti ni imuse fun ipilẹ aarch64-apple-ios-sim ati ipele kẹta fun powerpc-unknown-freebsd ati awọn iru ẹrọ riscv32imc-esp-espidf. Ipele kẹta jẹ atilẹyin ipilẹ, ṣugbọn laisi idanwo adaṣe, titẹjade awọn ile-iṣẹ osise, tabi ṣayẹwo boya koodu naa le kọ.

Ranti pe Rust wa ni idojukọ lori aabo iranti, pese iṣakoso iranti aifọwọyi, ati pese ọna lati ṣaṣeyọri isọdọmọ giga ni ipaniyan iṣẹ laisi lilo agbasọ idoti tabi akoko asiko (akoko asiko ti dinku si ipilẹṣẹ ipilẹ ati itọju ile-ikawe boṣewa).

Iṣakoso iranti aifọwọyi ti Rust yọkuro awọn aṣiṣe nigbati o ba n ṣakoso awọn itọka ati aabo lodi si awọn iṣoro ti o dide lati ifọwọyi iranti ipele kekere, gẹgẹ bi iraye si agbegbe iranti lẹhin ti o ti ni ominira, awọn ifọkasi ijuboluwole asan, awọn agbekọja buffer, ati bẹbẹ lọ. Lati kaakiri awọn ile-ikawe, rii daju apejọ ati ṣakoso awọn igbẹkẹle, iṣẹ akanṣe n dagbasoke oluṣakoso package Cargo. Ibi ipamọ crates.io jẹ atilẹyin fun awọn ile-ikawe alejo gbigba.

orisun: opennet.ru

Fi ọrọìwòye kun