Rust 1.51 Programming Language Tso tawm

Kev tso tawm ntawm cov kab lus programming Rust 1.51, 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 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 ua haujlwm siab tsis tas siv cov khoom siv khib nyiab lossis lub sijhawm ua haujlwm (runtime raug txo qis rau kev pib pib thiab kev saib xyuas ntawm lub tsev qiv ntawv txheem).

Rust txoj kev tswj hwm tsis siv neeg lub cim xeeb txuag tus tsim tawm los ntawm kev ua yuam kev thaum tswj cov taw qhia thiab tiv thaiv cov teeb meem uas tshwm sim vim kev tswj hwm kev nco 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.

Main innovations:

  • Cov kev ua haujlwm cuam tshuam nrog kev siv cov generics tas li tau txais cov xwm txheej ntawm qhov khoom siv tsawg kawg nkaus (MVP), muab lub teeb ntsuab rau kev siv dav. Const generics tso cai rau cov hom tuaj yeem ua rau cov txiaj ntsig tas li, piv txwv li. siv cov lus sib cav dav dav txwv rau ntau yam ntawm qhov tseem ceeb, tsis yog hom lossis lub neej. Qhov no feature tso cai rau koj siv cov integer-parameterized hom thiab abstraction thaum tsim qhov zoo rau arrays ntawm txhua qhov loj me yam tsis tas yuav tsim ib hom sib cais rau txhua qhov kev siv tau los xyuas kom meej tias tsis muaj qhov tshwm sim tawm.

    Pib nrog qhov kev tso tawm tam sim no, rau arrays nrog hom "[T; N]" (hom T thiab qhov loj N) muab lub peev xwm rau hom paub daws teeb meem thiab qhov loj me uas siv cov txiaj ntsig nrog txhua tus lej, boolean thiab cov cim hom (structuring thiab enum hom tseem tsis tau txais kev txhawb nqa). Cov generics tas li ua kom yooj yim rau kev txhim kho tsev qiv ntawv; piv txwv li, siv cov array uas tsis khi rau ib hom thiab qhov loj me, koj tuaj yeem qhia meej: struct Array { // ^^^^^^^^^^^^^^^^^^^ txhais ntawm ib daim ntawv teev npe tsis tu ncua: [T; LENGTH] // ^^^^^^ nws siv }

    Thaum siv tiag tiag nrog lub ntsiab lus ntawm "Array Β» lub compiler yuav tsim ib tug monomorphic version ntawm Array: struct Array { lis: [u8; 32] ib.

  • Lub std::array::IntoIter API, raws li qhov generics tas mus li, tau ruaj khov, uas koj tuaj yeem tsim iterators los ntawm tus nqi rau ib qho array: fn main() {cia array = [1, 2, 3, 4, 5] ; // Yav dhau los, kom iterate tshaj tus nqi, koj yuav tsum hu rau .iter() txoj kev rau cov khoom hauv array.iter().copied() { println!("{}", yam); } // Tam sim no koj tuaj yeem qhia rau cov khoom hauv std::array::IntoIter::new(array) { println!("{}", item); }}
  • Tus neeg saib xyuas pob khoom tam sim no txhawb nqa qhov kev daws teeb meem tshiab hauv Cargo.toml, uas tuaj yeem siv los ua kom muaj qhov thib ob version ntawm kev daws teeb meem. Tus tshiab version ntawm tus definer zam combining dependency nta teev nyob rau hauv lub "[features]" seem uas nws tsis tsim nyog, piv txwv li, thaum suav nrog ib tug dependency uas thov ib co qauv feature nyob rau hauv tsim scripts thiab macros, tab sis thaum siv ib tug uas tsis yog-tus qauv feature. nyob rau hauv lub resulting executable ntaub ntawv .

    Txog rau tam sim no, lub peev xwm ntawm ib pob tau hais ntau zaus hauv daim duab dependency tau ua ke. Piv txwv li, yog tias ib qhov project suav nrog kev vam khom foo uas txhais tau tias muaj peev xwm A thiab B, thiab cov pob no yog siv rau hauv lwm cov pob khoom thiab baz, txawm tias bar nyob ntawm foo nrog feature A, thiab baz nyob ntawm foo nrog feature B, ces Cov txiaj ntsig yuav yog cargo yuav muab cov yam ntxwv no thiab suav nrog foo nrog cov yam ntxwv A thiab B suav nrog. Txoj kev no yuav ua rau muaj qhov tshwj xeeb uas tau ua haujlwm vim qee qhov kev vam khom tsis sib haum nrog lub hom phiaj uas cov txiaj ntsig tau tsim. Piv txwv li, thaum koj xav siv ib tug version ntawm foo nrog "#![no_std]" nyob rau hauv ib tug executable tsim nrog "#![no_std]", thiab tib lub sij hawm siv foo nrog "std" thaum lub sij hawm tsim nyob rau hauv build. rs. Thaum qhia meej txog kev daws teeb meem = "2" hauv Cargo.toml, tus thawj tswj pob tam sim no yuav sim daws qhov teeb meem no kom raug, cais cov dev, tus tswv thiab lub hom phiaj kev vam khom.

  • Cargo siv cov kev xaiv cais-debuginfo, teeb tsa hauv ntu "[profile]", thiab tus chij sib txuas "-Csplit-debuginfo=unpacked" hauv rustc, muab kev siv cov txheej txheem tshiab rau kev txuag cov ntaub ntawv debugging, uas tshem tawm qhov xav tau. hu rau dsymutil cov nqi hluav taws xob thiab ua kom cov txheej txheem ua kom nrawm nrog cov ntaub ntawv debugging ntawm macOS.
  • Stabilized makos "ptr::addr_of!" thiab "ptr::addr_of_mut!", uas tso cai rau koj los tsim cov ntsiab lus nyoos rau cov teb tsis sib xws. siv std::ptr; #[repr(packed)] struct Packed { f1: u8, f2: u16, } cia packed = Packed { f1: 1, f2: 2 }; // &packed.f2 yuav tsim ib qho kev taw qhia tsis sib haum ua rau tus cwj pwm tsis meej cia raw_f2 = ptr::addr_of!(packed.f2); assert_eq!(unsafe { raw_f2.read_unaligned() }, 2);
  • Ib feem tshiab ntawm API tau raug xa mus rau pawg ruaj khov, suav nrog cov hauv qab no tau ruaj khov:
    • Arc::decrement_strong_count
    • Arc::increment_strong_count
    • Ib zaug::call_once_force
    • Peekable::next_if_eq
    • Peekable::next_if
    • Nrhiav::stream_position
    • array ::ua
    • ceeb::panic_any
    • ptr ::addr!
    • ptr::addr_of_mut!
    • daim::fil_with
    • slice::split_inclusive_mut
    • daim::split_inclusive
    • daim::strip_prefix
    • daim::strip_suffix
    • str::split_inclusive
    • sync::OnceState
    • task ::ua
  • Qhov thib peb theem ntawm kev txhawb nqa tau siv rau i386-unknown-linux-gnu, i486-unknown-linux-gnu, aarch64_be-unknown-linux-gnu, aarch64-unknown-linux-gnu_ilp32 thiab aarch64_be-unknown-linux-gnu_ilp32 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.

Tau qhov twg los: opennet.ru

Ntxiv ib saib