Harshen shirye-shiryen tsatsa 1.64

An buga yaren shirye-shirye na Rust 1.64 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:

  • Abubuwan buƙatun don yanayin Linux a cikin mai tarawa, mai sarrafa fakitin Cargo da daidaitaccen ɗakin karatu na libstd an haɓaka su - an haɓaka mafi ƙarancin buƙatun Glibc daga sigar 2.11 zuwa 2.17, da Linux kernel daga sigar 2.6.32 zuwa 3.2. Har ila yau, hani ya shafi aikace-aikacen Rust da aka gina tare da libstd. Kayan rarraba RHEL 7, SLES 12-SP5, Debian 8 da Ubuntu 14.04 sun cika sabbin buƙatu. Taimakon RHEL 6, SLES 11-SP4, Debian 7 da Ubuntu 12.04 za a daina. Masu amfani waɗanda ke amfani da tsatsa-gina masu aiwatarwa a cikin mahalli tare da tsofaffin kwaya na Linux ana ƙarfafa su haɓaka tsarin su, su tsaya kan tsofaffin abubuwan mai tarawa, ko kiyaye cokali mai yatsu na libstd tare da yadudduka don kiyaye dacewa.

    Daga cikin dalilan kawo karshen goyon baya ga tsofaffin tsarin Linux akwai iyakataccen albarkatu don ci gaba da dacewa da tsofaffin mahalli. Taimako don Glibc na gado yana buƙatar amfani da kayan aikin gado lokacin dubawa a cikin tsarin haɗin kai mai ci gaba, ta fuskar haɓaka buƙatun sigar a cikin LLVM da abubuwan haɗin giciye. Haɓaka buƙatun sigar kernel saboda ikon amfani da sabon tsarin kira a cikin libstd ba tare da buƙatar kula da yadudduka ba don tabbatar da dacewa da tsofaffin kernels.

  • An daidaita yanayin IntoFuture, wanda yayi kama da IntoIterator, amma ya bambanta da na ƙarshe ta amfani da ". jira" maimakon "don ... a ..." madaukai. Lokacin da aka haɗa tare da IntoFuture, kalmar ".await" na iya tsammanin ba kawai halin gaba ba, har ma da kowane nau'in da za a iya canzawa zuwa gaba.
  • Ana haɗa kayan aikin tsatsa-analyzer a cikin tarin kayan aikin da aka samar tare da sakin tsatsa. Hakanan ana samun mai amfani don shigarwa ta amfani da rustup (ɓangaren rustup ƙara tsatsa-analyzer).
  • Manajan fakitin kaya ya haɗa da gadon wurin aiki don kawar da kwafi na ƙimar filin gama gari tsakanin fakiti, kamar sigar Rust da URLs maajiyar. Hakanan an ƙara goyan baya don gina dandamali masu niyya da yawa a lokaci ɗaya (yanzu zaku iya ƙididdige sigina fiye da ɗaya a cikin zaɓin "--target").
  • An koma wani sabon yanki na API zuwa nau'in barga, gami da hanyoyin da aiwatar da halaye an daidaita su:
    • nan gaba ::IntoFuture
    • num :: NonZero*:: checked_mul
    • num :: NonZero* :: checked_pow
    • num::NonZero*::saturating_mul
    • lamba ::NonZero*::saturating_pow
    • num:: NonZeroI*:: abs
    • num :: NonZeroI* :: checked_abs
    • num :: NonZeroI* :: ambaliya_abs
    • num :: NonZeroI*:: saturating_abs
    • num :: NonZeroI* :: unsigned_abs
    • num :: NonZeroI* :: wrapping_abs
    • num :: NonZeroU*:: checked_add
    • num :: NonZeroU* :: an duba_ba_ikon_biyu
    • num ::NonZeroU*::saturating_add
    • os:: unix:: tsari::CommandExt::process_group
    • os :: windows :: fs :: FileTypeExt :: is_symlink_dir
    • os :: windows :: fs :: FileTypeExt :: is_symlink_file
  • Nau'o'in da suka dace da C, waɗanda a baya aka daidaita su a cikin std :: ffi module, an ƙara su zuwa ainihin da ɗakin karatu na alloc:
    • core::ffi::CStr
    • core :: ffi :: DagaBytesWithNulError
    • alloc::ffi::CString
    • alloc :: ffi :: DagaVecWithNulError
    • Alloc :: ffi :: Kuskuren Shiga
    • alloc::ffi::NulError
  • Nau'ikan C da aka daidaita a baya a cikin std :: os :: raw module an ƙara su zuwa ainihin :: ffi da std :: ffi modules (misali, nau'ikan c_uint da c_ulong an gabatar da su don nau'ikan uint da ulong C):
    • ffi::c_char
    • ffi::c_biyu
    • ffi::c_tawo
    • ffi::c_int
    • ffi::c_dogon
    • ffi::c_dogon
    • ffi::c_schar
    • ffi::c_gajere
    • ffi::c_uchar
    • ffi::c_uint
    • ffi::c_ulong
    • ffi::c_ulong
    • ffi::c_ushort
  • An daidaita ma'aikatan ƙananan matakan don amfani tare da tsarin Zaɓe (a nan gaba ana shirin samar da API mai sauƙi wanda baya buƙatar yin amfani da ƙananan matakai kamar Pull da Pin):

    • nan gaba:: zabe_fn
    • aiki:: shirye!
  • Ana amfani da sifa "const", wanda ke ƙayyade yiwuwar amfani da shi a kowane mahallin maimakon madaidaicin, a cikin yanki :: daga aikin_raw_parts.
  • Don ƙarin ƙayyadaddun adana bayanai, an canza shimfidar ƙwaƙwalwar ajiyar Ipv4Addr, Ipv6Addr, SocketAddrV4 da SocketAddrV6. Ana iya samun batun dacewa tare da fakitin akwatuna guda ɗaya waɗanda ke amfani da std :: mem :: transmute don sarrafa ƙananan matakan tsari.
  • Gina mai tara tsatsa don dandamali na Windows yana amfani da haɓakawa na PGO (ingantaccen ingantaccen bayanin martaba), wanda ya ba da damar haɓaka ayyukan tattara lambobin da kashi 10-20%.
  • Mai tarawa ya aiwatar da sabon gargaɗi game da filayen da ba a yi amfani da su ba a wasu sifofi.

Bugu da ƙari, za ku iya lura da rahoton matsayi kan haɓaka madadin aiwatar da mai tara harshe na Rust, wanda aikin gccrs (GCC Rust) ya shirya kuma an amince da shi don haɗawa a cikin GCC. Bayan haɗawar gaba, ana iya amfani da daidaitattun kayan aikin GCC don haɗa shirye-shirye a cikin yaren Rust ba tare da buƙatar shigar da rustc compiler ba, wanda aka gina ta amfani da ci gaban LLVM. Muddin ci gaba yana kan hanya, kuma yana hana duk wasu matsalolin da ba a sani ba, Rust frontend za a haɗa shi cikin sakin GCC 13 da aka shirya don Mayu shekara mai zuwa. GCC 13 aiwatar da Rust zai kasance a matsayin beta, har yanzu ba a kunna ta ta tsohuwa ba.

source: budenet.ru

Add a comment