Rust 1.64 Kutulutsa Chilankhulo cha Mapulogalamu

Chilankhulo chothandizira anthu ambiri Rust 1.64, chomwe chinakhazikitsidwa ndi polojekiti ya Mozilla koma tsopano chapangidwa mothandizidwa ndi bungwe lodziyimira pawokha lopanda phindu la Rust Foundation, chatulutsidwa. Chilankhulochi chimayang'ana kwambiri pachitetezo cha kukumbukira ndipo chimapereka njira zopezera kufananiza kwakukulu kwa ntchito ndikupewa kugwiritsa ntchito chotolera zinyalala ndi nthawi yothamanga (nthawi yothamanga imachepetsedwa kuti ikhale yoyambira ndikukonza laibulale yokhazikika).

Njira zogwiritsira ntchito kukumbukira za Rust zimapulumutsa wopanga ku zolakwika pamene akuwongolera zolozera ndikuteteza ku zovuta zomwe zimadza chifukwa cha kukumbukira kwapang'onopang'ono, monga kupeza malo okumbukira atamasulidwa, kuchotsa zolozera zopanda pake, ma buffer overruns, etc. Kugawira malaibulale, kupereka zomanga ndi kusamalira zodalira, pulojekitiyi imapanga woyang'anira phukusi la Cargo. Malo osungiramo crates.io amathandizidwa kuti azisunga malaibulale.

Kutetezedwa kwa Memory kumaperekedwa mu Rust panthawi yophatikiza kudzera pakuwunika, kuyang'anira umwini wa chinthu, kuyang'anira nthawi ya moyo wa chinthu (ma scopes), ndikuwunika kulondola kwa kukumbukira kukumbukira panthawi yopanga ma code. Dzimbiri limaperekanso chitetezo ku kusefukira kwazinthu zonse, kumafuna kukhazikitsidwa kovomerezeka kwa zinthu zosinthika musanagwiritse ntchito, kuwongolera zolakwika bwino mulaibulale yokhazikika, kumagwiritsa ntchito lingaliro la maumboni osasinthika ndi zosintha mwachisawawa, kumapereka zilembo zolimba kuti muchepetse zolakwika zomveka.

