Rust 1.38 Programming Language Tso tawm

luam tawm system programming lus tso tawm Xeb 1.38, 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 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:

  • Ntxiv cov raj xa dej tso ua ke (pipelined), nyob rau hauv qhov kev tsim ntawm lub pob crate nyob ntawm qhov pib sai li sai tau thaum muaj cov ntaub ntawv dependency, yam tsis tau tos nws muab tso ua ke kom tiav. Thaum muab tso ua ke ib pob, cov dependencies tsis tas yuav tsum tau sib sau ua ke tag nrho, tsuas yog txhais cov metadata, uas suav nrog cov npe ntawm hom, dependencies, thiab cov khoom xa tawm. Metadata tau tsim muaj thaum ntxov hauv cov txheej txheem muab tso ua ke, yog li cov pob ntawv txuas tau tam sim no tuaj yeem muab tso ua ke ntau dhau los. Thaum tsim ib pob khoom, qhov kev thov hom tsis cuam tshuam rau kev ua tau zoo, tab sis yog tias tsim npog cov pob khoom nrog cov ceg ntoo, lub sij hawm tsim tag nrho tuaj yeem raug txo los ntawm 10-20%;
  • Xyuas kom paub tseeb tias siv cov haujlwm tsis raug std::mem::unitialized ΠΈ std::mem:: zero. Piv txwv li, std::mem::uninitialized yog yooj yim rau sai tsim arrays, tab sis nws misleads lub compiler vim hais tias nws zoo nkaus li pib, tab sis qhov tseeb tus nqi tseem uninitialized. Lub mem:: kev ua haujlwm tsis tsim nyog tau raug cim tias tsis muaj kev pom zoo thiab nws raug pom zoo kom siv hom nruab nrab hloov Tej zaumUnit. Raws li rau mem::zeroed, qhov kev ua haujlwm no tuaj yeem ua rau muaj teeb meem nrog hom uas tsis tuaj yeem lees txais pes tsawg tus nqi.

    Txhawm rau pab txheeb xyuas tus cwj pwm tsis raug cai, qhov kev tso tawm tshiab ntxiv ib daim ntawv txheeb xyuas rau cov ntawv sau uas pom qee qhov teeb meem nrog mem::uninitialized lossis mem::zeroed. Piv txwv li, tam sim no koj tau txais qhov yuam kev thaum sim siv mem::uninitialized lossis mem::zeroed nrog hom &T thiab Boxβ€ΉTβ€Ί, uas sawv cev rau cov khoom taw qhia uas tsis tuaj yeem lees txais cov txiaj ntsig null;

  • Qhov "#[deprecated]" tus cwj pwm tau nthuav dav kom tso cai rau cov pob khoom crate raug cim tias tsis siv lawm thiab teem caij rau kev tshem tawm yav tom ntej. Raws li Rust 1.38, tus cwj pwm no kuj tuaj yeem siv rau macros;
  • Ntxiv lub peev xwm los siv "#[global_allocator]" tus cwj pwm hauv submodules;
  • Ntxiv muaj nuj nqi std::any::type_name, uas tso cai rau koj mus nrhiav tau lub npe ntawm hom, uas yuav pab tau rau debugging lub hom phiaj. Piv txwv li, thaum lub sijhawm ua tiav qhov program koj tuaj yeem paub seb hom haujlwm twg hu ua:

    fn gen_valueβ€ΉT: Default>() -> T {
    println!("Initializing ib qho piv txwv ntawm {}", std::any::type_name::β€ΉTβ€Ί());
    Default::default()
    }

    fn main() {
    let _: i32 = gen_value(); # "i32" yuav luam tawm
    let _: String = gen_value(); # yuav sau "alloc::string::String"
    }

  • Extended functions ntawm tus qauv tsev qiv ntawv:
    • daim::{concat, txuas, koom} tam sim no tuaj yeem coj tus nqi &[T] ntxiv rau &T;
    • "*const T" thiab "*mut T" tam sim no siv tus cim::Unpin;
    • "Arcβ€Ή[T]β€Ί" thiab "Rcβ€Ή[T]β€Ί" tam sim no siv FromIteratorβ€ΉTβ€Ί;
    • iter::{StepBy, Peekable, Take} tam sim no siv DoubleEndedIterator.
    • ascii::EscapeDefault siv Clone thiab Zaub.
  • Ib feem tshiab ntawm APIs tau raug xa mus rau pawg ruaj khov, suav nrog cov txheej txheem uas tau ua kom ruaj khov
    • β€Ή*const Tβ€Ί::cast, β€Ή*mut Tβ€Ί::cast,
    • Duration::as_secs_f{32|64},
    • Duration::div_duration_f{32|64},
    • Duration::div_f{32|64},
    • Duration::from_secs_f{32|64},
    • Duration::mul_f{32|64},
    • kev faib ua haujlwm nrog cov seem
      div_euclid thiab rem_euclid rau tag nrho cov integer primitives;

  • Ntxiv kev txhawb nqa rau kev qhia qhov "--features" kev xaiv ntau zaus los pab kom muaj cov yam ntxwv sib txawv hauv tus neeg saib xyuas pob khoom;
  • Lub compiler muab qhov thib peb theem kev them nyiaj yug rau lub hom phiaj platforms aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc lub hom phiaj, armlinux7-unknown- -gnueabi, armv7-unknown-linux-musleabi, hexagon-unknown-linux-musl thiab riscv32i-tsis paub-tsis muaj-elf. Qib peb suav nrog kev txhawb nqa yooj yim, tab sis tsis muaj kev sim ntsuas thiab tshaj tawm cov kev tsim ua haujlwm.

Tau qhov twg los: opennet.ru

Ntxiv ib saib