Rust 1.40 Chirongwa Mutauro Kuburitswa

rakabudiswa system programming mutauro kuburitswa Ngura 1.40, yakatangwa neMozilla project. Mutauro unotarisana nekuchengetedza ndangariro, unopa otomatiki ndangariro manejimendi, uye inopa maturusi ekuwana yakakwira basa parallelism pasina kushandisa muunganidzi wemarara uye. runtimetime.

Rust's otomatiki ndangariro manejimendi inosunungura mugadziri kubva pakugadzirisa pointer uye inodzivirira kubva kune yakaderera-level ndangariro manipulation, senge mushure-yemahara memory yekuwana, null pointer dereferences, buffer overruns, nezvimwe. Maneja wepakeji ari kugadzirwa kugovera maraibhurari, kuona kuungana uye kugadzirisa zvinovimbika neprojekiti. kago, zvichikubvumidza kuti uwane maraibhurari anodiwa pachirongwa ichi nekudzvanya kumwe chete. A repository inotsigirwa kuitisa maraibhurari crates.io.

chikuru zvitsva:

  • Yakawedzera kugona kumaka zvimiro (chimiro) uye enumerations (enum ine Variant block) uchishandisa hunhu "#[haina_inopedza]", izvo Kunoitawo mune ramangwana, wedzera minda mitsva uye sarudzo kune yakaziviswa zvimiro uye enumerations. Semuyenzaniso, vanogadzira mamodule ane zvimiro zvine ndima dzakaziviswa pachena vanogona kushandisa "#[zvisinga_exhaustive]" kumaka zvimiro zvingave neminda mitsva yakawedzerwa mune ramangwana. Kusvika ikozvino, mumamiriro ezvinhu aya, mugadziri akamanikidzwa kusarudza pakati pekuzivisa minda pachivande uye kusunga kune isingachinjike runyorwa rweminda. Hunhu hutsva hunobvisa muganhu uye hunokubvumira kuti uwedzere minda mitsva mune ramangwana pasina njodzi yekutyora yakambonyorwa kunze kodhi. Muma crate package, kana uchifananidza sarudzo muchikamu che "match", tsanangudzo yakajeka yemasiki "_ => {...}" inodiwa, ichivhara minda inogona kuitika mune ramangwana, zvikasadaro kukanganisa kucharatidzwa pakuwedzera minda mitsva.
  • Added kugona kudaidza iyo procedural macro mac!() muchimiro chemhando. Semuenzaniso, unogona ikozvino kunyora "type Foo = expand_to_type! (bha);" kana "expand_to_type" iri maitiro makuru.
  • Mu "kunze { ... }" mabhuroko akawedzera kugona kushandisa maitiro uye hunhu macros, kusanganisira "bang!()" macros, semuenzaniso:

    macro_rules! make_item {($zita: ident) => {fn $zita(); }}

    kunze {
    make_item!(alpha);
    make_item!(beta);
    }

    zvekunze "C" {
    #[my_identity_macro] fn foo();
    }

  • Mune macros itwa kugona kugadzira "macro_rules!" zvinhu. Kugadzira "macro_rules!" zvinogoneka zvese mukushanda-kunge macros ("mac!()") uye mumacros muchimiro chehunhu ("#[mac]").
  • Mune $m:meta yemepu chinhu akawedzera tsigiro yezvisina kujeka tokeni enumeration values ​​​​("[TOKEN_STREAM]", "{TOKEN_STREAM}" uye "(TOKEN_STREAM)"), semuenzaniso:

    macro_rules! accept_meta {($m:meta) => {}}
    accept_meta!( yangu ::nzira);
    accept_meta!( yangu::nzira = "rit" );
    accept_meta!( yangu::nzira ( abc ));
    accept_meta!( yangu::nzira [ abc ]);
    accept_meta!( yangu ::nzira { abc });

  • MuRust 2015 modhi, kukanganisa kuburitswa kunogoneswa kumatambudziko akaonekwa kana uchitarisa kukwereta kwezvakasiyana (kukwereta cheki) uchishandisa iyo NLL (Non-Lexical Lifetimes) maitiro. Pakutanga, yambiro dzakatsiviwa nezvikanganiso kana uchimhanya muRust 2018 modhi.
    Mushure mekunge shanduko yawedzerwa kuRust 2015 modhi, vagadziri vakakwanisa pakupedzisira Bvisa kubva kucheki chekare chekukwereta.

    Ngatiyeukei kuti iyo verification system yakavakirwa pamuchina mutsva wekutarisa hupenyu hwezvakakweretwa zvakasiyana zvakaita kuti zvikwanise kuona mamwe matambudziko asina kucherechedzwa nekodhi yekare yekusimbisa. Sezvo kukanganisa kubuda kwecheki kwakadaro kuchigona kukanganisa kuenderana nekodhi yaimboshanda, yambiro yakatanga kupihwa pachinzvimbo chekukanganisa.

  • Iyo "const" hunhu, iyo inosarudza mukana wekuishandisa mune chero mamiriro pachinzvimbo chezvisingaperi, inoshandiswa kune iyo is_power_of_two basa (yeinhamba isina kusaina).
  • Chikamu chitsva cheAPI chaendeswa kuchikamu chakagadzikana, kusanganisira todo!() macro uye chidimbu::dzokorora, mem::tora, BtreeMap::wana_key_value, HashMap::wana_key_value, nzira dzakadzikamiswa.
    Sarudzo::as_deref, Option::as_deref_mut, Option::flatten, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_ne_bytes, { f32}::kubva_be_bytes, {f64,f32}::kubva_le_bytes, uye {f64,f32}::kubva_ne_bytes.

  • Mupakeji maneja cargo
    itwa caching compiler yambiro pa diski. Yakawedzera sarudzo "cargo metadata" kune "cargo metadata" murairo--filter-platform" kuratidza mapakeji chete akasungirirwa kune yakatsanangurwa chikuva chepuratifomu mune yekutsamira resolution column. Yakawedzerwa http.ssl-version configuration sarudzo yekutsanangura mavhezheni eTLS anoshanda.
    Yakawedzera kugona kuburitsa chikamu "dev-dependencies" pasina kutaura kiyi ye"vhezheni".

  • Iyo rustc compiler inopa yechitatu nhanho rutsigiro rwechinangwa mapuratifomu thumbv7neon-isingazivikanwe-linux-musleabihf, aarch64-isingazivikanwe-hapana-softfloat, mips64-isingazivikanwe-linux-muslabi64 uye mips64el-isingazivikanwe-linux-muslabi64. Iyo yechitatu nhanho inosanganisira yekutanga tsigiro, asi pasina otomatiki kuyedzwa uye kuburitswa kwevakuru vanovaka.

Source: opennet.ru

Voeg