Umhlwa 1.40 Ukukhutshwa koLwimi lweNkqubo

ipapashiwe inkqubo yolwimi ukukhululwa Umhlwa 1.40, yasekwa yiprojekthi yeMozilla. Ulwimi lujolise ekukhuselweni kwememori, lubonelela ngolawulo lwememori oluzenzekelayo, kwaye lubonelela ngezixhobo zokuphumeza umsebenzi ophezulu wokuhambelana ngaphandle kokusebenzisa umqokeleli wenkunkuma kunye. ixesha lokuqalisa.

Ulawulo lwenkumbulo oluzenzekelayo lwe-Rust lukhulula umphuhlisi ekusetyenzisweni kwesalathisi kwaye ikhusela kwiingxaki ezivela kulawulo lwenkumbulo olukwinqanaba elisezantsi, elifana nofikelelo lwememori yasemva kwe-free, izalathisi ezingenanto, ukugqithiswa kwe-buffer, nokunye okunjalo. Umphathi wephakheji uyaphuhliswa ukuze asasaze amathala eencwadi, aqinisekise ukudibanisa kunye nokulawula ukuxhomekeka kwiprojekthi. Cargo, ikuvumela ukuba ufumane amathala eencwadi afunekayo kudweliso lwenkqubo ngonqakrazo olunye. Uvimba uyaxhaswa ukubamba amathala eencwadi iikhreyithi.io.

