Rust 1.66 Ukukhishwa Kolimi Lokuhlela

Ulimi lokuhlela lwenhloso evamile i-Rust 1.66, 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:

  • Ezibalweni ezinokumelwa okuphelele (isibaluli "#[repr(Int)]"), inkomba ecacile yokubandlulula (inombolo ehlukile ekubaleni) ivunyelwe, ngisho noma ukubala kuqukethe izinkambu. #[repr(u8)] enum Foo {A(u8), # discriminant 0 B(i8), # discriminant 1 C(bool) = 42, # discriminant 42}
  • I-function core::hint::black_box ebuyisela inani elitholiwe. Njengoba umhlanganisi ecabanga ukuthi lo msebenzi wenza okuthile, umsebenzi we-black_box ungasetshenziselwa ukukhubaza ukulungiselelwa komhlanganisi wezihibe lapho kwenziwa ukuhlola ukusebenza kwekhodi noma lapho uhlola ikhodi yomshini ekhiqiziwe (ukuze umhlanganisi angacabangi ikhodi engasetshenzisiwe futhi ayisuse). Isibonelo, esibonelweni esingezansi, i-black_box(v.as_ptr()) ivimbela umhlanganisi ukuthi acabange ukuthi i-vector v ayisetshenziswa. sebenzisa std::hint::black_box; fn push_cap(v: &mut Vec) { for i in 0..4 {v.push(i); black_box(v.as_ptr()); }}
  • Umphathi wephakheji "wezimpahla" unikeza umyalo "wokususa", okuvumela ukuthi ususe okuncikile ku-manifest ye-Cargo.toml emugqeni womyalo.
  • Ingxenye entsha ye-API iyiswe esigabeni sokuzinza, okuhlanganisa izindlela nokusetshenziswa kwezimpawu kuzinzile:
    • i-proc_macro::Span::umbhalo_womthombo
    • u*::{kuhloliwe_engeza_kusayiniwe, kuchichima_engeza_kusayiniwe, kugcwale_engeza_kusayiniwe, ukugoqa_kwengeza_kusayiniwe}
    • i*::{kuhloliwe_engeza_okungasayiniwe, kuchichima_engeza_akusayiniwe, kuyanelisa_engeza_akusayiniwe, ukugoqa_engeza_okungasayiniwe}
    • i*::{checked_sub_unsigned,chichima_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • I-BTreeSet::{okokuqala, okokugcina, i-pop_first, i-pop_last}
    • I-BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • Engeza ukusetshenziswa kwe-AsFd kwezinhlobo zokukhiya i-stdio uma usebenzisa i-WASI.
    • impl TryFrom > okweBhokisi<[T; N]>
    • core::hint::black_box
    • Ubude besikhathi::try_from_secs_{f32,f64}
    • Inketho::vula unzip
    • std::os::fd
  • Ububanzi "..X" kanye "..=X" buvunyelwe ezifanekisweni.
  • Lapho wakha isiphetho sangaphambili se-rustc compiler kanye ne-backend ye-LLVM, i-LTO (I-Link Time Optimization) kanye ne-BOLT (I-Binary Optimization and Layout Tool) izindlela zokuthuthukisa zisetshenziselwa ukwandisa ukusebenza kwekhodi ewumphumela nokunciphisa ukusetshenziswa kwememori.
  • Usekelo olusetshenziswayo lweleveli 5 lwezingxenyekazi ze-armv5te-none-eabi kanye ne-thumbvXNUMXte-none-eabi. Izinga lesithathu lisikisela ukwesekwa okuyisisekelo, kodwa ngaphandle kokuhlola okuzenzakalelayo, ukushicilela okusemthethweni kwakha nokuhlola ikhono lokwakha ikhodi.
  • Kungezwe ukwesekwa kokuxhuma kuma-macOS Generic Libraries.

Ukwengeza, singakwazi ukuphawula ukufakwa kwesiphetho esingaphambili se-Rust language compiler (gccrs) ku-codebase ye-GCC. I-frontend ifakiwe egatsheni le-GCC 13, elizokhishwa ngoMeyi 2023. Ukuqala nge-GCC 13, ikhithi yamathuluzi evamile ye-GCC ingasetshenziswa ukuhlanganisa izinhlelo ze-Rust ngaphandle kwesidingo sokufaka i-rustc compiler eyakhelwe kusetshenziswa ukuthuthukiswa kwe-LLVM. Ukuqaliswa kokugqwala ku-GCC 13 kuzoba sesimweni se-beta, ngeke kunikwe amandla ngokuzenzakalela.

Source: opennet.ru

Engeza amazwana