Weşana Zimanê Bernamesaziyê Rust 1.47

Serlêdana 1.47 ya zimanê bernameya pergala Rust, ku ji hêla projeya Mozilla ve hatî damezrandin, hate weşandin. Ziman balê dikişîne ser ewlehiya bîranînê, rêveberiya bîranînê ya otomatîkî peyda dike, û amûran peyda dike ku meriv paraleliya peywira bilind bêyî karanîna berhevkarek çopê an dema xebitandinê peyda bike (dema xebitandinê ji destpêkirina bingehîn û domandina pirtûkxaneya standard re kêm dibe).

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. Ji bo belavkirina pirtûkxaneyan, misogerkirina civîn û birêvebirina pêwendiyan, proje rêveberê pakêtê Cargo pêşve dike. Depoya crates.io ji bo pirtûkxaneyên mêvandar têne piştgirî kirin.

Nûvekirinên sereke:

  • Piştgiriya ji bo taybetmendiyan ji bo rêzikên mezinahiya kêfî pêk anîn. 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 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 stabîl ên zimên de ne, her çend ew di berhevkerê de têne bicîh kirin û naha di pirtûkxaneya standard de têne bikar anîn. ji bo cureyên array ji her size.
    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ê naha ew ê di 3 qonaxan de were kêm kirin, 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 bi karanîna LLVM 11 ava bibe (Rust LLVM-ê wekî paşnavek ji bo hilberîna kodê bikar tîne). Di heman demê de, şiyana avakirina bi LLVM-ya kevn, heya guhertoya 8-an, tê domandin, lê ji hêla xwerû (di rust-lang/llvm-project) LLVM 11 niha tê bikar anîn. Serbestberdana LLVM 11 di pêşerojê de tê çaverê kirin. rojan.
  • 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ê hate veguheztin kategoriya îstîqrar, di nav de Nasnameya stabîlkirî::new_raw, Rêze::is_empty, RangeInclusive::is_empty, Encam::as_deref, Encam::as_deref_mut, Vec::leak, pointer::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, amûrek ji FreeBSD 11.4 tê bikar anîn (FreeBSD 10 LLVM 11 piştgirî nake).

Ji hatî girtin opennet.ru

Source: linux.org.ru

Add a comment