Umhlwa 1.57 Ukukhutshwa koLwimi lweNkqubo

Ukukhutshwa kwenkqubo yolwimi lwenkqubo iRust 1.57, eyasekwa yiprojekthi yeMozilla, kodwa ngoku iphuhliswe phantsi kwentlangano ezimeleyo engenzi nzuzo iRust Foundation, ishicilelwe. Ulwimi lugxininise ekukhuselweni kwememori, lubonelela ngolawulo lwememori oluzenzekelayo, kwaye lubonelela ngeendlela zokufikelela kwi-parallelism ephezulu yomsebenzi ngaphandle kokusebenzisa umqokeleli wenkunkuma okanye ixesha lokuqhuba (ixesha lokuqhuba lincitshiswe ekuqaliseni okusisiseko kunye nokugcinwa kwelayibrari esemgangathweni).

Ulawulo lwenkumbulo oluzenzekelayo lwe-Rust lugcina umphuhlisi kwiimpazamo xa ulawula izikhombisi kwaye ukhusela kwiingxaki ezivela ngenxa yokukhohlisa kwimemori ekwinqanaba elisezantsi, njengokufikelela kwindawo yememori emva kokuba ikhululiwe, ukurhoxisa izikhombisi ezingenanto, ukugqithiswa kwe-buffer, njl. Ukusasaza amathala eencwadi, ukubonelela ngokwakha kunye nokulawula ukuxhomekeka, iprojekthi iphuhlisa umphathi wephakheji yeCargo. Indawo yokugcina i-crates.io iyaxhaswa kukusingatha amathala eencwadi.

Iinguqulelo eziphambili:

  • Ukusetyenziswa kwe "panic!" macro kuzinzisiwe. kwimixholo eyenziwe ngexesha loqulunqo, olufana ne "const fn" izibhengezo. Ukongezelela, ukongeza ekusebenziseni "ukwesaba!" const declarations ivumela ukusetyenziswa kwe "assert!" macro. kunye nezinye ii-API zethala leencwadi eziqhelekileyo. Uzinziso alukaquki lonke iziseko zokufomatha, ngoko ke kwimo yalo yangoku "uloyiko!" macro inokusetyenziswa kuphela ngeentambo ezimileyo (panic!(β€œ...")) okanye ngexabiso elinye elidityanisiweyo "&str" xa kufakwa endaweni (panic!("{}", a)), ekufuneka iphelele ekumiseleni "{ }" ngaphandle kwabaxeli bokufomatha kunye nezinye iindidi. Kwixesha elizayo, ukusetyenziswa kweemacros kwiimeko eziqhubekayo kuya kwandiswa, kodwa amandla azinzile sele anele ukwenza uhlolo lwe-assert kwinqanaba lokudibanisa: const _: () = assert!(std::mem::size_of::() == 64 ); const _: () = assert!(std::mem::size_of::() == 8);
  • Umphathi wephakheji yeCargo uvumela ukusetyenziswa kweeprofayili ezinamagama arbitrary, angaphelelanga ku-"dev", "release", "test" kunye "nebhentshi". Umzekelo, ukwenza ukulungelelaniswa kwinqanaba lokudibanisa (LTO) kuphela xa iindibano zemveliso yokugqibela zenziwe, unokwenza iprofayili "yemveliso" kwiCargo.toml kwaye wongeze iflegi "lto = yinyani" kuyo. Nangona kunjalo, xa uchaza iiprofayile zakho, kufuneka ukhankanye iprofayile esele ikhona ukuze ufumane imimiselo engagqibekanga kuyo. Umzekelo ongezantsi wenza iprofayili "yemveliso" ehambelana neprofayili "yokukhululwa" ngokubandakanya iflegi "lto = inyaniso". Iprofayili ngokwayo ivuliwe ngokubiza imithwalo nge "--profile production" inketho, kunye ne-artifacts yendibano iya kufakwa kwi-directory "yethagethi / yemveliso". [profile.production] ilifa = "ukukhululwa" lto = yinyaniso
  • Ukusetyenziswa kwe-try_reserve yeVec, iString, iHashMap, iHashSet kunye neVecDeque iindidi zizinzile, ekuvumela ukuba ugcine indawo kwangaphambili kwinani elithile lezinto zohlobo olunikiweyo ukwenzela ukunciphisa ukuphindaphinda kwemisebenzi yokwabiwa kwememori kwaye ugweme. iingozi ngexesha lokusebenza ngenxa yokunqongophala kwememori.
  • Ivumelekile ukukhankanya iimacros ezinebrace ezigobileyo kwintetho efana ne "m!{ .. }.method()" kunye "m!{ .. }?".
  • Ukuphunyezwa kweFayile::read_to_end and read_to_string function yenziwe yalungiswa.
  • Inkxaso yenkcazo ye-Unicode ihlaziywe kwinguqulo ye-14.0.
  • Yandisiwe inani lemisebenzi ephawulwe "#[kufuneka_isetyenziswe]" ukukhupha isilumkiso ukuba ixabiso lembuyekezo alihoywa, nto leyo inceda ukuchonga iimpazamo ezibangelwa kukuthatha umsebenzi kuya kutshintsha amaxabiso endaweni yokubuyisela ixabiso elitsha.
  • Kongezwe umva wovavanyo wokwenziwa kwekhowudi usebenzisa i-libgccjit.
  • Inxalenye entsha ye-API iye yasiwa kudidi oluzinzileyo, kubandakanywa iindlela kunye nokuphunyezwa kweempawu ziye zazinziswa:
    • [T; N]::njenge_mut_isilayi
    • [T; N]::njengesilayi
    • ingqokelela::TryReserveError
    • Imephu yeHash::zama_bekisa
    • I-HashSet::zama_gcina
    • Umtya::zama_gcina
    • Umtya::zama_gcina_kanye
    • Vec::zama_gcina
    • Vec::zama_gcina_kanye
    • VecDeque::zama_gcina
    • VecDeque::try_reserve_exact
    • Iterator::map_ngelixesha
    • iter::MapWhile
    • iproc_macro::iyafumaneka
    • Umyalelo::fumana_inkqubo
    • Umyalelo::fumana_args
    • Umyalelo::fumana_envs
    • Umyalelo::fumana_current_dir
    • CommandArgs
    • CommandEnvs
  • Uphawu lwe "const", olumisela ukuba lunokusetyenziswa nakweyiphi na imeko endaweni yezigxina, lusetyenziswa kuphawu lomsebenzi::ingenakufikeleleka_engakhangelwanga.
  • Inqanaba lesithathu lenkxaso liphunyeziwe kwi-armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi-kmv7abi amaqonga aqinileyo_asp3-eabihf. Inqanaba lesithathu libandakanya inkxaso eyisiseko, kodwa ngaphandle kovavanyo oluzenzekelayo, ukupapasha ukwakha kwasemthethweni, okanye ukujonga ukuba ikhowudi inokwakhiwa.

umthombo: opennet.ru

Yongeza izimvo