Rust 1.64 Ukukhishwa Kolimi Lokuhlela

Ulimi lokuhlela lwenhloso evamile i-Rust 1.64, olwasungulwa iphrojekthi ye-Mozilla kodwa manje oluthuthukiswe ngaphansi kwenhlangano ezimele engenzi nzuzo i-Rust Foundation, lukhululiwe. Ulimi lugxile ekuphepheni kwenkumbulo futhi luhlinzeka ngezindlela zokuzuza ukufana kwemisebenzi ephezulu kuyilapho ugwema ukusetshenziswa komqoqi kadoti nesikhathi sokusebenza (isikhathi sokusebenza sincishiselwa ekuqaliseni okuyisisekelo nasekunakekeleni umtapo wolwazi ojwayelekile).

Izindlela zokuphatha inkumbulo kaRust zisindisa unjiniyela emaphutheni lapho eshintsha izikhombi futhi avikele ezinkingeni eziphakama ngenxa yokuphatha inkumbulo esezingeni eliphansi, njengokufinyelela indawo yenkumbulo ngemva kokuba ikhululiwe, ukuhoxisa izikhombi ezingenalutho, ukugcwala kwebhafa, njll. Ukuze kusatshalaliswe imitapo yolwazi, ukuhlinzeka ngokwakha nokuphatha okuncikile, iphrojekthi ithuthukisa umphathi wephakheji ye-Cargo. Inqolobane ye-crates.io isekelwe ekusingatheni imitapo yolwazi.

Ukuphepha kwenkumbulo kunikezwa ku-Rust ngesikhathi sokuhlanganiswa ngokuhlolwa kwereferensi, ukulandelela ubunikazi bento, ukulandelela isikhathi sokuphila kwento (izikophu), nokuhlola ukulunga kokufinyelela inkumbulo ngesikhathi sokwenziwa kwekhodi. I-Rust iphinde inikeze isivikelo ekuchichimeni okuphelele, idinga ukuqaliswa okuyisibopho kwamanani ahlukahlukene ngaphambi kokusetshenziswa, iphatha amaphutha kangcono kulabhulali evamile, isebenzisa umqondo wezithenjwa ezingaguquleki nokuguquguqukayo ngokuzenzakalelayo, inikeza ukuthayipha okuqinile okuqinile ukuze kuncishiswe amaphutha anengqondo.