Zatsopano zazikulu:

  • Zofunikira pa chilengedwe cha Linux mu compiler, woyang'anira phukusi la Cargo ndi laibulale yanthawi zonse ya libstd zawonjezedwa - zofunikira zochepa za Glibc zakwezedwa kuchokera ku mtundu 2.11 mpaka 2.17, ndi Linux kernel kuchokera ku mtundu 2.6.32 mpaka 3.2. Zoletsazo zimagwiranso ntchito kwa Rust application executables yomangidwa ndi libstd. Zida zogawa RHEL 7, SLES 12-SP5, Debian 8 ndi Ubuntu 14.04 zimakwaniritsa zofunikira zatsopano. Thandizo la RHEL 6, SLES 11-SP4, Debian 7 ndi Ubuntu 12.04 lidzathetsedwa. Ogwiritsa ntchito omwe amagwiritsa ntchito Rust-built executables m'malo okhala ndi Linux kernel yakale amalimbikitsidwa kukweza makina awo, kukhalabe pazotulutsa zakale za compiler, kapena kusunga foloko yawo ya libstd yokhala ndi zigawo kuti zigwirizane.

    Zina mwazifukwa zothetsera chithandizo cha machitidwe akale a Linux ndizinthu zochepa zopititsira patsogolo kuyanjana ndi malo akale. Thandizo la cholowa cha Glibc limafuna kugwiritsa ntchito zida za cholowa mukamayang'ana njira yophatikizira mosalekeza, poyang'anizana ndi kuchuluka kwa zofunikira zamitundu mu LLVM ndi zida zophatikizira. Kuwonjezeka kwa zofunikira za mtundu wa kernel ndi chifukwa chotha kugwiritsa ntchito mafoni atsopano mu libstd popanda kufunikira kosunga zigawo kuti zitsimikizire kuti zimagwirizana ndi maso akale.

  • The IntoFuture trait yakhazikika, yomwe ikufanana ndi IntoIterator, koma imasiyana ndi yotsiriza pogwiritsa ntchito ".await" m'malo mwa "kwa ... mu ..." malupu. Zikaphatikizidwa ndi IntoFuture, mawu ofunikira ".await" sangayembekezere zamtsogolo zokha, komanso mitundu ina iliyonse yomwe ingasinthidwe kukhala Tsogolo.
  • Chida chowunikira dzimbiri chikuphatikizidwa mgulu lazinthu zomwe zimaperekedwa ndi Rust. Chidacho chiliponso pakuyika pogwiritsa ntchito rustup (rustup component add rust-analyzer).
  • Woyang'anira phukusi la Cargo amaphatikiza cholowa cha malo ogwirira ntchito kuti athetse kubwereza kwa zomwe wamba pakati pa phukusi, monga mitundu ya dzimbiri ndi ma URL osungira. Anawonjezeranso chithandizo chomangira nsanja zingapo nthawi imodzi (mutha kutchulanso magawo opitilira imodzi munjira ya "--target").
  • Gawo latsopano la API lasunthidwa ku gulu lokhazikika, kuphatikiza njira ndi kukhazikitsidwa kwa machitidwe akhazikika:
    • tsogolo::IntoFuture
    • nambala::NonZero*::checked_mul
    • nambala::NonZero*::checked_pow
    • nambala::NonZero*::saturating_mul
    • nambala::NonZero*::saturating_pow
    • nambala::NonZeroI*::abs
    • nambala::NonZeroI*::checked_abs
    • nambala::NonZeroI*::osefukira_abs
    • nambala::NonZeroI*::saturating_abs
    • nambala::NonZeroI*::osaina_abs
    • nambala::NonZeroI*::kukuta_abs
    • nambala::NonZeroU*::checked_add
    • nambala::NonZeroU*::checked_next_power_of_two
    • nambala::NonZeroU*::saturating_add
    • os::unix::process::CommandExt::process_group
    • os::windows::fs::FileTypeExt::is_symlink_dir
    • os::windows::fs::FileTypeExt::is_symlink_file
  • Mitundu yogwirizana ndi C, yomwe idakhazikika kale mu std :: ffi module, yawonjezedwa pachimake ndi laibulale ya alloc:
    • pachimake::ffi::CStr
    • pachimake::ffi::FromBytesWithNulError
    • alloc::ffi::CSstring
    • alloc::ffi::FromVecWithNulError
    • alloc::ffi::IntoStringError
    • alloc::ffi::NulError
  • Mitundu ya C yomwe idakhazikika kale mu std::os::module yaiwisi yawonjezedwa pachimake::ffi ndi std::ffi modules (mwachitsanzo, c_uint ndi c_ulong mitundu yaperekedwa kwa mitundu ya uint ndi ulong C):
    • ffi::c_cha
    • ffi::c_pawiri
    • ffi::c_kuyamika
    • ffi::c_ine
    • ffi::c_yaitali
    • ffi::c_yaitali
    • ffi::c_char
    • ffi::c_mwachidule
    • ffi::c_char
    • ffi::c_uwu
    • ffi::c_ulong
    • ffi::c_ulonglong
    • ffi::c_ufupi
  • Ogwira ntchito otsika akhazikika kuti agwiritsidwe ntchito ndi Poll mechanism (m'tsogolomu ikukonzekera kupereka API yophweka yomwe siifuna kugwiritsa ntchito zipangizo zotsika kwambiri monga Kukoka ndi Pin):

    • tsogolo::poll_fn
    • ntchito::yakonzeka!
  • Lingaliro la "const", lomwe limatsimikizira kuthekera kogwiritsa ntchito mwanjira iliyonse m'malo mokhazikika, limagwiritsidwa ntchito mugawo ::kuchokera_ku_raw_parts ntchito.
  • Kuti musunge zambiri molumikizana, mawonekedwe a kukumbukira a Ipv4Addr, Ipv6Addr, SocketAddrV4 ndi SocketAddrV6 asinthidwa. Pakhoza kukhala vuto logwirizana ndi mapaketi a crate amodzi omwe amagwiritsa ntchito std::mem::transmute pakuwongolera kwapang'onopang'ono kwa zomanga.
  • Kumanga kwa dzimbiri compiler kwa Windows nsanja amagwiritsa ntchito PGO optimizations (mbiri-wotsogozedwa kukhathamiritsa), zomwe zinachititsa kuti kuonjezera ntchito kuphatikizira code ndi 10-20%.
  • Wopangayo wakhazikitsa chenjezo latsopano lokhudza minda yosagwiritsidwa ntchito muzinthu zina.

Kuphatikiza apo, mutha kuwona lipoti la momwe mungakhazikitsire njira ina yophatikizira chinenero cha Rust, yokonzedwa ndi pulojekiti ya gccrs (GCC Rust) ndikuvomerezedwa kuti ikhale mu GCC. Pambuyo pophatikiza kutsogolo, zida zodziwika bwino za GCC zitha kugwiritsidwa ntchito kupanga mapulogalamu m'chinenero cha Rust popanda kufunikira koyika rustc compiler, yomangidwa pogwiritsa ntchito chitukuko cha LLVM. Malingana ngati chitukuko chikuyenda bwino, ndikuletsa mavuto osayembekezereka, Rust frontend idzaphatikizidwa ku GCC 13 kumasulidwa kokonzekera May chaka chamawa. Kukhazikitsa kwa GCC 13 kwa Rust kudzakhala mu beta, osayatsidwa mwachisawawa.

Source: opennet.ru

Kuwonjezera ndemanga