Rust 1.40 Famoahana ny fiteny fandaharana

MIVOAKA famotsorana ny fiteny fandaharana amin'ny rafitra Harafesina 1.40, naorin'ny tetikasa Mozilla. Mifantoka amin'ny fiarovana ny fitadidiana ilay fiteny, manome fitantanana fitadidiana mandeha ho azy, ary manome fitaovana hanatrarana ny fitovizan'asa avo lenta nefa tsy mampiasa mpanangom-pako sy runtime.

Ny fitantanana fahatsiarovana mandeha ho azy an'i Rust dia manafaka ny mpamorona amin'ny fanodinkodinana pointer ary miaro amin'ny olana ateraky ny fanodinkodinana fahatsiarovana ambany, toy ny fidirana tsy misy fitadidiana aorian'ny fahatsiarovan-tena, ny tsy fahampian'ny pointer tsy misy dikany, ny fihoaran'ny buffer, sy ny toy izany. Misy mpitantana fonosana novolavolaina mba hizarana tranomboky, hiantohana ny fivoriambe ary hitantanana ny fiankinan-doha amin'ny tetikasa. entana, ahafahanao mahazo ny tranomboky ilaina amin'ny programa amin'ny tsindry iray. Misy tahiry iray tohanana mba hampiantranoana tranomboky crates.io.

tena fanavaozana:

  • Nampiana ny fahafahana manamarika rafitra (struct) sy fanisana (enum miaraka amin'ny Variant block) mampiasa ny toetra "#[tsy_farany]", izay Tsy mamela amin'ny ho avy, ampio saha sy safidy vaovao amin'ireo rafitra sy fanisana nambara. Ohatra, afaka mampiasa "#[non_exhaustive]" ny mpamorona mΓ΄dely manana rafitra misy saha ambara ampahibemaso mba hanamarihana ireo rafitra mety hisy saha vaovao ampiana amin'ny ho avy. Hatramin'izao, ao anatin'izany toe-javatra izany, ny mpamorona dia voatery nisafidy na hanambara saha mitokana sy hamatotra ny lisitry ny saha tsy miova. Ny toetra vaovao dia manaisotra io fetra io ary mamela anao hampiditra saha vaovao amin'ny ho avy tsy misy risika handrava ny kaody ivelany natambatra teo aloha. Ao amin'ny fonosana vata, rehefa mifanandrify ny safidy ao amin'ny fizarana "match", dia ilaina ny famaritana mazava ny saron-tava "_ => {...}", mandrakotra ny saha mety ho avy, raha tsy izany dia hisy hadisoana hiseho rehefa manampy saha vaovao.
  • nanampy ny fahafahana miantso ny procedural macro mac!() amin'ny karazana context. Ohatra, azonao atao izao ny manoratra hoe "karazana Foo = fanitarana_to_karazana!(bar);" raha toa ka macro procedural ny "expand_to_type".
  • Ao amin'ny sakana "extern { ... }". nanampy ny fahafahana mampiasa macros procedural sy attribute, anisan'izany ny macros "bang!()", ohatra:

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

    ivelany {
    make_item!(alfa);
    make_item!(beta);
    }

    ivelany "C" {
    #[ny_identity_macro] fn foo();
    }

  • Amin'ny macros ampiharina fahafahana mamorona singa "macro_rules!". Mamorona "macro_rules!" azo atao na amin'ny macros mitovy amin'ny fiasa ("mac!()") ary amin'ny macro amin'ny endrika toetra ("#[mac]").
  • Ao amin'ny singa $m:meta mapping nanampy fanohanana ny soatoavina fanisana marika tsy misy dikany ("[TOKEN_STREAM]", "{TOKEN_STREAM}" ary "(TOKEN_STREAM)"), ohatra:

    macro_rules! accept_meta { ($m:meta) => {} }
    accept_meta!( my::path );
    accept_meta!( my::path = "lit" );
    accept_meta!( my::path ( abc ) );
    accept_meta!( my::path [ abc ] );
    accept_meta!( my::path { abc } );

  • Ao amin'ny maodely Rust 2015, ny famoahana fahadisoana dia alefa amin'ny olana fantatra rehefa manamarina ny fampindramam-bola miovaova (mindram-bola) amin'ny fampiasana ny teknika NLL (Non-Lexical Lifetimes). Teo aloha dia nosoloina fahadisoana ny fampitandremana rehefa mandeha amin'ny fomba Rust 2018.
    Taorian'ny nitarina tamin'ny fomba Rust 2015 ny fanovana, dia afaka nanao izany ihany ny mpamorona mialΓ  avy amin'ny mpanamarina fampindramam-bola taloha.

    Aoka hotsaroantsika fa ny rafitra fanamarinana mifototra amin'ny rafitra vaovao amin'ny fiheverana ny androm-piainan'ny fari-piadidiana nindramina dia nahafahana namantatra ny olana sasany izay tsy voamariky ny kaody fanamarinana taloha. Satria mety hisy fiantraikany amin'ny fampifanarahana amin'ny kaody miasa teo aloha ny fivoahan'ny hadisoana ho an'ny fisavana toy izany, ny fampitandremana no nivoaka voalohany fa tsy ny fahadisoana.

  • Ny toetra "const", izay mamaritra ny mety hampiasana azy amin'ny toe-javatra rehetra fa tsy constants, dia ampiasaina amin'ny fiasa is_power_of_two (ho an'ny isa tsy misy sonia).
  • Nisy ampahany vaovao amin'ny API nafindra ho amin'ny sokajy stable, ao anatin'izany ny todo!() macro sy ny slice::repeat, mem::take, BTreeMap::get_key_value, HashMap::get_key_value, ny fomba dia nalamina.
    Option::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}::avy_be_bytes, {f64,f32}::avy_le_bytes, ary {f64,f32}::avy_ne_bytes.

  • Ao amin'ny fonosana mpitantana entana
    ampiharina caching fampitandremana compiler amin'ny kapila. Nampiana ny safidy "metadata entana" amin'ny baiko "metadata entana".--sivana-sehatra" mba hampisehoana fonosana mifamatotra amin'ny sehatra kendrena voatondro ao amin'ny tsanganana famahana ny fiankinan-doha. Nampiana http.ssl-version config safidy hamaritana ny dikan-teny TLS manan-kery.
    Nampiana ny fahafahana mamoaka ny fizarana "dev-dependencies" tsy misy famaritana ny fanalahidy "version".

  • Ny rustc compiler dia manome fanohanana ambaratonga fahatelo ho an'ny sehatra kendrena thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 ary mips64el-unknown-linux-muslabi64. Ny ambaratonga fahatelo dia misy fanohanana fototra, saingy tsy misy fitsapana mandeha ho azy sy famoahana ny fananganana ofisialy.

Source: opennet.ru

Add a comment