Rust 1.60 Programming Language Tso tawm

Kev tso tawm ntawm Rust 1.60 cov lus qhia dav dav, tsim los ntawm Mozilla qhov project, tab sis tam sim no tsim los ntawm kev txhawb nqa ntawm lub koom haum ywj pheej tsis muaj txiaj ntsig Rust Foundation, tau tshaj tawm. Cov lus qhia txog kev nyab xeeb ntawm kev nco thiab muab txoj hauv kev kom ua tiav txoj haujlwm siab sib luag thaum tsis txhob siv cov khoom siv khib nyiab thiab lub sijhawm ua haujlwm (runtime raug txo qis rau kev pib pib thiab kev saib xyuas ntawm lub tsev qiv ntawv txheem).

Rust lub cim xeeb tuav txoj kev cawm tus tsim tawm los ntawm kev ua yuam kev thaum tswj cov taw qhia thiab tiv thaiv cov teeb meem uas tshwm sim los ntawm kev ua haujlwm qis qis, xws li nkag mus rau thaj chaw nco tom qab nws tau tso tawm, dereferencing null pointers, tsis overruns, thiab lwm yam. Txhawm rau faib cov tsev qiv ntawv, muab kev tsim kho thiab tswj hwm kev vam khom, qhov project tsim tus thawj tswj hwm pob khoom. Lub crates.io repository yog txaus siab rau hosting cov tsev qiv ntawv.

Kev nyab xeeb nco yog muab rau hauv Rust ntawm lub sijhawm sau los ntawm kev siv tshuaj xyuas, ua raws li cov tswv cuab ntawm cov khoom, khaws cov khoom siv lub neej (scopes), thiab ntsuas qhov tseeb ntawm kev nkag mus rau lub cim xeeb thaum lub sijhawm ua tiav cov lej. Rust kuj tseem muab kev tiv thaiv tus lej ntau dhau, yuav tsum muaj qhov sib txawv kom pib ua ntej siv, ua haujlwm yuam kev zoo dua hauv cov tsev qiv ntawv tus qauv, siv lub tswv yim ntawm cov ntaub ntawv tsis hloov pauv thiab hloov pauv los ntawm lub neej ntawd, thiab muaj kev ntaus ntawv zoo li qub kom txo qis qhov yuam kev.

Main innovations:

  • Lub rustc compiler muaj qhov ruaj khov LLVM-raws li kev tsim cov ntaub ntawv pov thawj siv los ntsuas cov lej them nyiaj thaum kuaj. Txhawm rau ua kom cov ntaub ntawv pov hwm thaum lub rooj sib txoos, koj yuav tsum siv tus chij "-Cinstrument-kev pab them nqi", piv txwv li, pib lub rooj sib txoos nrog "RUSTFLAGS ="-C instrument-coverage" cargo build" command. Tom qab khiav cov ntaub ntawv executable compiled nyob rau hauv no txoj kev, cov ntaub ntawv default.profraw yuav tau txais kev cawmdim nyob rau hauv cov ntaub ntawv tam sim no, rau kev ua haujlwm uas koj tuaj yeem siv llvm-profdata utility los ntawm llvm-tools-preview tivthaiv. Cov txiaj ntsig tau ua tiav los ntawm llvm-profdata tuaj yeem dhau mus rau llvm-cov los tsim cov ntawv qhia txog kev tshaj tawm. Cov ntaub ntawv hais txog qhov txuas mus rau lub hauv paus code yog muab los ntawm cov ntaub ntawv executable raug tshuaj xyuas, uas suav nrog cov ntaub ntawv tsim nyog hais txog kev sib txuas ntawm cov ntawv pov hwm thiab cov cai. 1| 1|fn main() { 2| 1| println!("Nyob zoo, ntiaj teb!"); 3| 1|}
  • Nyob rau hauv tus neeg saib xyuas pob khoom, kev txhawb nqa rau tus chij "-times" tau ruaj khov, uas suav nrog cov cim qhia ntxaws txog kev ua tiav ntawm kev tsim thiab lub sijhawm ua tiav ntawm txhua kauj ruam. Daim ntawv tshaj tawm tej zaum yuav muaj txiaj ntsig zoo rau kev ua kom zoo ntawm cov txheej txheem sib dhos.
  • Tus neeg saib xyuas pob khoom muaj cov lus qhia tshiab rau cov txheej txheem ntawm kev sib sau ua ke thiab xaiv cov kev xaiv ntawm kev xaiv, teeb tsa hauv Cargo.toml cov ntaub ntawv los ntawm kev sau cov npe ntawm cov khoom muaj npe hauv ntu [features] thiab qhib los ntawm kev ua kom cov khoom thaum lub pob tsim. siv tus chij "--features". Tus tshiab version ntxiv kev txhawb nqa rau kev vam khom nyob rau hauv cais namespaces thiab tsis muaj zog dependencies.

    Hauv thawj kis, nws tuaj yeem siv cov ntsiab lus nrog cov lus ua ntej "dep:" hauv ntu "[features]" kom meej meej txuas mus rau qhov kev xaiv xaiv yam tsis muaj qhov cuam tshuam rau qhov kev vam khom no raws li qhov tshwj xeeb. Hauv qhov thib ob, kev txhawb nqa rau kev cim nrog "?" kos npe tau ntxiv. ("pob-npe?/feature-name") xaiv qhov kev cia siab uas yuav tsum tsuas yog suav nrog yog tias qee yam khoom muaj xws li kev xaiv xaiv tau. Piv txwv li, hauv qhov piv txwv hauv qab no, ua kom cov cuab yeej serde yuav ua rau "serde" kev vam khom, nrog rau "serde" cov cuab yeej rau "rgb" kev vam khom, tab sis tsuas yog yog tias "rgb" kev vam khom rau lwm qhov: [dependencies] serde = { version = " 1.0.133", yeem = tseeb } rgb = { version = "0.8.25", yeem = tseeb } [features] serde = ["dep:serde", "rgb?/serde"]

  • Kev them nyiaj yug rau incremental compilation, uas yog neeg xiam nyob rau hauv lub xeem tso tawm, tau rov qab. Cov kab laum compiler uas ua rau lub ntsej muag tsis ua haujlwm tau raug daws.
  • Tau daws qee qhov teeb meem nrog kev muab Cov Sijhawm Tam Sim No nrog kev lees paub ntawm lub sijhawm monotonic, uas yuav siv sijhawm los siv los ntawm lub kaw lus hauv kev pw tsaug zog. Yav dhau los, OS API tau siv thaum twg ua tau los ua haujlwm lub sijhawm, uas tsis suav nrog cov teeb meem teeb meem uas ua rau lub sijhawm tsis sib xws, xws li teeb meem kho vajtse, kev siv virtualization, lossis yuam kev hauv kev ua haujlwm.
  • Ib feem tshiab ntawm API tau raug hloov mus rau qeb ntawm qhov ruaj khov, suav nrog cov txheej txheem thiab kev siv ntawm cov yam ntxwv tau ruaj khov:
    • Arc::new_cyclic
    • Rc::new_cyclic
    • daim ::EscapeAscii
    • <[u8]>::escape_ascii
    • u8: :ua
    • Vec::spare_capacity_mut
    • Tej zaumUninit:: assume_init_drop
    • Tej zaumUninit:: assume_init_read
    • ib 8::abs
    • ib 16::abs
    • ib 32::abs
    • ib 64::abs
    • ib 128::abs
    • isize::abs_diff
    • u8 ::wb
    • u16 ::wb
    • u32 ::wb
    • u64 ::wb
    • u128 ::wb
    • usize::abs_diff
    • Zaub rau io::ErrorKind
    • Los ntawm ExitCode
    • Tsis yog rau! (hom "tsis tau")
    • _Op_Assign <$t>
    • arch::is_aarch64_feature_detected!
  • Qhov thib peb theem ntawm kev txhawb nqa tau siv rau mips64-openwrt-linux-musl* thiab armv7-unknown-linux-uclibceabi (softfloat) platforms. Qib thib peb suav nrog kev txhawb nqa yooj yim, tab sis tsis muaj kev sim automated, tshaj tawm kev tsim kho, lossis tshawb xyuas seb qhov chaws puas tuaj yeem tsim.
  • Lub compiler tau hloov mus siv LLVM 14.

