Rust 1.53 gefin út. Google mun fjármagna að bæta Rust stuðningi við Linux kjarnann

Útgáfa kerfisforritunarmálsins Rust 1.53, 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:

  • Fyrir fylki hefur IntoIterator eiginleikinn verið útfærður, sem gerir þér kleift að skipuleggja endurtekningu fylkisþátta eftir gildum: fyrir i í [1, 2, 3] { .. }

    Það er líka hægt að senda fylki í aðferðir sem samþykkja endurtekningar, til dæmis: let set = BTreeSet::from_iter([1, 2, 3]); fyrir (a, b) í some_iterator.chain([1]).zip([1, 2, 3]) { .. }

    Áður fyrr var IntoIterator eingöngu útfært fyrir fylkistilvísanir, þ.e. til að endurtaka yfir gildi þurfti að nota tilvísanir ("&[1, 2, 3]") eða "[1, 2, 3].iter()". Innleiðing IntoIterator fyrir fylki var hindruð vegna samhæfnisvandamála af völdum fyrri þýðandabreytingar úr array.into_iter() í (&array).into_iter(). Þessi vandamál voru leyst með lausn - þýðandinn mun halda áfram að breyta array.into_iter() í (&array).into_iter() eins og engin útfærsla væri á IntoIterator eiginleikum, heldur aðeins þegar kallað er á aðferðina með því að nota ".into_iter() )" setningafræði og án þess að snerta símtölin á formi "í [1, 2, 3]", "iter.zip([1, 2, 3])", "IntoIterator::into_iter([1, 2, 3] )".

  • Það er hægt að tilgreina orðatiltæki "|" (rökrétt EÐA aðgerð) í hvaða hluta sniðmátsins sem er, til dæmis í stað „Sum(1) | Sum(2)" þú getur nú skrifað "Some(1 | 2)": match result { Ok(Some(1 | 2)) => { .. } Err(MyError { kind: FileNotFound | PermissionDenied, .. }) = > { .. } _ => { .. } }
  • Notkun á stöfum sem ekki eru ASCII í auðkennum er leyfð, þar á meðal hvers kyns tákn sem eru skilgreind í Unicode UAX 31 forskriftinni, en að undanskildum emoji stöfum. Ef þú notar aðra en svipaða stafi mun þýðandinn gefa út viðvörun. const BLÅHAJ: &str = "🦈"; struct 人 { 名字: Strengur, } láttu α = 1; letsos = 2; viðvörun: auðkennispar talið ruglingslegt á milli 's' og 's'
  • Nýr hluti API hefur verið fluttur í stöðugan flokk, þar á meðal eftirfarandi stöðugleika:
    • fylki::frá_ref
    • fylki::frá_mut
    • AtomicBool::fetch_update
    • AtomicPtr::fetch_update
    • BTreeSet::halda
    • BTreeMap::halda
    • BufReader::seek_relative
    • cmp::min_by
    • cmp::min_by_key
    • cmp::max_by
    • cmp::max_by_key
    • DebugStruct::finish_non_tæmandi
    • Lengd::NÚLL
    • Lengd::MAX
    • Lengd::er_núll
    • Lengd::saturating_add
    • Lengd::saturating_sub
    • Lengd::saturating_mul
    • f32::er_subnormal
    • f64::er_subnormal
    • IntoIterator fyrir fylki
    • {heiltala}::BITS
    • io::Villa::Óstudd
    • NonZero*:: leiðandi_núll
    • NonZero*::trailing_zeros
    • Valkostur::setja inn
    • Pöntun::is_eq
    • Pöntun::is_ne
    • Pantanir::is_lt
    • Pantanir::is_gt
    • Pöntun::is_le
    • Pöntun::is_ge
    • OsStr::make_ascii_lowercase
    • OsStr::make_ascii_hástafir
    • OsStr::to_ascii_lágstafir
    • OsStr::to_ascii_hástafir
    • OsStr::is_ascii
    • OsStr::eq_ignore_ascii_case
    • Peekable::peek_mut
    • Rc::increment_strong_count
    • Rc::decrement_strong_count
    • sneið::IterMut::sem_sneið
    • AsRef<[T]> fyrir sneið::IterMut
    • impl SliceIndex fyrir (Bound , Innbundið )
    • Vec::lengja_frá_innan
  • Þriðja stig stuðnings fyrir wasm64-óþekkt óþekkt vettvang 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.
  • Cargo pakkastjóri hefur verið færður til að nota nafnið „aðal“ fyrir aðalútibú Git geymslunnar (HEAD) sjálfgefið. Ósjálfstæði sem hýst er í geymslum sem nota heitið main í stað meistara krefjast ekki lengur uppsetningar á branch = "main".
  • Í þýðandanum eru kröfurnar um lágmarksútgáfu af LLVM hækkaðar í LLVM 10.

Að auki getum við tekið eftir því að veitt var fjármagn til að þróa samþættingu inn í Linux kjarna verkfæra til að þróa íhluti á Rust tungumálinu. Verkið verður unnið innan ramma Prossimo verkefnisins á vegum ISRG samtakanna (Internet Security Research Group), sem er stofnandi Let's Encrypt verkefnisins og stuðlar að HTTPS og þróun tækni til að auka öryggi Internet. Fjármagnið verður veitt af Google, sem mun greiða fyrir vinnu Miguel Ojeda, höfund Rust-for-Linux verkefnisins. Áður hafa ISRG og Google þegar fjármagnað stofnun annars HTTP-bakendans fyrir krulluforritið og þróun nýrrar TLS-einingu fyrir Apache http-þjóninn.

Samkvæmt Microsoft og Google eru um 70% veikleika af völdum óöruggrar minnismeðferðar. Gert er ráð fyrir að notkun Rust tungumálsins til að þróa kjarnahluti eins og tækjarekla muni draga úr hættu á veikleikum af völdum óöruggrar minnismeðferðar og útrýma villum eins og aðgangi að minnissvæði eftir að það hefur verið losað og farið yfir biðminni.

Minnisörugg meðhöndlun er veitt í Rust á samantektartíma með tilvísunarathugun, með því að halda utan um eignarhald og endingartíma hluta (umfang), sem og með mati á réttmæti minnisaðgangs við keyrslu kóða. Ryð veitir einnig vernd gegn heiltöluflæði, krefst skyldubundinnar frumstillingar breytugilda fyrir notkun, meðhöndlar villur betur í stöðluðu bókasafni, beitir hugmyndinni um óbreytanlegar tilvísanir og breytur sjálfgefið, býður upp á sterka truflanir innsláttar til að lágmarka rökvillur.

Heimild: opennet.ru

Bæta við athugasemd