Rust 1.34 Programming Language Tso tawm

coj qhov chaw system programming lus tso tawm Xeb 1.34, tsim 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 haujlwm siab sib luag yam tsis tas siv cov khoom khib nyiab lossis lub sijhawm ua haujlwm.

Rust qhov kev tswj hwm tsis siv neeg lub cim xeeb tso tawm tus tsim tawm los ntawm kev siv tus taw tes thiab tiv thaiv cov teeb meem tshwm sim los ntawm kev tswj hwm lub cim xeeb qis, xws li kev nkag mus rau lub cim xeeb tom qab tsis pub dawb, tsis muaj qhov taw qhia tsis zoo, tsis muaj kev cuam tshuam, thiab lwm yam. Tus neeg saib xyuas pob yog tsim los faib cov tsev qiv ntawv, xyuas kom muaj kev sib dhos thiab tswj cov kev vam meej los ntawm qhov project. cargo, tso cai rau koj kom tau txais cov tsev qiv ntawv xav tau rau qhov kev pab cuam hauv ib nias. Lub chaw khaws cia tau txais kev txhawb nqa rau cov tsev qiv ntawv crates.io.

ntsiab kev tsim kho tshiab:

  • Tus thawj tswj hwm pob khoom thauj khoom tau ntxiv cov cuab yeej los ua haujlwm nrog lwm cov ntawv sau npe uas tuaj yeem koom nrog crates.io pej xeem sau npe. Piv txwv li, cov neeg tsim khoom ntawm cov ntawv thov tam sim no tuaj yeem siv lawv tus kheej ntiag tug sau npe, uas tuaj yeem siv tau thaum sau npe nyob hauv Cargo.toml, thiab siv cov qauv qauv zoo ib yam li crates.io rau lawv cov khoom, nrog rau kev xa mus rau ob qho tib si crates. io thiab rau koj tus kheej sau npe.

    Txhawm rau ntxiv cov ntawv sau npe sab nraud rau .cargo/config (nyob hauv $HOME lossis hauv cov npe pob)
    muab ntu "[sau npe]", thiab siv qhov kev sau npe sab nraud, qhov kev xaiv "sau npe" tau tshwm sim hauv cov lus piav qhia ntawm txhua qhov kev vam khom hauv Cargo.toml. Txhawm rau txuas mus rau ib qho kev sau npe ntxiv, tsuas yog tso cov ntawv pov thawj pov thawj hauv cov ntaub ntawv ~/.cargo/credentials thiab khiav cov lus txib
    "cargo login --registry = my-registry" thiab luam tawm ib pob -
    "cargo publish -registry = my-registry";

  • Ntxiv kev txhawb nqa tag nrho rau kev siv "?" tus neeg teb xov tooj. hauv kev xeem cov kws kho mob, tso cai rau koj siv tus lej piv txwv los ntawm cov ntaub ntawv ua cov ntawv xeem. Yav dhau los tus neeg teb xov tooj
    "?" tuaj yeem siv los daws qhov yuam kev thaum lub sijhawm sim ua tiav tsuas yog nyob rau hauv lub xub ntiag ntawm "fn main()" ua haujlwm lossis hauv "#[test]" ua haujlwm;

  • Hauv kev cai tus cwj pwm txhais tau siv cov txheej txheem macros muab lub peev xwm los siv cov cim tsis txaus ntseeg (β€œ#[attr($tokens)]”, β€œ#[attr[$tokens]] thiab #[attr{$tokens}]”). Yav dhau los, cov ntsiab lus tsuas yog teev nyob rau hauv ib tsob ntoo / daim ntawv rov qab siv cov kab ntawv, piv txwv li β€œ#[foo(bar, baz(quux, foo = β€œbar”))]”, tab sis tam sim no nws muaj peev xwm siv cov lej suav (' #[range(0. .10)]') thiab tsim xws li β€œ#[bound(T: MyTrait)]”;
  • Stabilized yam (zoo) TryFrom ΠΈ TryInto, tso cai rau hom kev hloov pauv nrog kev ua yuam kev. Piv txwv li, txoj hauv kev zoo li from_be_bytes nrog cov hom sib xyaw siv arrays raws li cov tswv yim, tab sis cov ntaub ntawv feem ntau tuaj hauv ib hom Slice, thiab hloov ntawm arrays thiab slices yog teeb meem ua manually. Nrog kev pab los ntawm cov yam ntxwv tshiab, cov haujlwm tshwj xeeb tuaj yeem ua tiav ntawm ya los ntawm kev hu rau .try_into(), piv txwv li, "cia num = u32::from_be_bytes(slice.try_into()?)". Rau kev hloov pauv uas ib txwm ua tiav (piv txwv li, los ntawm hom u8 rau u32), hom yuam kev tau ntxiv Ua tsis tau, tso cai rau kev siv pob tshab
    TryFrom rau tag nrho cov kev siv uas twb muaj lawm ntawm "Los ntawm";

  • Kev ua haujlwm tau raug tso tseg CommandExt::ua ntej_exec, uas tau tso cai rau tus neeg tuav haujlwm ua ntej khiav exec, uas tau raug tua nyob rau hauv cov ntsiab lus ntawm tus menyuam txheej txheem forked tom qab lub fork() hu. Nyob rau hauv cov xwm txheej zoo li no, qee qhov kev pab cuam ntawm niam txiv cov txheej txheem, xws li cov ntaub ntawv piav qhia thiab thaj chaw nco, tuaj yeem muab luam tawm, uas tuaj yeem ua rau tus cwj pwm tsis raug cai thiab kev ua haujlwm tsis raug ntawm cov tsev qiv ntawv.
    Nws raug nquahu kom siv cov haujlwm tsis zoo es tsis txhob ua ntej_exec CommandExt::pre_exec.

  • Stabilized kos npe thiab unsigned atomic integer hom xws li qhov loj ntawm 8 mus rau 64 khoom (piv txwv li, AtomicU8), nrog rau hom kos npe TsisZeroI[8|16|32|64|128].
  • Ib feem tshiab ntawm API tau raug tsiv mus rau qeb ruaj khov, suav nrog Ib qho::type_id, yuam kev::type_id, hlais::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[ntxiv|sub ] thiab SystemTime txoj kev tau ruaj khov ::checked_[add|sub]. Lub iter::from_fn thiab iter::successors functions tau stabilized;
  • Rau txhua hom integer, checked_pow, saturating_pow, wrapping_pow thiab overflowing_pow txoj kev raug siv;
  • Ntxiv lub peev xwm los pab kom ua tau zoo ntawm cov theem txuas los ntawm kev qhia qhov "-C linker-plugin-lto" tsim kev xaiv.

Tau qhov twg los: opennet.ru

Ntxiv ib saib