Ho lokolloa ha puo ea lenaneo la Rust 1.59 ka tšehetso bakeng sa ho kenya likopano

Ho lokolloa ha puo ea lenaneo la Rust 1.59 ka kakaretso, e thehiloeng ke morero oa Mozilla, empa hona joale e ntlafalitsoeng ka tlas'a ts'ebetso ea mokhatlo o ikemetseng o sa etseng phaello oa Rust Foundation, e hatisitsoe. Puo e shebana le ts'ireletso ea mohopolo 'me e fana ka mekhoa ea ho finyella mosebetsi o phahameng oa ho ts'oara mosebetsi ha o ntse o qoba ho sebelisoa ha moqoqo oa lithōle le nako ea ho sebetsa (nako ea ho sebetsa e fokotsehile ho qala ho qala le ho boloka laebrari e tloaelehileng).

Mekhoa ea ho sebetsana le memori ea Rust e boloka moqapi ho tsoa liphosong ha a laola lintlha le ho sireletsa khahlanong le mathata a hlahang ka lebaka la ho tšoara memori ea boemo bo tlaase, joalo ka ho fumana sebaka sa memori ka mor'a hore e lokolloe, ho tlosa li-null pointer, buffer overruns, joalo-joalo. Ho aba lilaebrari, ho fana ka meaho le ho laola litšepe, projeke e nts'etsapele mookameli oa thepa ea Cargo. Sebaka sa polokelo ea crates.io se tšehetsoa bakeng sa lilaebrari tse amohelang batho.

Tšireletseho ea memori e fanoa ka Rust ka nako ea ho bokella ka ho hlahloba litšupiso, ho boloka tlaleho ea botho ba ntho, ho boloka tlaleho ea bophelo ba ntho (scopes), le ho lekola ho nepahala ha phihlello ea mohopolo nakong ea ts'ebetso ea khoutu. Rust e boetse e fana ka ts'ireletso khahlano le phallo e felletseng, e hloka ho qalisoa ha boleng bo fapaneng pele e sebelisoa, e sebetsana le liphoso hamolemo laebraring e tloaelehileng, e sebelisa mohopolo oa litšupiso tse ke keng tsa fetoha le mefuta e fapaneng ka mokhoa o ikhethileng, e fana ka ho thaepa ho tiileng ho fokotsa liphoso tse utloahalang.

Litlhahiso tse ka sehloohong:

  • Hoa khoneha ho sebelisa lisebelisoa tsa lipuo tsa kopano, tse hlokahalang lits'ebetsong tse hlokang ho laola ho bolaoa ka mokhoa o tlaase kapa ho khona ho sebelisa litaelo tse khethehileng tsa mochine. Likarolo tsa kopano li eketsoa ho sebelisoa macros "asm!" le "global_asm!" ho sebelisa syntax ea fomete ea likhoele bakeng sa ho reha mabitso a tšoanang le a sebelisoang bakeng sa li-substitutes tsa likhoele ho Rust. Moqapi o tšehetsa litaelo tsa kopano bakeng sa meralo ea x86, x86-64, ARM, AArch64 le RISC-V. Mohlala oa ho kenya: sebelisa std::arch::asm; // Atisa x ka 6 o sebelisa lichifi ebe o eketsa let mut x: u64 = 4; sa sireletseha {asm!( "mov {tmp}, {x}", "shl {tmp}, 1", "shl {x}, 2", "eketsa {x}, {tmp}", x = inout(reg ) x, tmp = tsoa(reg) _, ); } assert_eq!(x, 4 * 6);
  • Tšehetso e ekelitsoeng bakeng sa likabelo tse senyehileng (tse bapileng), tseo ho tsona litšobotsi, lilae kapa libopeho tse 'maloa li boletsoeng ka lehlakoreng le letšehali la polelo. Mohlala: let (a, b, c, d, e); (a, b) = (1, 2); [c, .., d, _] = [1, 2, 3, 4, 5]; Sebopeho {e, .. } = Sebopeho {e: 5, f: 3}; assert_eq!([1, 2, 1, 4, 5], [a, b, c, d, e]);
  • Bokhoni ba ho hlakisa litekanyetso tsa kamehla tsa const generics bo fanoe: struct ArrayStorage { arr: [T; N], } impl ArrayStorage {fn e ncha(a: T, b: T) -> ArrayStorage {ArrayStorage { arr: [a, b], }}}
  • Motsamaisi oa sephutheloana sa Cargo o fana ka litemoso mabapi le ts'ebeliso ea meaho e sa sebetseng ho its'etleha tse sebetsoang ka lebaka la liphoso tsa mokopanyi (mohlala, ka lebaka la phoso, masimo a meaho e pakiloeng a lumelletsoe ho alingoa ka li-blocks tse bolokehileng). Mehaho e joalo ha e sa tla hlola e tšehetsoa molemong oa nakong e tlang oa Rust.
  • Cargo le rustc li na le bokhoni bo hahelletsoeng ba ho hlahisa lifaele tse ka phethisoang tse amohuoeng data ea debugging (strip = "debuginfo") le matšoao (strip = "symbols"), ntle le tlhoko ea ho bitsa sesebelisoa se arohaneng. Litlhophiso tsa ho hloekisa li kengoa tšebetsong ka "strip" parameter ho Cargo.toml: [profile.release] strip = "debuginfo", "symbols"
  • Pokello e ntseng e eketseha e emisitsoe ka ho sa feleng. Lebaka ho thoe ke ts'ebetso ea nakoana bakeng sa kokoanyana ho komporo e lebisang ho soahlamane le liphoso tsa deerialization. Tokiso ea liphoso e se e lokisitsoe 'me e tla kenyelletsoa tokollong e latelang. Ho khutlisa pokello e eketsang, o ka sebelisa mofuta oa tikoloho RUSTC_FORCE_INCREMENTAL=1.
  • Karolo e ncha ea API e fetiselitsoe sehlopheng sa ba tsitsitseng, ho kenyelletsa le mekhoa le ts'ebetsong ea mekhoa e tsitsitseng:
    • std::thread::available_parallelism
    • Sephetho::kopitsoa
    • Sephetho::cloned
    • ar::asm!
    • arch::global_asm!
    • ops::ControlFlow::ke_break
    • ops::ControlFlow::e_tswella
    • TryFrom bakeng sa u8
    • char::TryFromCharError (Clone, Debug, Display, PartialEq, Copy, Eq, Error)
    • eona::zip
    • NonZeroU8::ke_matla_a_a_pedi
    • NonZeroU16::ke_matla_a_a_pedi
    • NonZeroU32::ke_matla_a_a_pedi
    • NonZeroU64::ke_matla_a_a_pedi
    • NonZeroU128::ke_matla_a_a_pedi
    • DoubleEndedIterator bakeng sa sebopeho sa ToLowercase
    • DoubleEndedIterator bakeng sa sebopeho sa ToUppercase
    • TryFrom<&mut [T]> bakeng sa [T; N]
    • UnwindSafe bakeng sa sebopeho sa Hang
    • RefUnwindSafe bakeng sa Hang
    • mesebetsi ea tšehetso ea armv8 neon e hahiloeng ka har'a komporo bakeng sa aarch64
  • Sebopeho sa "consst", se khethollang monyetla oa ho se sebelisa maemong afe kapa afe ho fapana le li-constants, se sebelisoa mesebetsing:
    • mem::MohlomongUninit::as_ptr
    • mem::MohlomongUninit::assume_init
    • mem::MohlomongUninit:: nka_init_ref
    • ffi::CStr::from_bytes_with_nul_unchecked

Source: opennet.ru

Eketsa ka tlhaloso