Harshen shirye-shiryen tsatsa 1.66

An buga yaren shirye-shirye na Rust 1.66 na gabaɗaya, wanda aikin Mozilla ya kafa, amma yanzu an haɓaka shi a ƙarƙashin inuwar wata kungiya mai zaman kanta mai zaman kanta ta Rust Foundation. Harshen yana mai da hankali kan amincin ƙwaƙwalwar ajiya kuma yana ba da hanyoyin cimma babban daidaiton aiki yayin guje wa yin amfani da mai tara shara da lokacin aiki (an rage lokacin aiki zuwa farawa na asali da kiyaye daidaitaccen ɗakin karatu).

Hanyoyin sarrafa ƙwaƙwalwar Rust suna ceton mai haɓakawa daga kurakurai yayin sarrafa masu nuni da kuma kariya daga matsalolin da suka taso saboda ƙarancin kulawar ƙwaƙwalwar ajiya, kamar samun damar wurin ƙwaƙwalwar ajiya bayan an 'yantar da shi, cire maƙasudin null, buffer overruns, da dai sauransu. Don rarraba ɗakunan karatu, samar da gini da sarrafa abubuwan dogaro, aikin yana haɓaka manajan fakitin Kaya. Ana tallafawa ma'ajiyar crates.io don ɗaukar ɗakunan karatu.

Ana ba da amincin ƙwaƙwalwar ajiya a cikin Tsatsa a lokacin tattarawa ta hanyar duba tunani, kiyaye bin diddigin mallakar abu, kiyaye tsawon rayuwa (masu iyawa), da tantance daidaiton damar ƙwaƙwalwar ajiya yayin aiwatar da lambar. Tsatsa kuma yana ba da kariya daga ambaliya mai lamba, yana buƙatar ƙaddamar da ƙima mai mahimmanci kafin amfani, yana sarrafa kurakurai mafi kyau a cikin daidaitaccen ɗakin karatu, yana amfani da ra'ayi na nassoshi marasa canzawa da masu canji ta tsohuwa, yana ba da buga rubutu mai ƙarfi don rage kurakurai masu ma'ana.

Manyan sabbin abubuwa:

  • A cikin ƙididdigewa tare da wakilcin lamba (sifa ta "#[repr(Int)]", an ba da izinin nuna bambanci (lambar bambance-bambancen a cikin ƙidayar), koda kuwa lissafin ya ƙunshi filaye. #[repr(u8)] enum Foo {A(u8), # wariya 0 B(i8), # wariya 1 C (bool) = 42, # wariya 42}
  • Babban aikin da aka ƙara :: ambato :: black_box wanda kawai ke dawo da ƙimar da aka karɓa. Tun da mai tarawa yana tunanin cewa wannan aikin yana yin wani abu, ana iya amfani da aikin black_box don musaki ingantawar mahaɗa don madaukai lokacin yin gwajin aikin lambar ko lokacin nazarin lambar injin da aka samar (don kada mai tarawa yayi la'akari da lambar da ba a yi amfani da ita ba kuma cire shi). Misali, a cikin misalin da ke ƙasa, black_box (v.as_ptr()) yana hana mai tarawa tunanin cewa ba a amfani da vector v. amfani da std :: ambato :: black_box; fn push_cap (v: &mut Vec) {na i a cikin 0..4 {v.push(i); black_box(v.as_ptr()); } }
  • Manajan kunshin "kaya" yana ba da umarnin "cire", wanda ke ba ku damar cire abin dogaro daga bayanan Cargo.toml daga layin umarni.
  • An koma wani sabon yanki na API zuwa nau'in barga, gami da hanyoyin da aiwatar da halaye an daidaita su:
    • proc_macro :: Span :: source_text
    • u *:: {aka duba_add_signed, sa hannu mai cika_ciki, saturating_add_signed, wrapping_add_signed}
    • i*::{a duba_add_ba a sanya hannu ba, cika_ba a sanya hannu ba, ba a sanya hannu ba, ba a sanya hannu ba, wrapping_add_unsigned}
    • i*::{a duba_sub_unsigned, ambaliya_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet:: {na farko, na ƙarshe, pop_first, pop_last}
    • BTreeMap :: {ƙimar_key_farko, ƙimar_key_ƙarshe, shigarwar_farko, shigarwar_ƙarshe, pop_first, pop_last}
    • Ƙara abubuwan aiwatarwa na AsFd don nau'ikan kulle stdio lokacin amfani da WASI.
    • impl TryFrom > na Akwati<[T; N]>
    • core :: ambato :: black_box
    • Duration:: gwada_dakika_{f32,f64}
    • Zabin:: cire zip
    • std::fd
  • Ana ba da izinin jeri "..X" da "..=X" a cikin samfuri.
  • Lokacin gina ƙarshen gaban rustc compiler da LLVM backend, LTO (Link Time Optimization) da BOLT (Binary Optimization and Layout Tool) ana amfani da hanyoyin ingantawa don haɓaka aikin lambar da aka samu da rage yawan ƙwaƙwalwar ajiya.
  • Tallafin matakin 5 da aka aiwatar don dandamalin armv5te-none-eabi da thumbvXNUMXte-babu-eabi. Mataki na uku yana nuna goyon baya na asali, amma ba tare da gwaji ta atomatik ba, wallafe-wallafen yana ginawa da bincika ikon gina lambar.
  • Ƙara goyon baya don haɗi zuwa MacOS Generic Libraries.

Bugu da ƙari, za mu iya lura da haɗawa a cikin GCC codebase na gaba-gaba mai tara harshen Rust (gccrs). An haɗa gaban gaba a cikin GCC 13 reshen, wanda za a fito a watan Mayu 2023. An fara da GCC 13, daidaitaccen kayan aikin GCC za a iya amfani da shi don haɗa shirye-shiryen Rust ba tare da buƙatar shigar da rustc compiler da aka gina ta amfani da ci gaban LLVM ba. Aiwatar da Tsatsa a cikin GCC 13 zai kasance a matsayin beta, ba a kunna ta ta tsohuwa ba.

source: budenet.ru

Add a comment