Rust 1.64 Chirongwa Mutauro Kuburitswa

Mutauro wehurongwa hwese-chinangwa Rust 1.64, wakavambwa neMozilla purojekiti asi ikozvino wakagadziridzwa pasi perubatsiro rwesangano rakazvimirira rerust Foundation, raburitswa. Mutauro unotarisana nekuchengetedza ndangariro uye unopa nzira dzekuwana yakakwirira basa parallelism uchidzivirira kushandiswa kwemarara uye nguva yekumhanya (nguva yekumhanya inoderedzwa kusvika yekutanga yekutanga uye kugadzirisa raibhurari yakajairwa).

Rust's memory yekubata nzira dzinochengetedza mugadziri kubva mukukanganisa kana achibata anonongedzera uye kudzivirira kubva kumatambudziko anomuka nekuda kweakadzika-level ndangariro kubata, sekuwana nzvimbo yekurangarira mushure mekunge yasunungurwa, kudzoreredza null pointer, buffer overruns, nezvimwe. Kugovera maraibhurari, kupa kuvaka uye kugadzirisa zvinotsamira, purojekiti inovandudza Cargo package maneja. Iyo crates.io repository inotsigirwa kuitisa maraibhurari.

Kuchengetedzwa kwendangariro kunopihwa muRust panguva yekuunganidza kuburikidza nekutariswa kwekutarisa, kuchengeta track yemuridzi wechinhu, kuchengeta track yehupenyu hwechinhu (scopes), uye kuongorora iko kurongeka kwekuwana ndangariro panguva yekuita kodhi. Ngura inopawo dziviriro kubva pahuwandu hwekufashukira, inoda kusungirirwa kwekutanga kwemhando dzakasiyana usati washandiswa, inobata zvikanganiso zviri nani muraibhurari yakajairwa, inoshandisa iyo pfungwa yezvisingachinjiki mareferensi uye zvinosiyana nekusarudzika, inopa yakasimba static typing kuderedza zvikanganiso zvine musoro.

