ipata 1.58 Siseto ede Tu

Itusilẹ ti ede siseto gbogbogbo-idi Rust 1.58, ti o da nipasẹ iṣẹ akanṣe Mozilla, ṣugbọn ni bayi ni idagbasoke labẹ awọn atilẹyin ti ominira ti kii ṣe èrè agbari Rust Foundation, ti ṣe atẹjade. Ede naa dojukọ aabo iranti, pese iṣakoso iranti aifọwọyi, ati pese awọn ọna lati ṣaṣeyọri isọdọkan iṣẹ-ṣiṣe giga 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.

Awọn imotuntun akọkọ:

  • Ni awọn bulọọki ọna kika laini, ni afikun si agbara ti o wa tẹlẹ lati rọpo awọn oniyipada ti a ṣe akojọ ni gbangba lẹhin laini kan nipasẹ nọmba ati orukọ, agbara lati paarọ awọn idamọ lainidii nipa fifi ikosile “{idamo}” si laini ti wa ni imuse. Fun apẹẹrẹ: // Awọn iṣelọpọ atilẹyin tẹlẹ: println!("Kaabo, {}!", get_person()); println!("Hello, {0}!", get_person()); println! ("Hello, {eniyan}!", eniyan = get_person()); // bayi o le pato jẹ ki eniyan = get_person (); println! ("Hello, {eniyan}!");

    Awọn oludamo le tun ti wa ni pato taara ni awọn aṣayan kika. jẹ ki (iwọn, konge) = get_format (); fun (orukọ, Dimegilio) ni get_scores () {println! ("{orukọ}: {score: width$.precision$}"); }

    Fidipo tuntun n ṣiṣẹ ni gbogbo awọn macros ti o ṣe atilẹyin asọye ọna kika okun, ayafi ti “ijaaya!” ni awọn ẹya 2015 ati 2018 ti ede Rust, ninu eyiti ijaaya!

  • Ihuwasi ti std :: ilana :: Ilana aṣẹ lori pẹpẹ Windows ti yipada nitori pe nigbati o ba n ṣiṣẹ awọn aṣẹ, fun awọn idi aabo, ko tun wa awọn faili ti o le ṣiṣẹ ni itọsọna lọwọlọwọ. Liana lọwọlọwọ ko yọkuro nitori pe o le ṣee lo lati ṣiṣẹ koodu irira ti awọn eto ba ṣiṣẹ ni awọn ilana ti a ko gbẹkẹle (CVE-2021-3013). Imọye wiwa ṣiṣe ṣiṣe tuntun jẹ wiwa awọn ilana Rust, itọsọna ohun elo, ilana eto Windows, ati awọn ilana ti a sọ pato ninu oniyipada ayika PATH.
  • Ile-ikawe boṣewa ti gbooro nọmba awọn iṣẹ ti o samisi “#[must_use]” lati fun ikilọ kan ti iye ipadabọ ko ba kọbikita, eyiti o ṣe iranlọwọ idanimọ awọn aṣiṣe ti o ṣẹlẹ nipasẹ ro pe iṣẹ kan yoo yi awọn iye pada dipo ki o pada iye tuntun.
  • 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:
    • Metadata :: is_symlink
    • Ona :: is_symlink
    • {odidi} :: saturating_div
    • Aṣayan :: unwrap_unwrap
    • Esi :: unwrap_unwrap_unchecked
    • Esi :: unwrap_err_unchecked
  • Ẹya “const”, eyiti o pinnu iṣeeṣe ti lilo ni eyikeyi ipo dipo awọn iduro, ni a lo ninu awọn iṣẹ:
    • Duration :: titun
    • Iye akoko :: checked_add
    • Iye akoko :: saturating_add
    • Duration :: check_sub
    • Iye akoko :: saturating_sub
    • Iye akoko :: checked_mul
    • Duration :: saturating_mul
    • Iye akoko :: check_div
  • Ti gba laaye yiyọkuro awọn itọka "* const T" ni awọn ipo “const”.
  • Ninu oluṣakoso package Cargo, aaye rust_version ti ṣafikun si metadata package, ati pe aṣayan “-message-format” ti ṣafikun si aṣẹ “fifi sori ẹrọ ẹru”.
  • Olupilẹṣẹ n ṣe atilẹyin fun ẹrọ aabo CFI (Iṣakoso Flow Integrity), eyiti o ṣafikun awọn sọwedowo ṣaaju ipe aiṣe-taara kọọkan lati rii diẹ ninu awọn iwa ihuwasi ti ko ṣe alaye ti o le ja si irufin aṣẹ ipaniyan deede (sisan iṣakoso) bi abajade ti lilo awọn iṣamulo ti o yipada awọn itọka ti o fipamọ sinu iranti lori awọn iṣẹ.
  • Olupilẹṣẹ ti ṣafikun atilẹyin fun awọn ẹya 5 ati 6 ti ọna kika lafiwe agbegbe LLVM, ti a lo lati ṣe iṣiro agbegbe koodu lakoko idanwo.
  • Ninu akopọ, awọn ibeere fun ẹya ti o kere ju ti LLVM ni a gbe soke si LLVM 12.
  • Ipele atilẹyin kẹta fun x86_64-unknown-ko si ọkan ti a ti ṣe imuse. 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ọ.

Ni afikun, a le ṣe akiyesi atẹjade nipasẹ Microsoft ti itusilẹ ti Rust fun awọn ile-ikawe Windows 0.30, eyiti o gba ọ laaye lati lo ede Rust lati ṣe agbekalẹ awọn ohun elo fun Windows OS. Eto naa pẹlu awọn idii apoti meji (windows ati windows-sys), nipasẹ eyiti o le wọle si Win API ni awọn eto ipata. Koodu fun atilẹyin API jẹ ipilẹṣẹ ni agbara lati metadata ti n ṣalaye API, eyiti o fun ọ laaye lati ṣe atilẹyin kii ṣe fun awọn ipe Win API ti o wa tẹlẹ, ṣugbọn fun awọn ipe ti yoo han ni ọjọ iwaju. Ẹya tuntun n ṣe afikun atilẹyin fun Syeed ibi-afẹde UWP (Universal Windows Platform) ati imuse awọn oriṣi Handle ati yokokoro.

orisun: opennet.ru

Fi ọrọìwòye kun