Rust 1.47 Programming Language Tso tawm

luam tawm tso tawm 1.47 ntawm qhov system programming lus xeb, nrhiav tau los ntawm Mozilla qhov project. Cov lus hais txog kev nyab xeeb ntawm kev nco, muab kev tswj hwm kev nco tsis siv neeg, thiab muab txoj hauv kev kom ua tiav cov hauj lwm sib luag yam tsis siv khib nyiab ΠΈ Runtime (runtime boils mus rau qhov pib pib thiab kev saib xyuas ntawm tus qauv tsev qiv ntawv).

Rust txoj kev tswj hwm tsis siv neeg nco tshem tawm qhov yuam kev thaum tswj cov taw qhia thiab tiv thaiv cov teeb meem tshwm sim los ntawm kev tswj hwm lub cim xeeb qis, xws li nkag mus rau thaj chaw nco tom qab nws tau tso tawm, tsis muaj qhov taw qhia dereferences, tsis muaj overruns, thiab lwm yam. Tus neeg saib xyuas pob tau tsim los faib cov tsev qiv ntawv, xyuas kom muaj kev sib dhos thiab tswj hwm kev vam meej los ntawm qhov project. cargo. Lub chaw khaws cia tau txhawb nqa rau cov tsev qiv ntawv crates.io.

ntsiab kev tsim kho tshiab:

  • Kev txhawb nqa rau hom arrays txhua qhov loj. Yav dhau los, vim qhov tsis muaj peev xwm los txheeb xyuas cov haujlwm dav dav rau txhua qhov muaj nuj nqis, cov tsev qiv ntawv tus qauv tau muab kev txhawb nqa hauv kev txhawb nqa tsuas yog rau cov arrays txog li 32 lub ntsiab lus loj (qhov zoo rau txhua qhov loj me tau txhais tau zoo). Ua tsaug rau cov creation ntawm functionality ntawm tas mus li generics ("const generics"), nws tau los ua tau los txhais cov kev ua generic rau tej array loj, tab sis lawv tseem tsis tau muaj nyob rau hauv cov lus ruaj ntseg nta, txawm hais tias lawv tau siv nyob rau hauv lub compiler thiab yog. tam sim no koom nrog nyob rau hauv tus qauv tsev qiv ntawv rau array zoo ntawm txhua qhov loj me.

    Piv txwv li, cov qauv hauv qab no hauv Rust 1.47 yuav luam tawm cov ntsiab lus ntawm ib qho array, txawm hais tias yav dhau los nws yuav ua rau muaj qhov yuam kev:

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

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

  • Muab cov khoom tso tawm ntawm cov kab luv luv (backtrace), tso tawm thaum muaj xwm txheej ceev. Cov ntsiab lus uas tsis txaus siab rau ntau qhov xwm txheej, tab sis cuam tshuam cov khoom tsim tawm thiab cuam tshuam kev mloog los ntawm cov laj thawj tseem ceeb ntawm qhov teeb meem, raug cais tawm ntawm kab. Txhawm rau rov qab tag nrho cov kab, koj tuaj yeem siv qhov hloov pauv ib puag ncig "RUST_BACKTRACE = puv". Piv txwv li, rau cov cai

    fn main() {
    poob siab!();
    }

    Yav dhau los, cov kab tau tso tawm hauv 23 theem, tab sis tam sim no nws yuav raug txo kom tsawg
    3 kauj ruam uas tso cai rau koj tam sim ntawd tuav lub ntsiab lus:

    xov 'main' panicked ntawm 'panic meej', src/main.rs:2:5
    stack backtrace:
    0: std::panicking::begin_panic
    ntawm /rustc/d…d75a/library/std/src/panicking.rs:497
    1: chaw ua si::main
    ntawm ./src/main.rs:2
    2: core::ops::function::FnOnce::call_once
    ntawm /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Lub rustc compiler tau hloov kho los tsim siv LWM 11 (Xeb siv LLVM ua ib qho backend rau code tiam). Tib lub sijhawm, lub peev xwm los tsim nrog cov laus LLVMs, mus txog rau version 8, yog khaws cia, tab sis los ntawm lub neej ntawd (hauv xeb-lang/llvm-project) tam sim no siv LLVM 11. LLVM 11 xav tias yuav tso tawm rau hnub tom ntej.
  • Ntawm lub Windows platform, rustc compiler muab kev txhawb nqa rau kev ua kom muaj kev tswj xyuas kev ncaj ncees (Control Flow Guard), qhib siv tus chij "-C control-flow-guard". Ntawm lwm lub platforms tus chij no tsis quav ntsej rau tam sim no.
  • Ib feem tshiab ntawm APIs tau raug xa mus rau qeb ruaj khov, suav nrog kev ruaj khov
    Ident::new_raw,
    Ntau yam::is_empty,
    RangeInclusive:: yog_empty,
    Result::as_deref,
    Result::as_deref_mut,
    Vec::leak,
    pointer::offset_from,
    f32:: ua
    f64:: ua.

  • Tus cwj pwm "const", uas txiav txim siab qhov muaj peev xwm ntawm kev siv nws hauv txhua lub ntsiab lus tsis yog qhov qub, yog siv rau hauv cov txheej txheem:
    • tshiab rau txhua tus lej uas tsis yog xoom;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub thiab saturating_mul rau tag nrho cov integers;
    • yog_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_charispace_control u thiab hom.
  • Rau FreeBSD koom nrog toolkit los ntawm FreeBSD 11.4 (FreeBSD 10 tsis txhawb LLVM 11).

Tau qhov twg los: opennet.ru

Ntxiv ib saib