Rust 1.58 forritunarmálsútgáfa

Útgáfa hins almenna forritunarmáls Rust 1.58, stofnað af Mozilla verkefninu, en nú þróað undir merkjum óháðu sjálfseignarstofnunarinnar Rust Foundation, hefur verið gefin út. Tungumálið einbeitir sér að minnisöryggi, veitir sjálfvirka minnisstjórnun og veitir aðferðina til að ná mikilli samsvörun verkefna án þess að nota sorphirðu eða keyrslutíma (keyrslutími minnkar í grunnuppstillingu og viðhald á venjulegu bókasafni).

Sjálfvirk minnisstjórnun Rust útilokar villur þegar verið er að meðhöndla ábendingar og verndar gegn vandamálum sem stafa af minni meðhöndlun á lágu stigi, eins og aðgangur að minnissvæði eftir að það hefur verið losað, frávísanir á núll bendi, offramkeyrsla á biðminni osfrv. Til að dreifa bókasöfnum, tryggja samsetningu og stjórna ósjálfstæði er verkefnið að þróa farmpakkastjórann. Crates.io geymslan er studd til að hýsa bókasöfn.

Helstu nýjungar:

  • Í línusniðsblokkum, til viðbótar við áður tiltækan möguleika til að skipta út breytum sem eru skýrt skráðar á eftir línu með númeri og nafni, er möguleikinn á að skipta út handahófskenndum auðkennum með því að bæta orðatiltækinu „{auðkenni}“ við línuna. Til dæmis: // Fyrri studdar byggingar: println!("Halló, {}!", get_person()); println!("Halló, {0}!", get_person()); println!("Halló, {persóna}!", manneskja = get_person()); // nú geturðu tilgreint let person = get_person(); println!("Halló, {persóna}!");

    Einnig er hægt að tilgreina auðkenni beint í sniðvalkostum. láta (breidd, nákvæmni) = get_format(); fyrir (nafn, stig) í get_scores() { println!("{nafn}: {score:width$.precision$}"); }

    Nýja skiptingin virkar í öllum fjölvi sem styðja skilgreiningu strengjasniðs, að undanskildum „panic!“ fjölva. í 2015 og 2018 útgáfunum af Rust tungumálinu, þar sem panic!("{ident}") er meðhöndluð sem venjulegur strengur (í Rust 2021 virkar útskiptin).

  • Hegðun std::process:: Skipunarskipulagsins á Windows pallinum hefur verið breytt þannig að þegar skipanir eru keyrðar, af öryggisástæðum, leitar það ekki lengur að keyranlegum skrám í núverandi möppu. Núverandi mappa er útilokuð vegna þess að hægt er að nota hana til að keyra skaðlegan kóða ef forrit eru keyrð í ótraustum möppum (CVE-2021-3013). Nýja executable uppgötvunarrökfræðin felur í sér að leita í Rust möppunum, forritaskránni, Windows kerfisskránni og möppunum sem tilgreindar eru í PATH umhverfisbreytunni.
  • Staðlaða bókasafnið hefur stækkað fjölda aðgerða merkt "#[must_use]" til að gefa út viðvörun ef skilagildið er hunsað, sem hjálpar til við að bera kennsl á villur sem orsakast af því að gera ráð fyrir að fall breyti gildum frekar en að skila nýju gildi.
  • Nýr hluti af API hefur verið færður í flokkinn stöðugt, þar með talið aðferðir og útfærslur á eiginleikum hafa verið stöðugar:
    • Lýsigögn::is_symlink
    • Path::is_symlink
    • {heiltala}::saturating_div
    • Valkostur::unwrap_unchecked
    • Niðurstaða::unwrap_unchecked
    • Niðurstaða::unwrap_err_unchecked
  • "const" eigindin, sem ákvarðar möguleikann á að nota hann í hvaða samhengi sem er í stað fasta, er notaður í föllum:
    • Lengd::nýtt
    • Lengd::checked_add
    • Lengd::saturating_add
    • Lengd::checked_sub
    • Lengd::saturating_sub
    • Lengd::checked_mul
    • Lengd::saturating_mul
    • Lengd::checked_div
  • Leyfð frávísun á "*const T" ábendingum í "const" samhengi.
  • Í farmpakkastjóranum hefur rust_version reitnum verið bætt við lýsigögn pakkans og "--message-format" valkostinum hefur verið bætt við "cargo install" skipunina.
  • Þjálfarinn útfærir stuðning fyrir CFI (Control Flow Integrity) verndarkerfi, sem bætir við athugunum fyrir hvert óbeint símtal til að greina einhvers konar óskilgreinda hegðun sem gæti hugsanlega leitt til brots á venjulegri framkvæmdarskipun (stýringarflæði) vegna notkun á hetjudáðum sem breyta ábendingum sem geymdir eru í minni á aðgerðum.
  • Þýðandinn hefur bætt við stuðningi við útgáfur 5 og 6 af LLVM þekjusamanburðarsniði, notað til að meta umfang kóða meðan á prófun stendur.
  • Í þýðandanum eru kröfurnar um lágmarksútgáfu af LLVM hækkaðar í LLVM 12.
  • Þriðja stig stuðnings fyrir x86_64-unknown-none pallinum hefur verið innleitt. Þriðja stigið felur í sér grunnstuðning, en án sjálfvirkrar prófunar, útgáfu opinberra smíða eða athuga hvort hægt sé að smíða kóðann.

Að auki getum við tekið eftir útgáfu Microsoft á útgáfu Rust fyrir Windows 0.30 bókasöfn, sem gerir þér kleift að nota Rust tungumálið til að þróa forrit fyrir Windows OS. Settið inniheldur tvo kassapakka (windows og windows-sys), þar sem þú getur fengið aðgang að Win API í Rust forritum. Kóði fyrir API stuðning er myndaður á kraftmikinn hátt úr lýsigögnum sem lýsa API, sem gerir þér kleift að innleiða stuðning ekki aðeins fyrir núverandi Win API símtöl, heldur fyrir símtöl sem munu birtast í framtíðinni. Nýja útgáfan bætir við stuðningi við UWP (Universal Windows Platform) markvettvanginn og útfærir Handle og Debug tegundirnar.

Heimild: opennet.ru

Bæta við athugasemd