Weşana Zimanê Bernamesaziyê Rust 1.34

Zimanê bernamesaziya pergalê Rust 1.34, ku ji hêla projeya Mozilla ve hatî pêşve xistin, derket. Ziman balê dikişîne ser ewlehiya bîranînê, rêveberiya bîranînê ya otomatîk peyda dike, û amûrek peyda dike ku meriv paraleliya peywira bilind bêyî karanîna berhevkarek çopê an dema xebitandinê peyda bike.

Rêvebiriya bîranîna otomatîkî ya Rust pêşdebiran ji manîpulasyona nîşankerê azad dike û li hember pirsgirêkên ku ji manîpulasyona bîranînê ya nizm derdikevin, wek gihandina bîranîna bêpere, veqetandinên nîşangirên betal, zêdekirina tampon û yên wekî wan diparêze. Ji bo belavkirina pirtûkxaneyan, misogerkirina kombûnê û birêvebirina girêdanan, proje rêvebirê pakêta Cargo pêşve dike, ku dihêle hûn pirtûkxaneyên ku ji bo bernameyê hewce ne bi yek klîk bistînin. Depoya crates.io ji bo pirtûkxaneyên mêvandar têne piştgirî kirin.

Nûvekirinên sereke:

  • Rêvebirê pakêta Cargo amûran zêde kiriye da ku bi tomarên pakêtê yên alternatîf re bixebite ku dikarin bi qeyda giştî ya crates.io re bijîn. Mînakî, pêşdebirên sepanên xwedan naha dikarin qeyda xweya taybet bikar bînin, ya ku dikare dema ku pêwendiyan li Cargo.toml navnîş dike were bikar anîn, û modelek guhertoyek mîna crates.io ji bo hilberên xwe bicîh bikin, û her weha girêdayiyan bi her du kelûpelan ve bişînin. io û qeyda xwe.

    Ji bo lê zêdekirina qeydek derveyî li ~/.cargo/config
    vebijarkek nû "min-qeyda" di beşê "[qeydan]" de tê peyda kirin, û vebijarkek "dî-crate" hatîye zêdekirin da ku di beşa "[girêdayîn]" de behskirina tomara derveyî ya di pêwendiyan de li Cargo.toml. Ji bo ku hûn bi qeydek din ve girêdin, bi tenê tokena erêkirinê di pelê ~/.cargo/credentials de bi cîh bikin û fermanê bimeşînin.
    "kargo login --registry=my-registry" û ji bo weşandina pakêtek -
    "cargo publish -registry=my-registry";

  • Piştgiriya tam ji bo karanîna operatorê "?" zêde kir. di doctests de, ku dihêle hûn koda nimûneyê ji belgeyê wekî ceribandin bikar bînin. Berê operator
    "?" dikare ji bo birêvebirina xeletiyan di dema ceribandinê de tenê di hebûna fonksiyona "fn main()" de an jî di fonksiyonên "#[test]" de were bikar anîn;

  • Di taybetmendiyên xwerû yên ku bi karanîna makroyên prosedurê têne diyar kirin de, gengaz e ku meriv komek nîşanekan ("#[attr($tokens)]", "#[attr[$tokens]] û #[attr{$tokens}]") bikar bîne. Berê, hêman tenê di forma dar/vegerandî de bi karanîna rêzikên rêzikan dihatin destnîşan kirin, mînakî "#[foo(bar, baz(quux, foo = "bar"))]", lê niha gengaz e ku meriv jimartinan bikar bîne (' #[range(0. .10)]') û avaniyên mîna "#[bound(T: MyTrait)]";
  • Taybetmendiyên TryFrom û TryInto hatine stabîlkirin, ku destûrê dide veguheztina celebê bi karanîna xeletiyê. Mînakî, rêbazên mîna from_be_bytes bi celebên jimaran re rêzan wekî têketinê bikar tînin, lê dane pir caran bi celebek Slice têne, û veguhertina di navbera rêz û perçeyan de pirsgirêk e ku meriv bi destan bike. Bi arîkariya taybetiyên nû, operasyona diyarkirî dikare li ser firînê bi banga .try_into() were kirin, mînakî, "bila num = u32::from_be_bytes(slice.try_into()?)". Ji bo veguhertinên ku her gav bi ser dikevin (mînakî, ji tîpa u8 ber u32), celebek xeletiya Infallible hate zêdekirin da ku destûr bide karanîna zelal a
    TryFrom ji bo hemî pêkanînên heyî yên "Ji";

  • Fonksîyona CommandExt::before_exec hat betalkirin, ya ku destûr dide darvekirina rêvekerek berî execê ya ku di çarçoweya pêvajoyek zarokê ya ku piştî banga fork()-ê hatî darve kirin de hatî darve kirin. Di bin şert û mercên weha de, hin çavkaniyên pêvajoya dêûbav, wek ravekerên pelan û deverên bîranînê yên nexşekirî, dikarin werin dubare kirin, ku dibe sedema tevgerek nediyar û xebata çewt a pirtûkxaneyan.
    Li şûna berî_exec, tê pêşniyar kirin ku fonksiyona ne ewle CommandExt::pre_exec bikar bînin.

  • Tîpên jimareyên atomî yên bi îstîqrar ên bi îmza û nenîşankirî yên bi mezinahiya wan ji 8 heta 64 bit (mînak, AtomicU8), û her weha celebên îmzekirî NonZeroI[8|16|32|54|128].
  • Beşek nû ya API-yê hate veguheztin kategoriya îstîqrar, di nav de Any::type_id, Çewtî::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] û rêbazên SystemTime hatine stabîlkirin ::checked_[lê zêde bike|bin]. Fonksiyonên iter::from_fn û iter::successors hatine stabîlkirin;
  • Ji bo hemî cûreyên jimare, rêbazên checked_pow, saturating_pow, wrapping_pow û overflowing_pow têne bicîh kirin;
  • Bi diyarkirina vebijarka avakirinê ya "-C linker-plugin-lto" şiyana çalakkirina xweşbîniyê di qonaxa girêdanê de zêde kir (rustc koda Rust-ê di bitkoda LLVM de berhev dike, ku dihêle xweşbîniyên LTO werin sepandin).

Source: opennet.ru

Add a comment