Rust 1.60 Ukukhishwa Kolimi Lokuhlela

Ulimi lokuhlela lwenhloso evamile i-Rust 1.60, olwasungulwa iphrojekthi ye-Mozilla kodwa manje oluthuthukiswe ngaphansi kwenhlangano ezimele engenzi nzuzo i-Rust Foundation, lukhululiwe. Ulimi lugxile ekuphepheni kwenkumbulo futhi luhlinzeka ngezindlela zokuzuza ukufana kwemisebenzi ephezulu kuyilapho ugwema ukusetshenziswa komqoqi kadoti nesikhathi sokusebenza (isikhathi sokusebenza sincishiselwa ekuqaliseni okuyisisekelo nasekunakekeleni umtapo wolwazi ojwayelekile).

Izindlela zokuphatha inkumbulo kaRust zisindisa unjiniyela emaphutheni lapho eshintsha izikhombi futhi avikele ezinkingeni eziphakama ngenxa yokuphatha inkumbulo esezingeni eliphansi, njengokufinyelela indawo yenkumbulo ngemva kokuba ikhululiwe, ukuhoxisa izikhombi ezingenalutho, ukugcwala kwebhafa, njll. Ukuze kusatshalaliswe imitapo yolwazi, ukuhlinzeka ngokwakha nokuphatha okuncikile, iphrojekthi ithuthukisa umphathi wephakheji ye-Cargo. Inqolobane ye-crates.io isekelwe ekusingatheni imitapo yolwazi.

Ukuphepha kwenkumbulo kunikezwa ku-Rust ngesikhathi sokuhlanganiswa ngokuhlolwa kwereferensi, ukulandelela ubunikazi bento, ukulandelela isikhathi sokuphila kwento (izikophu), nokuhlola ukulunga kokufinyelela inkumbulo ngesikhathi sokwenziwa kwekhodi. I-Rust iphinde inikeze isivikelo ekuchichimeni okuphelele, idinga ukuqaliswa okuyisibopho kwamanani ahlukahlukene ngaphambi kokusetshenziswa, iphatha amaphutha kangcono kulabhulali evamile, isebenzisa umqondo wezithenjwa ezingaguquleki nokuguquguqukayo ngokuzenzakalelayo, inikeza ukuthayipha okuqinile okuqinile ukuze kuncishiswe amaphutha anengqondo.

Okuqanjiwe okuyinhloko:

  • I-rustc compiler inohlelo oluzinzile olusekelwe ku-LLVM lokukhiqiza idatha yokuhlanganisa esetshenziselwa ukuhlola ukumbozwa kwekhodi ngesikhathi sokuhlolwa. Ukuze unike amandla idatha yokumbozwa phakathi nokuhlanganisa, kufanele usebenzise ifulege elithi “-Cinstrument-coverage”, isibonelo, uqalise ukuhlanganisa ngomyalo othi “RUSTFLAGS="-C instrument-coverage” cargo build”. Ngemva kokusebenzisa ifayela elisebenzisekayo elihlanganiswe ngale ndlela, ifayela le-default.profraw lizogcinwa kuhla lwemibhalo lwamanje, ukuze lucutshungulwe ongasebenzisa insiza ye-llvm-profdata kusukela engxenyeni yokubuka kuqala yamathuluzi-llvm. Okuphumayo okucutshungulwe yi-llvm-profdata kungabe sekudluliswa ku-llvm-cov ukuze kukhiqizwe umbiko wekhodi echasisayo. Ulwazi olumayelana nesixhumanisi sekhodi yomthombo luthathwa efayeleni elisebenzisekayo elihlolwayo, elihlanganisa idatha edingekayo mayelana nokuxhumana phakathi kwezinto zokubala zekhava kanye nekhodi. 1| 1|fn main() { 2| 1| println!("Sawubona, mhlaba!"); 3| 1|}
  • Kumphathi wephakheji yezimpahla, ukusekelwa kwefulegi elithi "-timings" kuzinzile, okubandakanya ukukhiqizwa kombiko onemininingwane ngenqubekelaphambili yokwakhiwa kanye nesikhathi sokwenziwa kwesinyathelo ngasinye. Umbiko ungase ube usizo ekuthuthukiseni ukusebenza kwenqubo yokuhlanganisa.
  • Umphathi wephakheji lempahla unikeza i-syntax entsha yendlela yokuhlanganisa okunemibandela nokukhetha kokuncika kokuzithandela, okulungiselelwe kufayela le-Cargo.toml ngokufaka uhlu lwezakhiwo eziqanjwe igama esigabeni [sezici] futhi lwenziwa lusebenze ngokunika amandla izakhiwo phakathi nokwakhiwa kwephakheji. usebenzisa ifulegi elithi “--izici”. Inguqulo entsha yengeza ukusekelwa kokuncika ezindaweni ezihlukene zamagama nokuncika okubuthakathaka.

    Esimeni sokuqala, kungenzeka ukusebenzisa izakhi ezinesiqalo esithi “dep:" ngaphakathi kwesigaba sokuthi "[izici]" ukuze uxhume ngokusobala ekuncikeni kokuzithandela ngaphandle kokumela ngokusobala lokhu kwencika njengesici. Esimweni sesibili, ukwesekwa kokumaka ngophawu “?” kungeziwe. ("igama-package?/feature-name") okuncika ongakukhetha okufanele kufakwe kuphela uma esinye isakhiwo sihlanganisa ukuncika okunikeziwe kokuzithandela. Isibonelo, esibonelweni esingezansi, ukunika amandla impahla ye-serde kuzonika amandla ukuncika kwe-"serde", kanye nempahla ye-"serde" yokuncika kwe-"rgb", kodwa kuphela uma ukuncika kwe-"rgb" kunikwe amandla kwenye indawo: [dependencies] serde = {inguqulo = " 1.0.133", ongakukhetha = okuyiqiniso} rgb = {inguqulo = "0.8.25", ngokuzikhethela = iqiniso } [izici] serde = ["dep:serde", "rgb?/serde"]

  • Ukusekela kokuhlanganiswa okukhulayo, okuye kwakhutshazwa ekukhishweni kokugcina, kubuyisiwe. Isiphazamisi sokuhlanganiswa esibangele ukuthi isici sikhutshazwe sesixazululiwe.
  • Ixazulule ezinye izinkinga ngokunikeza izibali-sikhathi ezisheshayo ngesiqinisekiso sesikhathi se-monotonic, esicabangela isikhathi esichithwa isistimu kumodi yokulala. Ngaphambilini, i-OS API yayisetshenziswa noma nini uma kungenzeka ukuze kusetshenziswe isibali sikhathi, esasingacabangeli izimo eziyinkinga eziphula isikhathi eside, njengezinkinga zehadiwe, ukusetshenziswa kwe-virtualization, noma amaphutha ohlelweni lokusebenza.
  • Ingxenye entsha ye-API iyiswe esigabeni sokuzinza, okuhlanganisa izindlela nokusetshenziswa kwezimpawu kuzinzile:
    • I-Arc::new_cyclic
    • Rc::i-cyclic_entsha
    • ucezu::EscapeAscii
    • <[u8]>::escape_ascii
    • u8::baleka_ascii
    • Vec::spare_capacity_mut
    • MhlawumbeUninit::thatha_ukwehla_kwe-init
    • MhlawumbeUninit::thatha_init_funda
    • i8::abs_diff
    • i16::abs_diff
    • i32::abs_diff
    • i64::abs_diff
    • i128::abs_diff
    • usayizi::abs_diff
    • u8::abs_diff
    • u16::abs_diff
    • u32::abs_diff
    • u64::abs_diff
    • u128::abs_diff
    • sebenzisa::abs_diff
    • Bonisa io::ErrorKind
    • Kusuka ku-ExitCode
    • Hhayi okwa ! (thayipha "asoze")
    • _Op_Yabela<$t>
    • i-arch::is_aarch64_feature_itholiwe!
  • Izinga lesithathu lokusekela lisetshenziswe ku-mips64-openwrt-linux-musl* kanye ne-armv7-unknown-linux-uclibceabi (softfloat) yesikhulumi. Izinga lesithathu libandakanya ukwesekwa okuyisisekelo, kodwa ngaphandle kokuhlola okuzenzakalelayo, ukushicilelwa kwezakhiwo ezisemthethweni, nokuqinisekiswa kokwakhiwa kwekhodi.
  • Umhlanganisi ushintshiwe ukuze asebenzise i-LLVM 14.

