Rust 1.39 Programming Language Tso tawm

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

  • Stabilized ib qho tshiab asynchronous programming syntax raws li "async" muaj nuj nqi, async txav {... } block, thiab ".ait" tus neeg teb xov tooj, uas ua rau nws yooj yim dua los sau cov neeg tuav haujlwm uas tsis thaiv cov lus txib tseem ceeb. Piv nrog rau yav dhau los muab API rau asynchronous I/O, async/.ait constructs yog yooj yim to taub, nyeem tau heev, thiab tso cai rau koj siv complex asynchronous kev sib cuam tshuam siv cov kev paub txog kev khiav dej num raws li loops, cov lus qhia, thiab kev zam.

    Async-await syntax tso cai rau koj los tsim cov haujlwm uas tuaj yeem ncua lawv qhov kev ua tiav, rov qab tswj hwm rau cov xov tseem ceeb, thiab tom qab ntawd rov pib ua tiav los ntawm qhov chaw lawv tawm mus. Piv txwv li, qhov kev ncua no yuav tsum tau ua thaum ua I / O, uas lwm yam haujlwm tuaj yeem ua tiav thaum tos cov ntaub ntawv tom ntej tuaj txog. Functions thiab blocks txhais nrog "async fn" thiab "async txav" rov qab ua qhov zoo Yav tom ntej, uas txhais tau hais tias lub sijhawm ncua asynchronous suav suav sawv cev. Koj tuaj yeem ncaj qha pib qhov kev suav ncua sijhawm thiab tau txais cov txiaj ntsig siv tus neeg teb xov tooj ".ait". Tsis muaj kev nqis tes ua lossis npaj ua ntej kom txog rau thaum .ait hu ua, tso cai rau kev tsim cov nested complex tsim yam tsis muaj nyiaj siv ua haujlwm ntxiv.

    async fn first_function() -> u32 {.. }
    ...
    cia yav tom ntej = first_function();
    ...
    cia result: u32 = future.await;

  • Stabilized "#![feature(bind_by_move_pattern_guards)]", tso cai rau siv cov kev hloov pauv nrog hom khi "los ntawm kev txav mus los" nyob rau hauv cov qauv thiab siv cov ntaub ntawv xa mus rau cov hloov pauv no hauv "yog" ntu ntawm cov lus qhia "match". Piv txwv li, cov kev tsim kho hauv qab no tau tso cai tam sim no:

    fn main() {
    cia array: Box<[u8; 4]> = Box::new([1, 2, 3, 4]);

    match array {
    tooj
    if nums.iter().sum::() == 10

    => {
    poob (ntau);
    }
    _ => unreachable!(),
    }
    }

  • Tso cai qhia yam ntxwv thaum txiav txim siab muaj nuj nqi, kaw, thiab ua haujlwm pointers. Conditional compilation attributes (cfg, cfg_attr) uas tswj kev kuaj mob ntawm lint (tso cai, ceeb toom, tsis kam lees thiab txwv) thiab pabcuam macro hu rau tus cwj pwm tau txais kev txhawb nqa.

    fn len(
    #[cfg(windows)] hlais: &[u16], // siv qhov parameter ntawm Windows
    #[cfg(not(windows))] hlais: &[u8], // siv lwm OS
    ) -> siv {
    hlais.len()
    }

  • Cov lus ceeb toom txog cov teeb meem raug txheeb xyuas thaum tshawb xyuas qhov qiv ntawm qhov sib txawv (qiv tus checker) siv cov txheej txheem NLL (Non-Lexical Lifetimes), txhais nyob rau hauv qeb ntawm kev tuag yuam kev. Cia peb nco qab tias cov txheej txheem pov thawj raws li lub tswv yim tshiab rau kev coj mus rau hauv tus account lub neej ntawm cov qiv nyiaj hloov pauv tau ua rau nws muaj peev xwm txheeb xyuas qee qhov teeb meem uas tsis tau pom dua los ntawm cov ntawv pov thawj qub. Txij li qhov ua yuam kev tso tawm rau cov tshev no tuaj yeem cuam tshuam rau kev sib raug zoo nrog cov lej ua haujlwm yav dhau los, cov lus ceeb toom tau pib tshaj tawm tsis yog qhov yuam kev. Cov lus ceeb toom tam sim no tau hloov nrog qhov tsis raug thaum khiav hauv Rust 2018 hom. Nyob rau hauv qhov kev tso tawm tom ntej no, kev ua yuam kev tso tawm kuj tseem yuav raug siv hauv Rust 2015 hom, uas thaum kawg yuav tshem tawm cov qub qiv nyiaj;
  • Qhov "const" tus cwj pwm, uas txiav txim siab qhov muaj peev xwm ntawm kev siv nyob rau hauv ib qho ntsiab lus tsis tas li, yog siv rau cov haujlwm Vec::new, String::new, LinkedList::new, str::len, [T]::len , str::as_bytes,
    abs, wrapping_abs thiab overflowing_abs;

  • Ib feem tshiab ntawm APIs tau raug xa mus rau pawg ruaj khov, suav nrog cov txheej txheem uas tau ua kom ruaj khov
    Pin::into_inner, Instant::checked_duration_since thiab Instant::saturating_duration_since;

  • Tus neeg saib xyuas pob khoom tam sim no muaj peev xwm siv ".toml" txuas ntxiv rau cov ntaub ntawv teeb tsa. Ntxiv kev txhawb nqa ua ntej rau kev tsim cov tsev qiv ntawv tus qauv ncaj qha los ntawm Cargo. Ntxiv tus chij "--workspace", hloov qhov tsis sib haum xeeb "--tag nrho" chij. Ib daim teb tshiab tau ntxiv rau cov metadata "Luam tawm", uas tso cai rau koj tshaj tawm kev vam khom los ntawm kev qhia tus lej git thiab tus lej version. Ntxiv cov kev xaiv xeem "-Ztimings" los tsim ib daim ntawv qhia HTML ntawm lub sijhawm ua tiav ntawm ntau theem sib sau ua ke.
  • Hauv rustc compiler, cov lus tshuaj ntsuam xyuas suav nrog kev txiav cov tails ntawm cov lej uas tsis haum rau hauv lub davhlau ya nyob twg. Muab qib thib peb ntawm kev txhawb nqa rau lub hom phiaj platforms
    i686-tsis paub-uefi thiab sparc64-tsis paub-openbsd. Qib thib peb suav nrog kev txhawb nqa yooj yim, tab sis tsis muaj kev sim ntsuas thiab tshaj tawm cov kev tsim tawm.

Tau qhov twg los: opennet.ru

Ntxiv ib saib