Zvitsva zvikuru:

  • Zvinodiwa zvenzvimbo yeLinux mumubatanidzwa, Cargo package maneja uye libstd standard raibhurari zvawedzerwa - izvo zvishoma zvinodiwa zveGlibc zvakasimudzwa kubva muvhezheni 2.11 kusvika 2.17, uye Linux kernel kubva muvhezheni 2.6.32 kusvika 3.2. Izvo zvirambidzo zvinoshandawo kune Rust application executables yakavakwa ne libstd. Iyo yekugovera kits RHEL 7, SLES 12-SP5, Debian 8 uye Ubuntu 14.04 inosangana nezvinodiwa zvitsva. Tsigiro yeRHEL 6, SLES 11-SP4, Debian 7 uye Ubuntu 12.04 ichamiswa. Vashandisi vanoshandisa Rust-yakavakwa executable munzvimbo dzine Linux kernel yakura vanokurudzirwa kukwidziridza masisitimu avo, kugara pane ekare kuburitswa kwemuunganidzi, kana kuchengetedza yavo libstd forogo ine zvidimbu kuchengetedza kuenderana.

    Pakati pezvikonzero zvekugumisa kutsigirwa kwevakuru Linux masisitimu ane mashoma zviwanikwa zvekuenderera nekuchengetedza kuenderana nenzvimbo dzechikuru. Tsigiro yenhaka Glibc inoda kushandiswa kwemidziyo yenhaka kana uchitarisa mune inoenderera mberi yekubatanidza sisitimu, takatarisana nekuwedzera kweshanduro zvinodiwa muLLVM uye muchinjika-kuunganidza zvinoshandiswa. Kuwedzera kweiyo kernel vhezheni zvinodiwa imhaka yekugona kushandisa nyowani system inofona mu libstd pasina kukosha kwekuchengetedza maseru kuti ive nechokwadi chekuenderana nekare kernels.

  • The IntoFuture trait yakagadziriswa, iyo yakafanana neIntoIterator, asi inosiyana kubva kune yekupedzisira nekushandisa ".await" pachinzvimbo chekuti "ku ... mu ... " zvishwe. Kana yasanganiswa neIntoFuture, izwi rekuti ".await" rinogona kutarisira kwete chimiro cheRamangwana chete, asiwo chero mamwe marudzi anogona kushandurwa kuita Ramangwana.
  • Iyo rust-analyzer utility inosanganisirwa muunganidzwa wezvishandiso zvakapihwa Rust kuburitswa. Iyo yekushandisa inowanikwawo yekumisikidza uchishandisa rustup (rustup chikamu wedzera ngura-analyzer).
  • Iyo Cargo package maneja inosanganisira yebasa rekugara nhaka kubvisa kudzokororwa kweakajairwa munda tsika pakati pemapakeji, senge Rust shanduro uye repository URLs. Yakawedzerawo rutsigiro rwekuvaka kune akati wandei anonangwa mapuratifomu kamwechete (iwe unogona ikozvino kutsanangura anopfuura imwe parameter mune "--chinangwa" sarudzo).
  • Chikamu chitsva cheAPI chakaendeswa kuchikamu cheyakagadzikana, kusanganisira nzira uye mashandisirwo ehunhu zvakadzikamiswa:
    • ramangwana ::IntoFuture
    • nhamba::NonZero*::checked_mul
    • nhamba::NonZero*::checked_pow
    • nhamba::NonZero*::saturating_mul
    • nhamba::NonZero*::saturating_pow
    • nhamba::NonZeroI*::abs
    • nhamba::NonZeroI*::checked_abs
    • nhamba::NonZeroI*::fashukira_abs
    • nhamba::NonZeroI*::saturating_abs
    • nhamba::NonZeroI*::unsigned_abs
    • nhamba::NonZeroI*::kupeta_abs
    • nhamba::NonZeroU*::checked_add
    • nhamba::NonZeroU*::checked_next_power_of_two
    • nhamba::NonZeroU*::inogutsa_wedzera
    • os::unix::process::CommandExt::process_group
    • os::mahwindo::fs::FileTypeExt::is_symlink_dir
    • os::windows::fs::FileTypeExt::is_symlink_file
  • C-inoenderana mhando, yakambodzikamiswa muiyo std :: ffi module, yakawedzerwa kune yakakosha uye alloc raibhurari:
    • musimboti::ffi::Cstr
    • musimboti::ffi::FromBytesWithNulError
    • alloc::ffi::CSstring
    • alloc::ffi::FromVecWithNulError
    • alloc::ffi::IntoStringError
    • alloc::ffi::NulError
  • C mhando dzakambogadziriswa mu std :: os :: raw module yakawedzerwa kune musimboti :: ffi uye std :: ffi modules (semuenzaniso, c_uint uye c_ulong mhando dzakarongedzerwa kune uint uye ulong C marudzi):
    • ffi::c_char
    • ffi::c_double
    • ffi::c_float
    • ffi::c_int
    • ffi::c_refu
    • ffi::c_refu
    • ffi::c_schar
    • ffi::c_pfupi
    • ffi::c_uchar
    • ffi::c_uint
    • ffi::c_urefu
    • ffi::c_ulonglong
    • ffi::c_ushort
  • Vabati vepasi-pasi vakagadziriswa kuti vashandise nePoll mechanism (munguva yemberi yakarongwa kupa API yakareruka isingade kushandiswa kwezvimiro zvepasi-pasi seDhonza nePini):

    • ramangwana::poll_fn
    • basa::wakagadzirira!
  • Iyo "const" hunhu, iyo inosarudza mukana wekuishandisa mune chero mamiriro pachinzvimbo chekugara, inoshandiswa muchidimbu ::kubva_raw_parts basa.
  • Kuti uwedzere kuchengetedza data, iyo ndangariro dhizaini yeIpv4Addr, Ipv6Addr, SocketAddrV4 uye SocketAddrV6 zvimiro zvashandurwa. Panogona kunge paine nyaya yekuenderana ine imwechete crate mapakeji anoshandisa std :: mem:: transmute kune yakaderera-level manipulation ezvivakwa.
  • Kuvakwa kwerust compiler yeWindows platform inoshandisa PGO optimizations (profile-guided optimization), izvo zvakaita kuti zvikwanise kuwedzera kodhi yekubatanidza kuita ne10-20%.
  • Iyo compiler yaita yambiro nyowani nezve minda isina kushandiswa mune zvimwe zvimiro.

Pamusoro pezvo, iwe unogona kucherechedza chimiro chemushumo pakuvandudzwa kweimwe nzira yekuitwa yeRust mutauro compiler, yakagadzirwa neiyo gccrs purojekiti (GCC Rust) uye yakatenderwa kuti iiswe muGCC. Mushure mekubatanidza kumberi, maturusi eGCC akajairwa anogona kushandiswa kuunganidza zvirongwa mumutauro weRust pasina chikonzero chekuisa rustc compiler, yakavakwa uchishandisa LLVM budiriro. Chero bedzi budiriro iri munzira, uye ichidzivirira chero matambudziko asingatarisirwe, iyo Rust frontend ichabatanidzwa mukuburitswa kweGCC 13 kwakarongerwa Chivabvu gore rinouya. Iyo GCC 13 yekuitwa kweRust ichave iri mubeta mamiriro, haisati yagoneswa nekusarudzika.

Source: opennet.ru

Voeg