Weşana Zimanê Bernamesaziyê Rust 1.34

pêk hat serbestberdana zimanê bernamesaziya pergalê Rûst 1.34, ji hêla projeya Mozilla ve hatî pêşve xistin. 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. Rêvebirek pakêtê ji bo belavkirina pirtûkxaneyan, misogerkirina civîn û birêvebirina girêdanên ji hêla projeyê ve tê pêşve xistin. Bar, dihêle hûn pirtûkxaneyên ku ji bo bernameyê hewce ne bi yek klîk bistînin. Depoyek ji bo pirtûkxaneyên mêvandar tê piştgirî kirin crates.io.

sereke nûbûnên:

  • 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 zêdekirina qeydên derve li .cargo/config (li $HOME an di pelrêça pakêtê de ye)
    pêşkêş kirin beşa "[qeydan]", û ji bo karanîna tomarek derveyî, vebijarka "qeyd" di danasîna her pêwendiyê de li Cargo.toml xuya bûye. 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 testan de docttests, 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û de bi karanîna makroyên prosedurê têne destnîşankirin pêşkêş kirin şiyana bikaranîna komên keyfî yên nîşaneyan ("#[attr($nîşan)]", "#[attr[$nîşan]] û #[attr{$nîşan}]"). 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)]";
  • Cureyên stabilîzekirî (xislet) TryFrom и TryInto, destûr dide veguheztinên tîpan ên bi hilgirtina xeletiyan. 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 xeletiyek hate zêdekirin Infleible, destûrê dide karanîna zelal
    TryFrom ji bo hemî pêkanînên heyî yên "Ji";

  • Fonksiyon hat betalkirin CommandExt::before_exec, ku hişt ku destekek berî xebitandina exec-ê were darve kirin, ku di çarçoweya pêvajoyek zarokê ya ku piştî banga fork()-ê hatî darve kirin de hate darve kirin. Di bin şert û mercên weha de, hin çavkaniyên pêvajoya dêûbav, wek ravekerên pelan û deverên bîranîna nexşandî, dikarin bêne dubare kirin, ku dibe sedema tevgerek ne diyar û xebata çewt a pirtûkxaneyan.
    Tê pêşniyar kirin ku li şûna berî_exec fonksiyonek neewle bikar bînin CommandExt::pre_exec.

  • Tîpên jimareyên atomî yên îstîqrarkirî yê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|64|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 destnîşankirina vebijarka avakirina "-C linker-plugin-lto" ve şiyana çalakkirina optimîzasyonên di qonaxa girêdanê de zêde kir.

Source: opennet.ru

Add a comment