Rust 1.47 Programming Language Tso tawm

Tso tawm 1.47 ntawm Rust system programming lus, tsim los ntawm Mozilla qhov project, tau luam tawm. Cov lus qhia txog kev nyab xeeb ntawm kev nco, muab kev tswj hwm kev nco tsis siv neeg, thiab muab txoj hauv kev kom ua tiav kev ua haujlwm siab sib luag yam tsis tas siv cov khoom siv khib nyiab lossis lub sijhawm ua haujlwm (runtime raug txo qis rau kev pib pib thiab kev saib xyuas ntawm lub tsev qiv ntawv txheem).

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. Txhawm rau faib cov tsev qiv ntawv, xyuas kom muaj kev sib sau ua ke thiab tswj hwm kev vam khom, qhov project tab tom tsim tus thawj tswj hwm pob khoom. Lub crates.io repository yog txaus siab rau hosting cov tsev qiv ntawv.

Main innovations:

  • Implemented kev txhawb nqa rau qhov zoo rau arrays ntawm arbitrary loj. Yav dhau los, vim qhov tsis muaj peev xwm los txhais cov haujlwm dav dav rau txhua qhov muaj nuj nqis, lub tsev qiv ntawv tus qauv muab kev txhawb nqa hauv kev txhawb nqa nkaus xwb rau cov arrays txog li 32 lub ntsiab lus loj (qhov zoo rau txhua qhov loj tau txhais tau zoo). Ua tsaug rau cov creation ntawm const generics functionality, nws los ua tau los txhais generic functions rau tej array loj, tab sis lawv tseem tsis tau muaj nyob rau hauv cov yam ntxwv ruaj khov ntawm cov lus, txawm hais tias lawv tau siv nyob rau hauv lub compiler thiab tam sim no siv nyob rau hauv cov qauv tsev qiv ntawv. rau hom array 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 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 mus rau 3 theem, 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 LLVM 11 (Xeb siv LLVM ua ib qho backend rau code tiam). Nyob rau tib lub sijhawm, lub peev xwm tsim nrog LLVM qub, mus txog version 8, yog khaws cia, tab sis los ntawm lub neej ntawd (hauv xeb-lang/llvm-project) LLVM 11 yog tam sim no siv. Kev tso tawm ntawm LLVM 11 yuav tsum nyob rau yav tom ntej. hnub.
  • 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 tswj-flow-guard". Ntawm lwm lub platforms tus chij no tsis quav ntsej rau tam sim no.
  • Ib feem tshiab ntawm API tau raug xa mus rau qeb ruaj khov, suav nrog tus lej ruaj khov::new_raw, Ntau Yam::is_empty, RangeInclusive::is_empty, Result::as_deref, Result::as_deref_mut, Vec::leak, pointer::offset_from , f32:: TAU and f64::TAU.
  • 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, cov khoom siv los ntawm FreeBSD 11.4 yog siv (FreeBSD 10 tsis txhawb LLVM 11).

Sau los ntawm opennet.ru

Tau qhov twg los: linux.org.ru ua

Ntxiv ib saib