Kuburitswa kweRust 1.59 programming mutauro nerutsigiro rwekuisa magungano

Mutauro wehurongwa hwese-chinangwa Rust 1.59, 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:

  • Zvinogoneka kushandisa kuiswa kwemutauro wegungano, izvo zviri kudiwa mumashandisirwo anoda kudzora kuurayiwa padanho rakaderera kana kukwanisa kushandisa mirairo yemuchina. Kuiswa kweGungano kunowedzerwa uchishandisa macros "asm!" uye "global_asm!" uchishandisa tambo yekumisikidza syntax yekupa mazita marejista akafanana neanoshandiswa kutsiva tambo muRust. Iyo compiler inotsigira mirairo yegungano ye x86, x86-64, ARM, AArch64 uye RISC-V zvivakwa. Muenzaniso wekupinza: shandisa std::arch::asm; // Wanza x ne6 uchishandisa mashifiti uye anowedzera let mut x: u64 = 4; zvisina kuchengeteka {asm!("mov {tmp}, {x}", "shl {tmp}, 1", "shl {x}, 2", "wedzera {x}, {tmp}", x = inout(reg ) x, tmp = kunze(reg) _, ); } assert_eq!(x, 4 * 6);
  • Yakawedzerwa tsigiro yeyakagadziriswa (parallel) migove, umo akati wandei maitiro, zvimedu kana zvimiro zvinotsanangurwa kuruboshwe rwechirevo. Somuenzaniso: regai (a, b, c, d, e); (a, b) = (1, 2); [c, .., d, _] = [1, 2, 3, 4, 5]; Chimiro {e, .. } = Chimiro {e: 5, f: 3}; assert_eq!([1, 2, 1, 4, 5], [a, b, c, d, e]);
  • Zvinogoneka kutsanangura zvimiro zvekusarudzika zve const generics: struct ArrayStorage {arr: [T; N], } impl ArrayStorage {fn itsva(a: T, b: T) -> ArrayStorage {ArrayStorage {ar: [a, b],}}}
  • Iyo Cargo package maneja inopa yambiro nezve kushandiswa kwezvimiro zvisizvo mune zvinotsamira izvo zvinogadziriswa nekuda kwekukanganisa mune muunganidzi (semuenzaniso, nekuda kwekukanganisa, minda yezvimiro zvakazara yakabvumidzwa kukweretwa mumabhuraki akachengeteka). Zvivakwa zvakadaro hazvicha tsigirwe mune ramangwana vhezheni yeRust.
  • Cargo uye rustc vane yakavakirwa-mukati kugona kugadzira executable mafaira akabvisirwa debugging data (strip = "debuginfo") uye zviratidzo (strip = "symbols"), pasina chikonzero chekudaidza yakaparadzana utility. Kurongedza kunoitwa kuburikidza ne "strip" parameter muCargo.toml: [profile.release] strip = "debuginfo", "symbols"
  • Kuwedzera kuunganidza kunovharwa nekusarudzika. Chikonzero chinonzi inguva pfupi yekushanda kwebug mune iyo compiler inotungamira kune tsaona uye deserialization zvikanganiso. Iyo bug kugadzirisa yakatogadzirwa uye ichaverengerwa mukuburitswa kunotevera. Kudzosa kuwedzera kuunganidzwa, unogona kushandisa nharaunda chinja RUSTC_FORCE_INCREMENTAL=1.
  • Chikamu chitsva cheAPI chakaendeswa kuchikamu cheyakagadzikana, kusanganisira nzira uye mashandisirwo ehunhu zvakadzikamiswa:
    • std::thread::available_parallelism
    • Mhedzisiro::kopwa
    • Mhedzisiro::yakagadzirwa
    • arch::asm!
    • arch::global_asm!
    • ops::ControlFlow::is_break
    • ops::ControlFlow::is_continue
    • TryFrom for u8
    • char::TryFromCharError (Clone, Debug, Display, PartialEq, Copy, Eq, Error)
    • iter::zip
    • NonZeroU8::isimba_re_maviri
    • NonZeroU16::isimba_re_maviri
    • NonZeroU32::isimba_re_maviri
    • NonZeroU64::isimba_re_maviri
    • NonZeroU128::isimba_re_maviri
    • DoubleEndedIterator yeToLowercase chimiro
    • DoubleEndedIterator yeToUppercase chimiro
    • TryFrom ye [T; N]
    • UnwindSafe yeKamwe chimiro
    • RefUnwindSafe yeKamwe
    • armv8 neon rutsigiro mabasa akavakirwa mukati meiyo compiler yeaarch64
  • Iyo "const" hunhu, iyo inosarudza mukana wekuishandisa mune chero mamiriro pachinzvimbo chezvimiro, inoshandiswa mumabasa:
    • mem::MaybeUninit::as_ptr
    • mem::PamweUninit::funga_init
    • mem::MaybeUninit::fungira_init_ref
    • ffi::CStr::from_bytes_with_nul_unchecked

Source: opennet.ru

Voeg