Rust 1.39 forritunarmálsútgáfa

birt útgáfu forritunarmáls kerfisins Ryð 1.39, stofnað af Mozilla verkefninu. Tungumálið leggur áherslu á 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. Verið er að þróa pakkastjóra til að dreifa bókasöfnum, tryggja samsetningu og stjórna ósjálfstæði verkefnisins. Hleðsla, sem gerir þér kleift að fá þau bókasöfn sem þarf fyrir forritið með einum smelli. Geymsla er studd til að hýsa bókasöfn crates.io.

Helstu nýjungar:

  • Stöðugleiki ný ósamstillt forritunarsetningafræði sem byggir á "async" aðgerðinni, async move { ... } blokkinni og ".await" stjórnanda, sem gerir það auðveldara að skrifa meðhöndlara sem hindra ekki aðalskipanaflæðið. Í samanburði við áður boðið API fyrir ósamstillt I/O eru ósamstilltur/.await smíðar einfaldar að skilja, mjög læsilegar og gera þér kleift að innleiða flóknar ósamstilltar víxlverkanir með því að nota kunnugleg flæðistýringartækni sem byggir á lykkjum, skilyrtum yfirlýsingum og undantekningum.

    Async-await setningafræðin gerir þér kleift að búa til aðgerðir sem geta gert hlé á framkvæmd þeirra, skilað stjórn á aðalþráðinn og síðan haldið áfram að keyra þaðan sem frá var horfið. Til dæmis er þörf á slíkri hlé við vinnslu I/O, þar sem önnur vinna er hægt að vinna á meðan beðið er eftir að næsta gagnastykki berist. Aðgerðir og blokkir skilgreindar með „async fn“ og „async move“ skila eiginleikum Framtíð, sem skilgreinir frestað ósamstillta útreikningaframsetningu. Hægt er að hefja frestað útreikning beint og fá niðurstöðuna með því að nota „.await“ stjórnandann. Engin aðgerð er framkvæmd eða fyrirfram skipulögð fyrr en kallað er á .await, sem gerir kleift að búa til flóknar hreiður smíðar án viðbótarkostnaðar.

    ósamstilltur fn first_function() -> u32 { .. }
    ...
    láta framtíð = first_function();
    ...
    láta niðurstöðu: u32 = framtíð.bíður;

  • Stöðugleiki "#![feature(bind_by_move_pattern_guards)]", sem gerir kleift að nota breytur með bindingargerðinni "með flutningi" í sniðmátum og notaðu tilvísanir í þessar breytur í "ef" hluta tjáningarinnar "passa". Til dæmis eru eftirfarandi framkvæmdir nú leyfðar:

    fn main() {
    láta fylki: Box<[u8; 4]> = Box::new([1, 2, 3, 4]);

    passa fylki {
    númer
    ef nums.iter().sum::() == 10

    => {
    falla(tölur);
    }
    _ => óaðgengilegt!(),
    }
    }

  • Ábending leyfð eiginleikar þegar skilgreint er aðgerðarbreytur, lokun og fallbendingar. Skilyrt samantektareiginleikar (cfg, cfg_attr) sem stjórna greiningu í gegnum lint (leyfa, vara við, neita og banna) og aukaeiginleika fyrir fjölvakall eru studdir.

    fn len(
    #[cfg(windows)] sneið: &[u16], // notaðu færibreytuna á Windows
    #[cfg(ekki(windows))] sneið: &[u8], // notað í öðru stýrikerfi
    ) -> nota {
    sneið.len()
    }

  • Viðvaranir um vandamál sem komu í ljós þegar verið er að athuga lántökur breytna (lánatékka) með NLL (Non-Lexical Lifetimes) tækni, þýtt í flokk banvænna mistaka. Við skulum muna að sannprófunarkerfið sem byggist á nýju kerfi til að taka tillit til líftíma lánaðra breyta gerði það að verkum að hægt var að bera kennsl á nokkur vandamál sem fóru óséð af gamla staðfestingarkóðann. Þar sem villuúttak fyrir slíkar athuganir gæti haft áhrif á samhæfni við áður virkan kóða, voru viðvaranir upphaflega gefnar út í stað villna. Viðvörunum hefur nú verið skipt út fyrir villur þegar keyrt er í Rust 2018 ham. Í næstu útgáfu verður villuúttak einnig útfært í Rust 2015 ham, sem mun loksins losa sig við gamla lánatékkarann;
  • „const“ eigindin, sem ákvarðar möguleikann á notkun í hvaða samhengi sem er í stað fasta, er notaður fyrir föllin Vec::new, String::new, LinkedList::new, str::len, [T]::len , str::as_bytes,
    abs, wrapping_abs og overflowing_abs;

  • Nýr hluti API hefur verið fluttur í stöðugan flokk, þar á meðal aðferðir sem hafa verið stöðugar
    Pin::into_inner, Instant::checked_duration_since og Instant::saturating_duration_since;

  • Farmpakkastjórinn hefur nú möguleika á að nota „.toml“ viðbótina fyrir stillingarskrár. Bætti við bráðabirgðastuðningi við að byggja upp staðlaða bókasafnið beint frá Cargo. Bætti við "--workspace" fánanum í stað hins umdeilda "--all" fána. Nýjum reit hefur verið bætt við lýsigögnin "birta“, sem gerir þér kleift að birta ósjálfstæði með því að tilgreina git tag og útgáfunúmer. Bætti við prófunarvalkostinum „-Ztimings“ til að búa til HTML skýrslu um framkvæmdartíma ýmissa samantektarstiga.
  • Í rustc þýðandanum innihalda greiningarskilaboð að klippa skott kóðans sem passar ekki inn í flugstöðina. Veitt þriðja stig stuðning fyrir markpalla
    i686-unknown-uefi og sparc64-unknown-openbsd. Þriðja stigið felur í sér grunnstuðning, en án sjálfvirkrar prófunar og birtingar á opinberum byggingum.

Heimild: opennet.ru

Bæta við athugasemd