Rust 1.34 forritunarmálsútgáfa

Kerfisforritunarmálið Rust 1.34, þróað af Mozilla verkefninu, hefur verið gefið út. Tungumálið einbeitir sér að minnisöryggi, veitir sjálfvirka minnisstjórnun og veitir leið til að ná mikilli samsvörun verkefna án þess að nota sorphirðu eða keyrslutíma.

Sjálfvirk minnisstjórnun Rust leysir þróunaraðilann við bendil meðhöndlunar og verndar gegn vandamálum sem stafa af minni meðhöndlun á lágu stigi, eins og eftir-frjáls minni aðgangur, núll bendilinn afvísun, biðminni framúrkeyrsla, og þess háttar. Til að dreifa bókasöfnum, tryggja samsetningu og stjórna ósjálfstæði er verkefnið að þróa Cargo pakkastjóra, sem gerir þér kleift að fá þau bókasöfn sem þarf fyrir forritið með einum smelli. Crates.io geymslan er studd til að hýsa bókasöfn.

Helstu nýjungar:

  • Cargo pakkastjórinn hefur bætt við verkfærum til að vinna með öðrum pakkaskrám sem geta verið samhliða crates.io opinberu skránni. Til dæmis geta forritarar sérforrita nú notað sína eigin einkaskrá, sem hægt er að nota við skráningu á ósjálfstæði í Cargo.toml, og notað útgáfulíkan svipað og crates.io fyrir vörur sínar, auk þess að vísa ósjálfstæði til beggja grindanna. io og í eigin skrásetningu.

    Til að bæta ytri skráningu við ~/.cargo/config
    nýr valmöguleiki „my-registry“ er veittur í „[skráningum]“ hlutanum, og „other-crate“ valkostur hefur verið bætt við til að minnast á ytri skráningu í ósjálfstæði í Cargo.toml í „[ósjálfstæði]“ hlutanum. Til að tengjast við viðbótarskrá skaltu einfaldlega setja auðkenningartáknið í ~/.cargo/credentials skrána og keyra skipunina
    "cargo login --registry=my-registry" og til að birta pakka -
    "cargo publish -registry=my-registry";

  • Bætti við fullum stuðningi við notkun "?" símafyrirtækisins. í doktorsprófum, sem gera þér kleift að nota dæmikóða úr skjölunum sem próf. Áður rekstraraðili
    "?" gæti aðeins verið notað til að meðhöndla villur meðan á prófun stendur þegar „fn main()“ aðgerðin er til staðar eða í „#[próf]“ aðgerðunum;

  • Í sérsniðnum eiginleikum sem eru skilgreindir með því að nota málsmeðferðarfjölva, er hægt að nota handahófskenndar sett af táknum ("#[attr($tákn)]", "#[attr[$tákn]] og #[attr{$tákn}]") . Áður var aðeins hægt að tilgreina þætti í tré/endurkvæmt form með því að nota strengjabókstafi, til dæmis „#[foo(bar, baz(quux, foo = „bar“))]“, en nú er hægt að nota upptalningar (' #[svið(0. .10)]') og smíði eins og „#[bundið(T: MyTrait)]“;
  • TryFrom og TryInto eiginleikarnir hafa verið stöðugir, sem gerir tegundabreytingum kleift með villumeðferð. Til dæmis nota aðferðir eins og from_be_bytes með heiltölutegundum fylki sem inntak, en gögnin koma oft í Slice gerð, og erfitt er að breyta milli fylkja og sneiða handvirkt. Með hjálp nýrra eiginleika er hægt að framkvæma tilgreinda aðgerð á flugi með því að hringja í .try_into(), til dæmis „let num = u32::from_be_bytes(slice.try_into()?)“. Fyrir umbreytingar sem heppnast alltaf (til dæmis frá gerð u8 til u32), hefur Infallible villutegund verið bætt við til að leyfa gagnsæja notkun á
    TryFrom fyrir allar núverandi útfærslur á "From";

  • Afturkallaði CommandExt::before_exec fallið, sem leyfði keyrslu á meðhöndlun á undan exec sem var keyrð í samhengi við undirferli sem gaffalið var eftir fork() kallið. Við slíkar aðstæður gætu sum tilföng foreldraferlisins, eins og skráarlýsingar og kortlögð minnissvæði, verið afrituð, sem gæti leitt til óskilgreindrar hegðunar og rangrar notkunar á bókasöfnum.
    Í stað before_exec er mælt með því að nota óörugga aðgerðina CommandExt::pre_exec.

  • Stöðugar formerktar og ómerktar atómar heiltölutegundir á bilinu 8 til 64 bita (til dæmis AtomicU8), sem og táknaðar tegundir NonZeroI[8|16|32|54|128].
  • Nýr hluti af API hefur verið færður í stöðugan flokk, þar á meðal Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub] ] og SystemTime aðferðir hafa verið stöðugar ::checked_[add|sub]. Iter::from_fn og iter::arftaki aðgerðir hafa verið stöðugar;
  • Fyrir allar heiltölugerðir eru checked_pow, saturating_pow, wrapping_pow og overflowing_pow aðferðirnar útfærðar;
  • Bætti við möguleikanum á að virkja hagræðingar á tengingarstigi með því að tilgreina „-C linker-plugin-lto“ smíðavalkostinn (rustc setur saman Rust kóða í LLVM bitakóða, sem gerir kleift að beita LTO hagræðingu).

Heimild: opennet.ru

Bæta við athugasemd