Ngaphezu kwalokho, ungaqaphela:

  • Ukwesekwa okwengeziwe kwe-bootstrapping ye-rustc compiler kusetshenziswa i-rustc_codegen_gcc backend, ekuvumela ukuthi usebenzise umtapo wezincwadi we-libgccjit ophuma kuphrojekthi ye-GCC njengomkhiqizi wekhodi ku-rustc, ovumela i-rustc ukuthi inikeze ukwesekwa kwezakhiwo kanye nokwenza kahle okutholakala ku-GCC. Iphromoshini ye-Compiler isho amandla okusebenzisa i-GCC-based code generator ku-rustc ukwakha i-rustc compiler ngokwayo. Ngasohlangothini olusebenzayo, lesi sici sikuvumela ukuthi wakhe izinhlelo zokugqwala zezakhiwo ebezikade zingasekelwe ku-rustc.
  • Ukukhishwa kwekhithi yamathuluzi ye-uutils coreutils 0.0.13 kuyatholakala, lapho kuthuthukiswa khona i-analogue yephakheji ye-GNU Coreutils, ebhalwe kabusha ngolimi lwe-Rust. I-Coreutils iza nezinto ezisetshenziswayo ezingaphezu kwekhulu, okufaka phakathi uhlobo, ikati, i-chmod, i-chown, i-chroot, i-cp, idethi, i-dd, i-echo, igama lomethuleli, i-id, i-ln, ne-ls. Umgomo wephrojekthi uwukwenza ukuqaliswa okuhlukile kwe-cross-platform ye-Coreutils, ekwazi ukusebenza kumapulatifomu e-Windows, Redox kanye ne-Fuchsia, kanye nokusabalalisa ngaphansi kwelayisensi ye-MIT evumelayo, esikhundleni selayisense ye-GPL copyleft.

    Inguqulo entsha ithuthukise ukusetshenziswa kwezinsiza eziningi, okuhlanganisa ukuhambisana okuthuthukisiwe kwe-cp, dd, df, split kanye nezinsiza ze-tr nozakwabo bephrojekthi ye-GNU. Kunikezwe imibhalo eku-inthanethi. I-clap parser isetshenziselwa ukuncozulula izimpikiswano zomugqa womyalo, okuthuthukise okukhiphayo kwefulegi elithi “--help” futhi kwenezela ukusekelwa kwezifinyezo zemiyalo emide (isibonelo, ungacacisa u-“ls -col” esikhundleni sokuthi “ls -color ”).

Source: opennet.ru

Engeza amazwana