Tsis tas li ntawd, koj tuaj yeem nco ntsoov:

  • Ntxiv kev txhawb nqa rau bootstrapping lub rustc compiler siv rustc_codegen_gcc backend, uas tso cai rau koj siv lub tsev qiv ntawv libgccjit los ntawm GCC qhov project raws li tus lej generator hauv rustc, uas tso cai rau rustc muab kev txhawb nqa rau architectures thiab optimizations muaj nyob rau hauv GCC. Compiler nce qib txhais tau hais tias muaj peev xwm siv GCC-based code generator hauv rustc los tsim cov rustc compiler nws tus kheej. Ntawm qhov ua tau zoo, qhov no tso cai rau koj los tsim cov kev pabcuam xeb rau cov qauv uas tsis tau txhawb nqa yav dhau los hauv rustc.
  • Kev tso tawm ntawm uutils coreutils 0.0.13 toolkit yog muaj, nyob rau hauv uas ib qho analogue ntawm GNU Coreutils pob, rov sau ua lus Rust, tab tom tsim. Coreutils los nrog ntau tshaj li ib puas khoom siv, suav nrog txheeb, miv, chmod, chown, chroot, cp, hnub, dd, ncha, hostname, id, ln, thiab ls. Lub hom phiaj ntawm peb tes num yog los tsim ib tug cross-platform lwm txoj kev siv ntawm Coreutils, muaj peev xwm khiav ntawm lub qhov rais, Redox thiab Fuchsia platforms, raws li zoo raws li kev faib nyob rau hauv daim ntawv tso cai MIT daim ntawv tso cai, es tsis txhob ntawm GPL daim ntawv tso cai copyleft.

    Cov ntawv tshiab tau txhim kho kev siv ntau yam khoom siv, suav nrog kev txhim kho kev sib raug zoo ntawm cp, dd, df, phua thiab tr utilities nrog lawv cov counterparts los ntawm GNU project. Cov ntaub ntawv online tau muab. Lub clap parser yog siv los txheeb xyuas kab lus sib cav, uas tau txhim kho cov txiaj ntsig rau "--pab" chij thiab ntxiv kev txhawb nqa rau cov ntawv luv luv ntawm cov lus txib ntev (piv txwv li, koj tuaj yeem teev "ls -col" es tsis txhob "ls -color" ”).

Tau qhov twg los: opennet.ru

Ntxiv ib saib