Harshen shirye-shiryen tsatsa 1.57

An buga yaren shirye-shiryen tsarin Rust 1.57, wanda aikin Mozilla ya kafa, amma yanzu an haɓaka shi a ƙarƙashin inuwar ƙungiyar mai zaman kanta mai zaman kanta ta Rust Foundation. Harshen yana mai da hankali kan amincin ƙwaƙwalwar ajiya, yana ba da sarrafa ƙwaƙwalwar ajiya ta atomatik, kuma yana ba da hanyoyin samun daidaiton ɗawainiya mai girma ba tare da amfani da mai tara shara ko lokacin aiki ba (an rage lokacin aiki zuwa farawa na asali da kiyaye daidaitaccen ɗakin karatu).

Gudanar da ƙwaƙwalwar ajiya ta atomatik na Rust yana kawar da kurakurai yayin sarrafa masu nuni kuma yana ba da kariya daga matsalolin da suka taso daga ƙananan ƙananan ƙwaƙwalwar ajiya, kamar shiga yankin ƙwaƙwalwar ajiya bayan an 'yantar da shi, ɓangarorin null pointer, buffer overruns, da dai sauransu. Don rarraba ɗakunan karatu, tabbatar da taro da sarrafa abubuwan dogaro, aikin yana haɓaka manajan fakitin Cargo. Ana tallafawa ma'ajiyar crates.io don ɗaukar ɗakunan karatu.

Manyan sabbin abubuwa:

  • An daidaita amfani da macro na "firgita!" a cikin mahallin da aka ƙirƙira yayin haɗawa, kamar sanarwar "const fn". Bugu da ƙari, ban da amfani da "firgita!" furucin const yana ba da damar amfani da macro na "tabbata!" da wasu madaidaitan APIs na ɗakin karatu. Tsayawa bai riga ya rufe dukkan kayan aikin tsarawa ba, don haka a cikin tsarin sa na yanzu macro "firgita!" za a iya amfani da shi kawai tare da tsayayyen kirtani (firgita! ("..."))) ko tare da ƙima guda ɗaya da aka haɗa tare da "&str" lokacin maye gurbin (firgita!("{}", a)), wanda yakamata a iyakance ga maye gurbin "{} }" ba tare da tsara takamaiman bayanai da sauran nau'ikan ba. A nan gaba, za a faɗaɗa aikace-aikacen macros a cikin mahallin akai-akai, amma ƙarfin da aka daidaita ya riga ya isa don yin cak a matakin ƙaddamarwa: const _: () = tabbatarwa!(std:: mem:: size_of:: ()== 64); const _: () = tabbatar!(std:: mem:: size_of:: ()== 8);
  • Manajan fakitin Cargo yana ba da damar amfani da bayanan martaba tare da sunaye na sabani, ba'a iyakance ga "dev", "saki", "gwaji" da "bench". Misali, don ba da damar ingantawa a matakin haɗin gwiwa (LTO) kawai lokacin da aka samar da tarukan samfur na ƙarshe, zaku iya ƙirƙirar bayanan “sarrafa” a cikin Cargo.toml kuma ƙara alamar “lto = gaskiya” gare shi. Koyaya, lokacin bayyana bayanan bayanan ku, dole ne ku saka bayanin martaba da ke akwai don gadon saitunan tsoho daga gare ta. Misalin da ke ƙasa yana ƙirƙirar bayanin martaba na "samarwa" wanda ya dace da bayanin martabar "saki" ta haɗa da "lto = gaskiya" tutar. Ana kunna bayanin martaba da kanta ta hanyar kiran kaya tare da zaɓin "-profile production", kuma za'a sanya kayan tarihi na taro a cikin jagorar "manufa / samarwa". [profile.production] gaji = "saki" lto = gaskiya
  • An daidaita amfani da try_reserve don nau'ikan Vec, String, HashMap, HashSet da VecDeque, wanda ke ba ku damar adana sarari gaba gaba don takamaiman adadin abubuwan da aka bayar don rage yawan ayyukan rarraba ƙwaƙwalwar ajiya kuma ku guji. hadarurruka yayin aiki saboda rashin ƙwaƙwalwar ajiya.
  • An ba da izinin saka macros tare da takalmin gyaran kafa a cikin maganganu kamar "m!{ .. }.hanyar()" da "m!{ .. }?".
  • An inganta aikin Fayil :: read_to_end da read_to_string ayyuka.
  • An sabunta goyan bayan ƙayyadaddun Unicode zuwa sigar 14.0.
  • Fadada adadin ayyukan da aka yiwa alama "#[must_use]" don ba da gargaɗi idan an yi watsi da ƙimar dawowar, wanda ke taimakawa gano kurakuran da aka samu ta hanyar ɗauka cewa aikin zai canza ƙima maimakon dawo da sabon ƙima.
  • An ƙara ƙarshen gwaji don ƙirƙira lambar ta amfani da libgccjit.
  • An koma wani sabon yanki na API zuwa nau'in barga, gami da hanyoyin da aiwatar da halaye an daidaita su:
    • [T; N] :: as_mut_slice
    • [T; N] :: as_slice
    • tarin :: GwadaKuskuren Reserve
    • HashMap:: gwada_reserve
    • HashSet:: gwada_reserve
    • Zaure :: gwada_reserve
    • Zaure :: gwada_reserve_exact
    • Vec:: gwada_reserv
    • Vec:: gwada_reserve_exact
    • VecDeque:: gwada_reserve
    • VecDeque :: gwada_reserve_exact
    • Mai maimaita :: taswira_lokacin
    • ta :: MapYayin
    • proc_macro :: akwai_samuwa
    • Umurni ::samu_shirin
    • Umurni :: samu_args
    • Umurnin :: sami_envs
    • Umurni ::samu_current_dir
    • CommandArgs
    • CommandEnvs
  • Siffar "const", wanda ke ƙayyade ko za'a iya amfani da shi a kowane mahallin maimakon akai-akai, ana amfani da shi a cikin alamar aikin :: unreachable_unchecked.
  • An aiwatar da matakin tallafi na uku don armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi da armv7a-kmc- solid_asp3-eabihf dandamali. Mataki na uku ya ƙunshi tallafi na asali, amma ba tare da gwaji ta atomatik ba, buga ginin hukuma, ko duba ko za a iya gina lambar.

source: budenet.ru

Add a comment