Siseko ezintsha:

  • Kongezwe amandla okumakisha izakhiwo (isakhiwo) kunye nokubalwa (i-enum enebloko eyahlukileyo) usebenzisa uphawu "#[ayiphelelanga]", leyo it ivumela kwixesha elizayo, yongeza imihlaba emitsha kunye nokhetho kulwakhiwo olubhengeziweyo kunye nokubalwa. Umzekelo, abaphuhlisi beemodyuli ezinezakhiwo ezinemihlaba ebhengezwe esidlangalaleni banokusebenzisa "#[non_exhaustive]" ukuphawula izakhiwo ezinokuba nemimandla emitsha eyongezwe kwixesha elizayo. Ukuza kuthi ga ngoku, kule meko, umphuhlisi wanyanzelwa ukuba akhethe phakathi kokubhengeza amasimi ngasese kunye nokubophelela kuluhlu olungenakuguqulwa lwamasimi. Uphawu olutsha lususa lo mda kwaye lukuvumela ukuba ungeze imihlaba emitsha kwixesha elizayo ngaphandle komngcipheko wokwaphula ikhowudi yangaphandle ehlanganiswe ngaphambili. Kwiiphakheji zekhreyithi, xa kutshatisa iinketho kwicandelo "lomdlalo", inkcazo ecacileyo yemaski "_ => {...}" iyadingeka, igubungela amasimi anokwenzeka kwixesha elizayo, ngaphandle koko impazamo iya kuboniswa xa wongeza amasimi amatsha.
  • Yongeziwe ukukwazi ukubiza inkqubo macro mac!() kuhlobo lomxholo. Umzekelo, ungabhala ngoku “type Foo = expand_to_type!(bar);” ukuba “expand_to_type” yinkqubo enkulu yenkqubo.
  • Kwiibhloko "zangaphandle {...}". yongezwe ukukwazi ukusebenzisa inkqubo kunye nophawu lwemacros, kuquka "bang!()" iimakhro, umzekelo:

    imithetho_enkulu! make_item { ($ igama: ident) => { fn $ igama (); }}

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

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

  • Kwimakhrosi iphunyeziwe ukukwazi ukuvelisa "macro_rules!" element. Ukuvelisa "macro_rules!" enokwenzeka kokubini kwiimakhro ezinjengomsebenzi (“mac!()”) nakwi-macros ngokohlobo lweempawu zeempawu (“#[mac]”).
  • Kwi-$m:into yokwenza imephu yemeta yongezwe inkxaso yamaxabiso okubalwa kophawu (“[TOKEN_STREAM]”, “{TOKEN_STREAM}” kunye “(TOKEN_STREAM)”), umzekelo:

    imithetho_enkulu! accept_meta { ($m:meta) => {}}
    accept_meta!( yam::indlela);
    accept_meta!( yam::indlela = "ilayitiwe" );
    accept_meta!( yam::indlela ( abc ));
    accept_meta!( yam::indlela [ abc ]);
    Yamkela_meta!( yam::indlela { abc });

  • Kwimowudi ye-Rust 2015, ukukhutshwa kwempazamo kunikwe amandla kwiingxaki ezichongiweyo xa kuhlolwa ukuboleka kwezinto eziguquguqukayo (i-borrow checker) usebenzisa ubuchule be-NLL (Non-Lexical Lifetimes). Ngaphambili, izilumkiso zatshintshwa ngeempazamo xa zisebenza kwi-Rust 2018 mode.
    Emva kokuba utshintsho lwandiswe kwimodi ye-Rust 2015, abaphuhlisi bakwazi ekugqibeleni Susa i ukusuka kumkhangeli omdala wokuboleka.

    Masikhumbule ukuba inkqubo yokuqinisekisa esekwe kwindlela entsha yokuthathela ingqalelo ixesha lokuphila kwezinto eziguquguqukayo ezibolekiweyo yenze ukuba kube lula ukuchonga ezinye iingxaki ezingakhange ziqatshelwe yikhowudi yakudala yokuqinisekisa. Ekubeni isiphumo semposiso yokuhlolwa okunjalo kunokuchaphazela ukuhambelana nekhowudi yokusebenza yangaphambili, izilumkiso zikhutshwe kuqala endaweni yeempazamo.

  • Uphawu lwe "const", olumisela ukuba nokwenzeka kokulusebenzisa kuyo nayiphi na imeko endaweni yesigxina, sisetyenziselwa is_power_of_two function (yeenombolo ezingasayinwanga).
  • Inxalenye entsha ye-API iye yasiwa kudidi oluzinzileyo, kuquka i-todo!() macro kunye nesilayi ::phinda, mem::thatha, BTreeMap ::fumana_ixabiso_lokubaluleka, iHashMap ::fumana_ixabiso_lokubaluleka, iindlela zizinzisiwe.
    Ukhetho::as_deref, Option::as_deref_mut, Option::flatten, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::ukuya_ne_bytes, { f32}::ukusuka_be_bytes, {f64,f32}::ukusuka_le_bytes, kunye {f64,f32}::ukusuka_ne_bytes.

  • Kwimpahla yomphathi wepakethe
    iphunyeziwe i-caching compiler isilumkiso kwidiski. Kongezwe ukhetho "i-metadata yempahla" kumyalelo we "cargo metadata".--iqonga lokucoca" ukubonisa kuphela iipakethe ezibotshelelwe kwiqonga ekujoliswe kulo elikhankanyiweyo kwikholamu yesisombululo sokuxhomekeka. Kongezwe i-http.ssl-version ukhetho lokuchaza iinguqulelo ezisebenzayo zeTLS.
    Kongezwe ukukwazi ukupapasha icandelo "ukuxhomekeka kwi-dev" ngaphandle kokuchaza iqhosha elithi "version".

  • I-rustc compiler inikezela ngenkxaso yenqanaba lesithathu kwiiplatifomu ekujoliswe kuzo i-thumbv7neon-engaziwa-linux-musleabihf, i-aarch64-engaziwa-none-softfloat, i-mips64-engaziwa-linux-muslabi64 kunye ne-mips64el-engaziwa-linux-muslabi64. Inqanaba lesithathu libandakanya inkxaso eyisiseko, kodwa ngaphandle kovavanyo oluzenzekelayo kunye nokupapashwa kokwakha ngokusemthethweni.

umthombo: opennet.ru

Yongeza izimvo