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:
- Ƙarin buƙatun muhalli Linux a cikin mai tarawa, manajan kunshin Cargo, da kuma libstd na ɗakin karatu na yau da kullun, an ƙara mafi ƙarancin buƙatun Glibc daga sigar 2.11 zuwa 2.17, kuma ƙwayoyin suna da ƙarfi. Linux Daga sigar 2.6.32 zuwa 3.2. Hana waɗannan ƙuntatawa sun shafi ayyukan aiwatarwa na Rust da aka gina da libstd. RHEL 7, SLES 12-SP5, da sauran rarrabawa sun bi sabbin buƙatun. Debian 8 da Ubuntu 14.04. Za a daina tallafawa RHEL 6, SLES 11-SP4, Debian 7 da Ubuntu 12.04. Ga masu amfani waɗanda ke amfani da kayan aikin Rust waɗanda aka gina a cikin tsarin aiki a cikin mahalli tare da tsohuwar kernel Linux, ana ba da shawarar su haɓaka tsarin su, su ci gaba da kasancewa a kan tsofaffin fitowar mai tarawa, ko kuma su kula da reshen libstd ɗin su da kansu tare da masu haɗa layuka don kiyaye jituwa.
Daga cikin dalilan da suka sa aka daina tallafawa tsofaffin Linux-tsarin sun ambaci ƙarancin albarkatu don ci gaba da kiyaye jituwa da tsoffin yanayi. Tallafi ga tsofaffin Glibc yana buƙatar amfani da tsoffin kayan aiki lokacin duba tsarin haɗin kai na ci gaba, idan aka yi la'akari da ƙaruwar buƙatun sigar don kayan aikin LLVM da haɗin gwiwa. Ƙarin buƙatun sigar kernel ya faru ne saboda ikon amfani da sabbin kiran tsarin a cikin libstd ba tare da buƙatar kula da masu shiga tsakani don tabbatar da dacewa da tsoffin kernels ba.
- 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.
- A cikin ginin mai tarawa tsatsa don dandamali Windows An yi amfani da ingantawa na PGO (haɓaka jagora ta hanyar bayanin martaba), wanda ya ba da damar ƙara aikin tattara lambar 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