Okuqanjiwe okuyinhloko:

  • Izidingo zemvelo ye-Linux kumdidiyeli, umphathi wephakheji ye-Cargo kanye nomtapo wolwazi ojwayelekile we-libstd zinyusiwe - izimfuneko eziphansi ze-Glibc zinyusiwe zisuka kunguqulo 2.11 zaya ku-2.17, kanye ne-Linux kernel zisuka kunguqulo 2.6.32 zaya ku-3.2. Imikhawulo iphinde isebenze kokusebenzisekayo kwe-Rust application eyakhelwe nge-libstd. Amakhithi okusabalalisa i-RHEL 7, SLES 12-SP5, Debian 8 kanye ne-Ubuntu 14.04 ahlangabezana nezidingo ezintsha. Ukusekelwa kwe-RHEL 6, SLES 11-SP4, Debian 7 kanye ne-Ubuntu 12.04 kuzonqanyulwa. Abasebenzisi abasebenzisa okusebenzisekayo okwakhelwe ku-Rust ezindaweni ezine-Linux kernel endala bayakhuthazwa ukuthi bathuthukise amasistimu abo, bahlale ekukhishweni okudala kokuhlanganisa, noma bagcine eyabo imfoloko ye-libstd enezendlalelo ukuze bagcine ukuhambisana.

    Phakathi kwezizathu zokuqeda ukusekelwa kwezinhlelo ze-Linux ezindala yizinsiza ezinomkhawulo zokuqhubeka nokugcina ukuhambisana nezindawo ezindala. Ukusekelwa kwe-Glibc yefa kudinga ukusetshenziswa kwamathuluzi efa lapho kuhlolwa isistimu yokuhlanganisa eqhubekayo, lapho kubhekwa izimfuneko ezikhulayo zenguqulo ku-LLVM kanye nezinsiza ezihlanganisayo. Ukwenyuka kwezidingo zenguqulo ye-kernel kungenxa yekhono lokusebenzisa amakholi wesistimu entsha ku-libstd ngaphandle kwesidingo sokugcina izendlalelo ukuze kuqinisekiswe ukuhambisana nama-kernel amadala.

  • Isici se-IntoFuture isizinzisiwe, esifana ne-IntoIterator, kodwa yehluka kokugcina ngokusebenzisa okuthi β€œ.await” esikhundleni sokuthi β€œfor ... in ...” amalophu. Uma lihlanganiswa ne-IntoFuture, igama elingukhiye elithi ".await" alikwazi ukulindela kuphela isici Sekusasa, kodwa nanoma yiziphi ezinye izinhlobo ezingaguqulelwa ekubeni Ikusasa.
  • Insiza ye-rust-analyzer ifakiwe eqoqweni lezinsiza ezinikezwe ngokukhishwa kwe-Rust. Insiza iyatholakala futhi ukuze ifakwe kusetshenziswa i-rustup (i-rustup component add rust-analyzer).
  • Umphathi wephakheji le-Cargo uhlanganisa ifa lendawo yokusebenza ukuze kususwe ukuphindwaphindwa kwamanani enkambu evamile phakathi kwamaphakheji, njengezinguqulo ze-Rust nama-URL ekhosombe. Kungezwe futhi usekelo lokwakha izinkundla ezimbalwa eziqondiwe ngesikhathi esisodwa (manje ungacacisa ipharamitha engaphezu kweyodwa kunketho ethi β€œ--target”).
  • Ingxenye entsha ye-API iyiswe esigabeni sokuzinza, okuhlanganisa izindlela nokusetshenziswa kwezimpawu kuzinzile:
    • esizayo::IntoFuture
    • inombolo::NonZero*::checked_mul
    • inombolo::NonZero*::checked_pow
    • inombolo::NonZero*::saturating_mul
    • inombolo::NonZero*::saturating_pow
    • inombolo::NonZeroI*::abs
    • inombolo::NonZeroI*::checked_abs
    • inombolo::NonZeroI*::chichima_abs
    • inombolo::NonZeroI*::saturating_abs
    • inombolo::NonZeroI*::abs_engabhalisiwe
    • inombolo::NonZeroI*::ukugoqa_abs
    • inombolo::NonZeroU*::kuhloliwe_engeza
    • inombolo::NonZeroU*::kuhloliwe_amandla_alandelayo_e_okubili
    • inombolo::NonZeroU*::engeza_okusuthisayo
    • os::unix::process::CommandExt::process_group
    • os::windows::fs::FileTypeExt::is_symlink_dir
    • os::windows::fs::FileTypeExt::is_symlink_file
  • Izinhlobo ezihambisana no-C, ebezizinziswe ngaphambilini kumojula ye-std::ffi, zengezwe kumongo kanye nelabhulali ye-alloc:
    • ingqikithi::ffi::CStr
    • core::ffi::FromBytesWithNulError
    • i-alloc::ffi::CSstring
    • i-alloc::ffi::FromVecWithNulError
    • i-alloc::ffi::IntoStringError
    • i-alloc::ffi::NulError
  • Izinhlobo ezingu-C ebezizinziswe ngaphambilini ku-std::os::module ye-raw yengezwe kumongo::ffi kanye namamojula we-std::ffi (isibonelo, izinhlobo ze-c_uint ne-c_ulong ziphakanyiselwe izinhlobo ze-uint ne-ulong C):
    • ffi::c_char
    • ffi::c_kabili
    • ffi::c_ntanta
    • ffi::c_int
    • ffi::c_inde
    • ffi::c_inde
    • ffi::c_char
    • ffi::c_mfushane
    • ffi::c_uchar
    • ffi::c_uint
    • ffi::c_ulong
    • ffi::c_ulonglong
    • ffi::c_ushort
  • Izibambi zezinga eliphansi zizinzile ukuze zisetshenziswe ngomshini we-Poll (ngokuzayo kuhlelwe ukuhlinzeka nge-API eyenziwe lula engadingi ukusetshenziswa kwezakhiwo ezisezingeni eliphansi ezifana ne-Pull and Pin):

    • esizayo::poll_fn
    • umsebenzi::ulungile!
  • Isibaluli esithi β€œconst”, esinquma ukuthi kungenzeka yini ukusisebenzisa kunoma imuphi umongo esikhundleni sama-constants, sisetshenziswa kucezu::kusuka_kumsebenzi_wezingxenye.
  • Ukuze ugcine idatha ngokuqoqeka, ukwakheka kwememori yezakhiwo ze-Ipv4Addr, Ipv6Addr, SocketAddrV4 kanye ne-SocketAddrV6 kushintshiwe. Kungase kube nenkinga yokuhambisana namaphakheji ekhreyithi elilodwa asebenzisa i-std::mem::transmute ekuguquleni izinga eliphansi lezakhiwo.
  • Ukwakhiwa kwe-rust compiler yesikhulumi se-Windows kusebenzisa ukulungiselelwa kwe-PGO (ukuthuthukiswa okuqondiswa iphrofayela), okwenze kwaba nokwenzeka ukwandisa ukusebenza kokuhlanganiswa kwekhodi ngo-10-20%.
  • Umhlanganisi usebenzise isexwayiso esisha mayelana nezinkambu ezingasetshenzisiwe ezakhiweni ezithile.

Ukwengeza, ungakwazi ukuqaphela umbiko wesimo mayelana nokuthuthukiswa kokunye ukuqaliswa kwe-Rust language compiler, elungiswe iphrojekthi ye-gccrs (GCC Rust) futhi yagunyazwa ukufakwa ku-GCC. Ngemva kokuhlanganisa i-frontend, amathuluzi ajwayelekile e-GCC angasetshenziswa ukuhlanganisa izinhlelo ngolimi lwe-Rust ngaphandle kwesidingo sokufaka i-rustc compiler, eyakhelwe kusetshenziswa ukuthuthukiswa kwe-LLVM. Uma nje intuthuko isahamba ngendlela, futhi ivimbela noma yiziphi izinkinga ezingalindelekile, i-Rust frontend izohlanganiswa nokukhululwa kwe-GCC 13 okuhlelelwe uMeyi wonyaka ozayo. Ukuqaliswa kwe-GCC 13 kwe-Rust kuzoba sesimweni se-beta, okungakanikwa amandla ngokuzenzakalela.

Source: opennet.ru

Engeza amazwana