Famoahana ny fiteny fandaharana Rust 1.59 miaraka amin'ny fanohanan'ny fampidirana fivoriambe

Navoaka ny fiteny fandaharana Rust 1.59 amin'ny tanjona ankapobeny, naorin'ny tetikasa Mozilla saingy novolavolaina ankehitriny eo ambany fiahian'ny fikambanana tsy miankina Rust Foundation. Mifantoka amin'ny fiarovana ny fitadidiana ilay fiteny ary manome fitaovana ahafahana manatratra ny fitovian'ny asa avo lenta sady misoroka ny fampiasana mpanangom-pako sy ny fotoana fandehanana (ahena ny fotoana fampandehanana amin'ny fanombohana fototra sy fikojakojana ny tranomboky mahazatra).

Ny fomba fitantanana fitadidian'i Rust dia mamonjy ny mpamorona amin'ny hadisoana rehefa manodinkodina ny tondro ary miaro amin'ny olana mipoitra noho ny fikarakarana fitadidiana ambany, toy ny fidirana amin'ny faritra fitadidiana rehefa afaka izany, ny fanafoanana ireo tondro tsy misy dikany, ny fihoaran'ny buffer, sns. Mba hizarana trano famakiam-boky, manome fananganana ary mitantana ny fiankinan-doha, ny tetikasa dia mamolavola ny mpitantana fonosana Cargo. Ny tahiry crates.io dia tohanana amin'ny fampiantranoana tranomboky.

Ny fiarovana ny fitadidiana dia omena ao amin'ny Rust amin'ny fotoana fanangonana amin'ny alΓ lan'ny fanamarinana reference, ny fanaraha-maso ny fananana zavatra, ny fanaraha-maso ny androm-piainan'ny zavatra (scopes), ary ny fanombanana ny fahamarinan'ny fidirana fahatsiarovana mandritra ny famonoana ny code. Ny Rust koa dia manome fiarovana amin'ny fihoaran'ny integer, mitaky fanombohana tsy maintsy atao ny soatoavina miovaova alohan'ny fampiasana, mitantana ny lesoka tsara kokoa ao amin'ny tranomboky mahazatra, mampihatra ny foto-kevitry ny references sy ny variables tsy miova amin'ny alΓ lan'ny default, manolotra fanoratana static mahery mba hampihenana ny fahadisoana lojika.

Fanavaozana lehibe:

  • Azo atao ny mampiasa fampidirana fiteny fivondronana, izay takiana amin'ny fampiharana izay mila mifehy ny famonoana amin'ny ambaratonga ambany na afaka mampiasa torolΓ lana milina manokana. Ampidirina amin'ny fampiasana macros "asm!" ary "global_asm!" mampiasa syntax fandrafetana kofehy amin'ny anarana rejisitra mitovy amin'ny fanoloana tady amin'ny Rust. Ny compiler dia manohana ny torolΓ lana momba ny fivoriambe ho an'ny x86, x86-64, ARM, AArch64 ary RISC-V architectures. Ohatra fampidirana: mampiasa std::arch::asm; // Ampitomboy ny x amin'ny 6 mampiasa shifts ary ampio let mut x: u64 = 4; tsy azo antoka { asm!( "mov {tmp}, {x}", "shl {tmp}, 1", "shl {x}, 2", "ampio {x}, {tmp}", x = inout(reg ) x, tmp = mivoaka(reg) _, ); } assert_eq!(x, 4 * 6);
  • Fanohanana fanampiny ho an'ny fanendrena rava (parallΓ¨le), izay ahitana toetra, silaka na rafitra maromaro voafaritra eo amin'ny ilany havia amin'ny fitenenana. Ohatra: avelao (a, b, c, d, e); (a, b) = (1, 2); [c, .., d, _] = [1, 2, 3, 4, 5]; Struct { e, .. } = Struct { e: 5, f: 3}; assert_eq!([1, 2, 1, 4, 5], [a, b, c, d, e]);
  • Ny fahafahana mamaritra ny soatoavina default ho an'ny const generics dia nomena: struct ArrayStorage { arr: [T; N], } impl ArrayStorage { fn vaovao(a: T, b: T) -> ArrayStorage { ArrayStorage { arr: [a, b], } } }
  • Ny mpitantana ny fonosana Cargo dia manome fampitandremana momba ny fampiasana rafitra tsy mety amin'ny fiankinan-doha izay karakaraina noho ny hadisoana ao amin'ny compiler (ohatra, noho ny hadisoana, navela hindramina amin'ny sakana azo antoka ny sahan'ny rafitra feno hipoka). Ny fananganana toy izany dia tsy ho tohanana amin'ny dikan-teny Rust ho avy.
  • Ny entana sy ny rustc dia manana fahaiza-manao namboarina hamorona rakitra azo tanterahana nesorina ny data debug (strip = "debuginfo") sy marika (strip = "symbols"), tsy mila miantso fitaovana manokana. Ny fametrahana fanadiovana dia ampiharina amin'ny alΓ lan'ny mari-pamantarana "strip" ao amin'ny Cargo.toml: [profile.release] strip = "debuginfo", "symbols"
  • Ny famoriam-bola fanampiny dia tsy mandeha amin'ny alΓ lan'ny default. Ny antony dia voalaza fa vahaolana vonjimaika ho an'ny bug ao amin'ny compiler izay mitarika amin'ny fianjerana sy ny fahadisoana deserialization. Efa nomanina ny fanamboarana bug ary hampidirina amin'ny famoahana manaraka. Mba hamerenana ny fanangonana fanampiny dia azonao ampiasaina ny fari-piainan'ny tontolo iainana RUSTC_FORCE_INCREMENTAL=1.
  • Ny ampahany vaovao amin'ny API dia nafindra ho amin'ny sokajy stable, ao anatin'izany ny fomba sy ny fampiharana ny toetra efa niorina:
    • std::thread::available_parallelism
    • Vokatra :: adika
    • Vokany :: klΓ΄nina
    • ny::asm!
    • arch::global_asm!
    • ops::ControlFlow::is_break
    • ops::ControlFlow::is_continue
    • TryFrom ho an'ny u8
    • char ::TryFromCharError (Clone, Debug, Display, PartialEq, Copy, Eq, Error)
    • iter::zip
    • NonZeroU8:: dia_hery_ny_roa
    • NonZeroU16:: dia_hery_ny_roa
    • NonZeroU32:: dia_hery_ny_roa
    • NonZeroU64:: dia_hery_ny_roa
    • NonZeroU128:: dia_hery_ny_roa
    • DoubleEndedIterator ho an'ny rafitra ToLowercase
    • DoubleEndedIterator ho an'ny rafitra ToUppercase
    • TryFrom<&mut [T]> ho an'ny [T; N]
    • UnwindSafe ho an'ny rafitra indray mandeha
    • RefUnwindSafe indray mandeha
    • armv8 neon fanohanana asa natsangana tao amin'ny compiler ho an'ny aarch64
  • Ny toetra "const", izay mamaritra ny mety hampiasana azy amin'ny toe-javatra rehetra fa tsy constants, dia ampiasaina amin'ny fiasa:
    • mem::MaybeUninit::as_ptr
    • mem::MaybeUninit::assume_init
    • mem::MaybeUninit::assume_init_ref
    • ffi::CStr::from_bytes_with_nul_unchecked

Source: opennet.ru

Add a comment