Weşana Zimanê Bernamesaziyê Rust 1.36

weşandin serbestberdana zimanê bernamesaziya pergalê Rûst 1.36, ji hêla projeya Mozilla ve hatî damezrandin. 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:

  • Taybetmendî stabîl kir Dahatû, ku nirxek nîşan dide ku dema ku blokên async / .await bikar tîne hêj nirxandina wê neqede ye. Nirxên asynchronous ên ku bi karanîna Pêşerojê ve têne destnîşan kirin ev gengaz dike ku meriv karê bikêrhatî di mijarê de bidomîne, di heman demê de li benda qedandina hesabên nirxek diyarkirî ye;
  • Pirtûkxane stabîl kir veqetandin, ku ji bo birêvebirina nirxên veqetandî yên bîranînê nîşan û berhevokên jîr peyda dike. Veqetandina bîrê li std naha celebê bikar tîne Vec, ku ji alloc ji nû ve têne derxistin. Bikaranîna veqetandî ya alloc di sepanên ku bi std ve ne girêdayî ne ("#![no_std]"), û her weha di pirtûkxaneyên ku ji bo karanîna di bernameyên mîna bêyî std de hatine çêkirin de watedar e;
  • Ji bo derbaskirina kontrolên ji bo destpêkirina rast a nirxan pêşniyar kirin cureyê navîn MaybeUnit, ku dikare li şûna fonksiyona mem:: uninitialized wekî alternatîfek ewletir were bikar anîn. Fonksîyona mem:: uninitialized rehet e ji bo bi lez çêkirina rêzan, lê ew berhevkar dixapîne ji ber ku dixuye ku ew destpêk kiriye, lê di rastiyê de nirx bêdestpêk dimîne. MaybeUninit dihêle hûn bi eşkereyî ji berhevkerê re destnîşan bikin ku nirx bêdestpêk e, da ku tevgeriya nenaskirî ya muhtemel bi vê yekê re têkildar bihesibîne, û di heman demê de bi navgîniya "maybe_t:" û destpêkirina gav-bi-gav ve kontrolên bernameyan organîze bike, û qedandina wê nîşan bide. bikaranîna banga ".assume_init()". Bi hatina MaybeUninit re, fonksiyona mem:: uninitialized hate betal kirin û ji bo karanîna nayê pêşniyar kirin;
  • Teknolojiya NLL (Jiyanên Ne-Leksîkî), ku pergala tomarkirina temenê guhêrbarên deynkirî berfireh kir, ji bo zimanê Rust 2015 stabîl bûye (di destpêkê de, NLL tenê ji hêla Rust 2018 ve hate piştgirî kirin). Li şûna ku di asta ferhengokî de heyaman pêk bîne, NLL di asta koma nîşangiran de di grafiya herikîna darvekirinê de wiya dike. Ev nêzîkatî dihêle hûn kalîteya kontrolkirina deynkirina guhêrbaran (kontrolkerê deyn) zêde bikin û rê bidin ku hin celeb kodên rast werin bicîh kirin, ku karanîna wan berê bû sedema xeletiyek. Tevgera nû di heman demê de debugkirinê pir hêsantir dike;
  • Pêkanîna nû ya rêzikên komeleyê tê de ye Hashmap, li ser serîlêdana avahiyê Table Swiss (bixweber hatî barkirin hashbrown::HashMap, heya ku bi eşkere tiştek din neyê gotin, wek std::HashMap, ku li ser bingeha SipHash 1-3 ye). Navbera nermalavê heman dimîne, û cûdahiyên ku ji pêşdebiran re têne xuyang kirin bi zêdebûna performansê û kêmkirina mezaxtina bîranînê vedigire;
  • Di kargoya rêveberê pakêtê de zêde kirin vebijarka "--offline", ya ku bêyî gihîştina torê xebitandinê dike, ku tê de tenê pakêtên ku di pergala herêmî de hatine cache kirin dema ku pêwendiyan saz dikin têne bikar anîn. Ger girêdayîbûn ne di cacheya herêmî de be, dê xeletiyek were avêtin. Ji bo barkirina pêwendiyan di cacheya herêmî de berî ku hûn nehêlin, hûn dikarin fermana "kargo fetch" bikar bînin;
  • Kapasîteya gazîkirina makro "dbg!" nîşankirina çend argûmanan;
  • Taybetmendiya "const", ku îmkana karanîna di her çarçoveyê de li şûna domdar diyar dike, ji bo rêbazan tê bikar anîn
    Layout::from_size_align_unchecked,
    mem::needs_drop,
    NonNull::dangling û
    NonNull::cast;

  • Beşek nû ya API-yan veguhezîne kategoriya stabîl, tevî rêbazên ku hatine stabîlkirin
    wezîfe::Waker, erk::anket,
    VecDeque::rotate_left, VecDeque::rotate_right,
    Bixwîne::read_vectored, Binivîse::write_vectored,
    Iterator:: kopî kirin,
    BorrowMut (ji bo rêzan) û str::as_mut_ptr.

Source: opennet.ru

Add a comment