Rust 1.66 Chirongwa Mutauro Kuburitswa

Mutauro wehurongwa hwese-chinangwa Rust 1.66, wakavambwa neMozilla purojekiti asi ikozvino wakagadziridzwa pasi perubatsiro rwesangano rakazvimirira rerust Foundation, raburitswa. Mutauro unotarisana nekuchengetedza ndangariro uye unopa nzira dzekuwana yakakwirira basa parallelism uchidzivirira kushandiswa kwemarara uye nguva yekumhanya (nguva yekumhanya inoderedzwa kusvika yekutanga yekutanga uye kugadzirisa raibhurari yakajairwa).

Rust's memory yekubata nzira dzinochengetedza mugadziri kubva mukukanganisa kana achibata anonongedzera uye kudzivirira kubva kumatambudziko anomuka nekuda kweakadzika-level ndangariro kubata, sekuwana nzvimbo yekurangarira mushure mekunge yasunungurwa, kudzoreredza null pointer, buffer overruns, nezvimwe. Kugovera maraibhurari, kupa kuvaka uye kugadzirisa zvinotsamira, purojekiti inovandudza Cargo package maneja. Iyo crates.io repository inotsigirwa kuitisa maraibhurari.

Kuchengetedzwa kwendangariro kunopihwa muRust panguva yekuunganidza kuburikidza nekutariswa kwekutarisa, kuchengeta track yemuridzi wechinhu, kuchengeta track yehupenyu hwechinhu (scopes), uye kuongorora iko kurongeka kwekuwana ndangariro panguva yekuita kodhi. Ngura inopawo dziviriro kubva pahuwandu hwekufashukira, inoda kusungirirwa kwekutanga kwemhando dzakasiyana usati washandiswa, inobata zvikanganiso zviri nani muraibhurari yakajairwa, inoshandisa iyo pfungwa yezvisingachinjiki mareferensi uye zvinosiyana nekusarudzika, inopa yakasimba static typing kuderedza zvikanganiso zvine musoro.

Zvitsva zvikuru:

  • Muchiverengero chine humiriri hwakazara (iyo "#[repr(Int)]" hunhu), chiratidzo chakajeka chemusarura (musiyano wenhamba muruverengero) inotenderwa, kunyangwe iyo nhamba iine ndima. #[repr(u8)] enum Foo {A(u8), # kusarura 0 B(i8), # kusarura 1 C(bool) = 42, # kusarura 42}
  • Yakawedzera basa musimboti::hint::black_box iyo inongodzosa kukosha kwakagamuchirwa. Sezvo muunganidzi achifunga kuti basa iri riri kuita chimwe chinhu, iyo black_box basa rinogona kushandiswa kudzima compiler optimizations yezvishwe paunenge uchiita kodhi performance performance kana pakuongorora inogadzirwa muchina kodhi (kuitira kuti compiler asatarise kodhi isina kushandiswa uye kuibvisa). Semuenzaniso, mumuenzaniso uri pazasi, black_box(v.as_ptr()) inodzivirira mugadziri kufunga kuti vector v haisi kushandiswa. shandisa std::hint::black_box; fn push_cap(v: &mut Vec) {for i in 0..4 {v.push(i); black_box(v.as_ptr()); }}
  • Iyo "cargo" package maneja inopa "bvisa" murairo, iyo inokutendera kuti ubvise zvinotsamira kubva kuCargo.toml manifest kubva pamutsetse wekuraira.
  • Chikamu chitsva cheAPI chakaendeswa kuchikamu cheyakagadzikana, kusanganisira nzira uye mashandisirwo ehunhu zvakadzikamiswa:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, kufashukira_add_signed, saturating_add_signed, wrapping_add_signed}
    • ini*::{checked_add_unsigned, kufashukira_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{checked_sub_unsigned, kufashukira_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet ::{kutanga, kwekupedzisira, pop_kutanga, pop_kupedzisira}
    • BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • Wedzera AsFd mashandisirwo emhando dze stdio kukiya paunenge uchishandisa WASI.
    • impl TryFrom > yeBhokisi<[T; N]>
    • musimboti::hint::black_box
    • Nguva::try_from_secs_{f32,f64}
    • Sarudzo::unzip
    • std::os::fd
  • Zvikamu "..X" uye "..=X" zvinotenderwa mumatemplate.
  • Paunenge uchivaka kumberi kwerustc compiler uye LLVM backend, LTO (Link Time Optimization) uye BOLT (Binary Optimization uye Layout Tool) nzira dzekugadzirisa dzinoshandiswa kuwedzera kushanda kwekodhi inoguma uye kuderedza kushandiswa kwekuyeuka.
  • Yakaitwa nhanho 5 rutsigiro rwearv5te-none-eabi uye thumbvXNUMXte-none-eabi mapuratifomu. Iyo yechitatu nhanho inoreva kutsigirwa kwekutanga, asi pasina otomatiki kuyedzwa, yekushambadzira official inovaka uye kutarisa kugona kuvaka kodhi.
  • Yakawedzerwa rutsigiro rwekubatanidza kune macOS Generic Libraries.

Pamusoro pezvo, isu tinogona kucherechedza kuisirwa muGCC codebase yepamberi-yekupedzisira compiler yeRust mutauro (gccrs). Iyo yekumberi inosanganisirwa mubazi reGCC 13, iro richaburitswa muna Chivabvu 2023. Kutanga neGCC 13, iyo yakajairwa GCC toolkit ichakwanisa kushandiswa kuunganidza Rust zvirongwa pasina chikonzero chekuisa rustc compiler yakavakwa uchishandisa LLVM budiriro. Iyo Rust kuita muGCC 13 ichave iri mubeta mamiriro, isingagoneswe nekusarudzika.

Source: opennet.ru

Voeg