Weşana Zimanê Bernamesaziyê Rust 1.47

weşandin serbestberdana 1.47 ya zimanê bernameya pergalê Zingar, 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 bêyî karanîna paraleliya peywira bilind bigihîje çopê berhevkar и davêjin (dema xebitandinê bi destpêkirina bingehîn û domandina pirtûkxaneya standard vedigere).

Rêvebiriya bîranîna otomatîkî ya Rust di dema manîpulekirina nîşankeran de xeletiyan ji holê radike û li hember pirsgirêkên ku ji manîpulasyona bîranînê ya nizm derdikevin diparêze, wek mînak gihîştina herêmek bîranînê piştî ku ew azad bû, veqetandinên nîşangirên betal, zêdekirina tampon, hwd. 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. Depoyek ji bo pirtûkxaneyên mêvandar tê piştgirî kirin crates.io.

sereke nûbûnên:

  • Piştgiriya pêkanîn ji bo cureyên arrays her size. Berê, ji ber nekarîna danasîna fonksiyonên gelemperî ji bo hemî nirxên yekjimar, pirtûkxaneya standard tenê ji bo rêzikên bi mezinahîya 32 hêmanan piştgirîya taybetmendiyê çêkirî peyda kir (taybetmendiyên her mezinahiyê bi statîkî hatine destnîşankirin). Bi saya afirandina fonksiyona generîkên domdar ("const generic"), îmkan bû ku fonksiyonên gelemperî ji bo her mezinahiyek rêzê were destnîşankirin, lê ew hîn jî di nav taybetmendiyên zimanî yên domdar de nehatine girtin, her çend ew di berhevkerê de têne bicîh kirin û niha tevlî di pirtûkxaneya standard de ji bo taybetmendiyên array ên her mezinahiyê.

    Mînakî, avakirina jêrîn di Rust 1.47-ê de dê naveroka rêzek çap bike, her çend berê ew ê di encamê de xeletiyek çêbibe:

    fn main() {
    bila xs = [0; 34];

    println!("{:?}", xs);
    }

  • Derketina şopên kurttir (paşverû), derketin di rewşên awarte de. Hêmanên ku di pir rewşan de ne eleqedar in, lê hilberanê tevlihev dikin û balê ji sedemên bingehîn ên pirsgirêkê dûr dixin, ji şopê têne derxistin. Ji bo vegerandina şopek tam, hûn dikarin guhêrbara jîngehê "RUST_BACKTRACE=tişt" bikar bînin. Mînakî, ji bo kodê

    fn main() {
    panîk!();
    }

    Berê, şop di 23 qonaxan de derdiket, lê niha dê kêm bibe
    3 gavên ku dihêle hûn tavilê esasê fam bikin:

    thread 'main' di 'panic eşkere' de ket panîkê, src/main.rs:2:5
    stack backtrace:
    0: std::panic::destpêk_panic
    li /rustc/d…d75a/library/std/src/panicking.rs:497
    1: qada lîstikê:: serekî
    li ./src/main.rs:2
    2: bingehîn::ops::function::FnOnce::call_once
    li /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Berhevkarê rustc hate nûve kirin ku bikar bîne LLVM 11 (Zingar bikar tîne LLVM wekî paşnavek ji bo nifşê kodê). Di heman demê de, şiyana avakirina bi LLVM-yên kevintir, heya guhertoya 8-an, tê parastin, lê bi xwerû (di rust-lang/llvm-project) naha LLVM 11 bikar tîne. Li bendê ye ku LLVM 11 di rojên pêş de were berdan.
  • Li ser platforma Windows-ê, berhevkarê rustc ji bo çalakkirina kontrolên yekparebûna herikîna kontrolê (Control Flow Guard), ku bi karanîna ala "-C control-flow-guard" ve hatî çalak kirin, piştgirî peyda dike. Li ser platformên din ev ala ji bo niha tê paşguh kirin.
  • Beşek nû ya API-yê ji kategoriya îstîqrar, tevî stabîl, veguheztin
    Nasname::new_raw,
    Range::is_empty,
    RangeInclusive::is_empty,
    Encam::as_deref,
    Encam::as_deref_mut,
    Vec:: leak,
    nîşanker::offset_from,
    f32::TAU û
    f64::TAU.

  • Taybetmendiya "const", ku îmkana karanîna wê di her çarçovê de li şûna domdar diyar dike, di rêbazan de tê bikar anîn:
    • nû ji bo hemû hejmarên din ji sifir;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub and saturating_mul ji bo hemû hejmaran;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace and is_control_ ji bo cureyan.
  • Ji bo FreeBSD tevlî toolkit ji FreeBSD 11.4 (FreeBSD 10 LLVM 11 piştgirî nake).

Source: opennet.ru

Add a comment