Rust 1.39 Programazio Lengoaia kaleratzea

argitaratua sistemaren programazio lengoaia kaleratzea Herdoila 1.39, Mozilla proiektuak sortua. Lengoaiak memoriaren segurtasunean oinarritzen da, memoria automatikoki kudeatzen du eta zereginen paralelismo handia lortzeko bitartekoa eskaintzen du zabor-biltzaile edo exekuzio-denbora erabili gabe.

Rust-en memoria-kudeaketa automatikoak garatzailea erakusleen manipulaziotik askatzen du eta maila baxuko memoriaren manipulaziotik sortzen diren arazoetatik babesten du, hala nola, memoria librearen ondorengo sarbideetatik, erakusle nuluen deserreferentziak, buffer gainezkatzeetatik eta antzekoetatik. Liburutegiak banatzeko, muntaia ziurtatzeko eta proiektuaren mendekotasunak kudeatzeko pakete-kudeatzaile bat garatzen ari da. Zama, programarako beharrezkoak diren liburutegiak klik bakarrean eskuratu ahal izateko. Biltegi bat onartzen da liburutegiak ostatatzeko kaxak.io.

Nagusia berrikuntzak:

  • Egonkortuta "async" funtzioan, mugimendu asinkronoan { ... } blokean eta ".await" eragilean oinarritutako programazio asinkronoko sintaxi berri bat, komando-fluxu nagusia blokeatzen ez duten kudeatzaileak idaztea errazten duena. I/O asinkronoetarako aurrez eskainitako APIarekin alderatuta, async/.await eraikuntzak ulertzeko errazak dira, oso irakurgarriak dira eta interakzio asinkrono konplexuak ezartzeko aukera ematen dute fluxu-kontroleko teknika ezagunak erabiliz, begiztetan, baldintzapeko adierazpenetan eta salbuespenetan oinarrituta.

    Async-wait sintaxiak beren exekuzioa eten dezaketen funtzioak sortzeko aukera ematen du, kontrola hari nagusira itzultzeko eta, ondoren, exekuzioari utzitako lekutik berresteko. Esaterako, halako pausa bat behar da I/O prozesatzen denean, eta bertan beste lan batzuk egin daitezke hurrengo datua noiz iritsiko zain. "async fn" eta "async move"-rekin definitutako funtzio eta blokeek ezaugarri bat itzultzen dute Etorkizuna, konputazio asinkrono geroratua definitzen duena. Zuzenean kalkulu geroratu bat has dezakezu eta emaitza lor dezakezu ".wait" operadorea erabiliz. Ez da ekintzarik egiten edo aldez aurretik planifikatzen .wait deitu arte, habiaraturiko eraikuntza konplexuak gainkostu gehigarririk gabe sortzea ahalbidetuz.

    async fn lehen_funtzioa () -> u32 { .. }
    ...
    utzi etorkizuna = lehen_funtzioa();
    ...
    utzi emaitza: u32 = etorkizuna.itxaron;

  • Egonkortuta "#![feature(bind_by_move_pattern_guards)]", lotura motako aldagaiak erabiltzeko aukera ematen du "mugimenduz" txantiloietan eta erabili aldagai hauen erreferentziak esapidearen " bada " atalean "partidaren". Adibidez, gaur egun eraikuntza hauek onartzen dira:

    fn main() {
    utzi array: Box<[u8; 4]> = Kutxa::berria([1, 2, 3, 4]);

    bat etortzeko array {
    zenbakiak
    nums.iter().sum::() == 10 bada

    => {
    jaitsi(zenbakiak);
    }
    _ => iritsi ezina!(),
    }
    }

  • Adierazpena onartzen da atributuak funtzio-parametroak, itxierak eta funtzio-erakusleak definitzean. Lint bidez diagnostikoak kontrolatzen dituzten konpilazio-atributuak (cfg, cfg_attr) (baimendu, ohartarazi, ukatu eta debekatu) eta makro-dei-atributu osagarriak onartzen dira.

    fn len(
    #[cfg(windows)] xerra: &[u16], // erabili parametroa Windows-en
    #[cfg(ez(windows))] zatia: &[u8], // erabili beste sistema eragile batean
    ) -> erabili {
    xerra.len()
    }

  • NLL (Non-Lexical Lifetimes) teknika erabiliz aldagaien mailegua egiaztatzean (mailegu egiaztatzailea) identifikatutako arazoei buruzko abisuak, itzulia akats larrien kategorian sartu. Gogora dezagun maileguan hartutako aldagaien bizi-iraupena kontuan hartzeko mekanismo berri batean oinarritutako egiaztapen-sistemak egiaztapen-kode zaharrak oharkabean ez zituen zenbait arazo identifikatzea ahalbidetu zuela. Egiaztapen horien errore-irteerak aurretik lan egiten zuen kodearekin bateragarritasunean eragina izan dezakeenez, hasiera batean abisuak eman ziren erroreen ordez. Abisuak akatsekin ordezkatu dira Rust 2018 moduan exekutatzen ari zarenean. Hurrengo bertsioan, erroreen irteera Rust 2015 moduan ere inplementatuko da, azkenean mailegu-zuzentzaile zaharra kenduko duena;
  • "const" atributua, konstanteen ordez edozein testuingurutan erabiltzeko aukera zehazten duena, Vec::new, String::new, LinkedList::new, str::len, [T]::len funtzioetarako erabiltzen da. , str::as_bytes,
    abdominalak, abdominalak_biltzea eta gainezka_abs;

  • APIen zati berri bat kategoria egonkorrera transferitu da, egonkortu diren metodoak barne
    Pin::into_inner, Instant::checked_duration_since eta Instant::saturating_duration_since;

  • Karga paketeen kudeatzaileak orain konfigurazio fitxategietarako ".toml" luzapena erabiltzeko gaitasuna du. Liburutegi estandarra zuzenean Cargotik eraikitzeko aurretiazko euskarria gehitu da. "--workspace" bandera gehitu da, "--all" bandera polemikoa ordezkatuz. Eremu berri bat gehitu da metadatuetan "argitaratzeko", menpekotasunak argitaratzeko aukera ematen duena git etiketa eta bertsio zenbakia zehaztuz. "-Ztimings" proba-aukera gehitu da konpilazio-fase ezberdinetako exekuzio-denboren HTML txostena sortzeko.
  • Rustc konpilatzailean, diagnostiko mezuak terminalean sartzen ez den kodearen isatsak moztea barne hartzen du. Helburu-plataformetarako hirugarren laguntza-maila eskaini du
    i686-unknown-uefi eta sparc64-unknown-openbsd. Hirugarren mailak oinarrizko euskarria dakar, baina proba automatizaturik eta eraikuntza ofizialen argitalpenik gabe.

Iturria: opennet.ru

Gehitu iruzkin berria