Rust 1.34 Programming Language Tso tawm

Lub kaw lus programming lus Rust 1.34, tsim los ntawm Mozilla qhov project, tau raug tso tawm. 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. Txhawm rau faib cov tsev qiv ntawv, xyuas kom muaj kev sib dhos thiab tswj hwm kev vam khom, qhov project tab tom txhim kho Cargo pob tus neeg saib xyuas, uas tso cai rau koj kom tau txais cov tsev qiv ntawv xav tau rau qhov kev pab cuam hauv ib nias. Lub crates.io repository yog txaus siab rau hosting cov tsev qiv ntawv.

Main innovations:

  • 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.

    Ntxiv ib qho kev sau npe sab nraud rau ~/.cargo/config
    ib qho kev xaiv tshiab "my-registry" yog muab rau hauv seem "[sau npe]", thiab ib qho kev xaiv "lwm-crate" tau ntxiv los hais txog kev sau npe sab nraud hauv kev vam khom hauv Cargo.toml hauv "[dependencies]" ntu. 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 docttests, uas tso cai rau koj siv cov 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 cov cwj pwm kev cai uas tau teev tseg siv cov txheej txheem macros, nws tuaj yeem 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)]”;
  • Cov yam ntxwv ntawm TryFrom thiab TryInto tau ruaj khov, 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 dua siab tshiab uas ib txwm ua tiav (piv txwv li, los ntawm hom u8 txog u32), hom kev ua yuam kev Infallible tau raug ntxiv kom tso cai siv pob tshab.
    TryFrom rau tag nrho cov kev siv uas twb muaj lawm ntawm "Los ntawm";

  • Deprecated lub CommandExt::before_exec muaj nuj nqi, uas tso cai rau kev tua ntawm ib tug handler ua ntej exec uas raug tua nyob rau hauv cov ntsiab lus ntawm ib tug me nyuam 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.
    Hloov chaw ua ntej_exec, nws raug nquahu kom siv cov haujlwm tsis zoo CommandExt::pre_exec.

  • Stabilized kos npe thiab unsigned atomic integer hom xws li qhov loj me ntawm 8 mus rau 64 khoom (piv txwv li, AtomicU8), nrog rau hom kos npe NonZeroI[8|16|32|54|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 (rustc compiles Rust code rau hauv LLVM bitcode, uas tso cai rau LTO optimizations siv).

Tau qhov twg los: opennet.ru

Ntxiv ib saib