Rust 1.53 navoaka. Google dia hanome vola fanampiana Rust amin'ny kernel Linux

Navoaka ny famoahana ny fiteny fandaharana Rust 1.53, naorin'ny tetikasa Mozilla, saingy novolavolaina ankehitriny eo ambany fiahian'ny fikambanana tsy miankina Rust Foundation. Mifantoka amin'ny fiarovana ny fitadidiana ilay fiteny, manome fitantanana fitadidiana mandeha ho azy, ary manome fitaovana ahafahana manatratra ny parallèle amin'ny asa avo lenta nefa tsy mampiasa mpanangom-pako na fotoana fiasana (ahena ny fotoana fandehanana amin'ny fanombohana fototra sy fikojakojana ny tranomboky mahazatra).

Ny fitantanana fitadidiana mandeha ho azy an'i Rust dia manafoana ny lesoka rehefa manodinkodina ny tondro ary miaro amin'ny olana ateraky ny fanodikodinam-pahatsiarovana ambany, toy ny fidirana amin'ny faritra fitadidiana rehefa afaka izany, ny tsy fahampian'ny pointer tsy misy tondro, ny fihoaran'ny buffer, sns. Mba hizarana trano famakiam-boky, hiantohana ny fivoriambe ary hitantana ny fiankinan-doha, ny tetikasa dia mamolavola ny mpitantana fonosana Cargo. Ny tahiry crates.io dia tohanana amin'ny fampiantranoana tranomboky.

Fanavaozana lehibe:

  • Ho an'ny arrays, ny toetra IntoIterator dia nampiharina, izay ahafahanao mandamina ny famerenan'ny singa array amin'ny soatoavina: ho i in [1, 2, 3] { .. }

    Azo atao ihany koa ny mandefa arrays amin'ny fomba manaiky iterators, ohatra: let set = BTreeSet::from_iter([1, 2, 3]); ho an'ny (a, b) ao amin'ny some_iterator.chain([1]).zip([1, 2, 3]) { .. }

    Teo aloha, ny IntoIterator dia natao ho an'ny fanondroana array ihany, i.e. mba hamerenana ny soatoavina ilaina ny fampiasana references (β€œ&[1, 2, 3]”) na β€œ[1, 2, 3].iter()”. Ny fampiharana ny IntoIterator ho an'ny array dia voasakantsakan'ny olana mifanaraka nateraky ny fiovam-pamoronana taloha avy amin'ny array.into_iter() mankany (&array).into_iter(). Ireo olana ireo dia voavaha tamin'ny vahaolana iray - ny compiler dia hanohy hanova ny array.into_iter() ho (&array).into_iter() toy ny hoe tsy nisy fampiharana ny toetra IntoIterator, fa rehefa miantso ny fomba mampiasa ny ".into_iter() )" syntax ary tsy mikasika ny antso amin'ny endrika "amin'ny [1, 2, 3]", "iter.zip([1, 2, 3])", "IntoIterator::into_iter([1, 2, 3] )".

  • Azo atao ny mamaritra ny teny hoe "|" (lojika OR fandidiana) amin'ny ampahany amin'ny mΓ΄dely, ohatra, fa tsy "Some(1) | Ny sasany (2)" dia azonao atao izao ny manoratra "Some(1 | 2)": valin'ny lalao { Ok(Some(1 | 2)) => { .. } Err(MyError {karazana: FileNotFound | PermissionDenied, .. }) => { .. } _ => { .. } }
  • Ny fampiasana tarehin-tsoratra tsy ASCII amin'ny famantarana dia avela, ao anatin'izany ny tarehin-tsoratra nasionaly voafaritra ao amin'ny fanondroana Unicode UAX 31, fa tsy anisan'izany ny tarehin-tsoratra emoji. Raha mampiasa tarehintsoratra hafa nefa mitovy ianao, dia hamoaka fampitandremana ny mpanangona. const BLΓ…HAJ: &str = "🦈"; struct δΊΊ { 名字: Tady, } avelao Ξ± = 1; letsos = 2; fampitandremana: mpivady mpamantatra noheverina ho misafotofoto eo amin'ny 's' sy ny 's'
  • Ampahany vaovao amin'ny API no nafindra ho amin'ny sokajy stable, ao anatin'izany ireto manaraka ireto:
    • array::avy_ref
    • array :: avy amin'ny_mut
    • AtomicBool::fetch_update
    • AtomicPtr::fetch_update
    • BtreeSet::tazona
    • BtreeMap::tazona
    • BufReader::seek_relative
    • cmp::min_by
    • cmp::min_by_key
    • cmp::max_by
    • cmp::max_by_key
    • DebugStruct::finish_non_exhaustive
    • Duration::ZERO
    • Faharetana::MAX
    • Duration::is_zero
    • Faharetana:: mahavoky_add
    • Faharetana::mahavoky_sub
    • Faharetana::saturating_mul
    • f32::dia_tsy ara-dalΓ na
    • f64::dia_tsy ara-dalΓ na
    • IntoIterator ho an'ny array
    • {integer}::BITS
    • io::Error::Tsy tohana
    • NonZero*::leading_zeros
    • NonZero*::trailing_zeros
    • Safidy :: ampidiro
    • Manafatra::is_eq
    • Manafatra::is_ne
    • Manafatra::is_lt
    • Manafatra::is_gt
    • Manafatra::is_le
    • Manafatra::is_ge
    • OsStr::make_ascii_lowercase
    • OsStr::make_ascii_uppercase
    • OsStr::to_ascii_kely
    • OsStr::to_ascii_uppercase
    • OsStr::is_ascii
    • OsStr::eq_ignore_ascii_case
    • Peekable::peek_mut
    • Rc::mitombo_matanjaka_isa
    • Rc::mihena_matanjaka_isa
    • slice::IterMut::as_slice
    • AsRef<[T]> ho an'ny slice::IterMut
    • impl SliceIndex for (Bound , Voafatotra )
    • Vec:: extension_from_within
  • Ny ambaratonga fahatelo amin'ny fanohanana ny sehatra wasm64-tsy fantatra-tsy fantatra dia nampiharina. Ny ambaratonga fahatelo dia misy fanohanana fototra, saingy tsy misy fitiliana mandeha ho azy, famoahana fananganana ofisialy, na fanamarinana raha azo amboarina ny kaody.
  • Ny mpitantana fonosana entana dia nafindra hampiasa ny anarana "main" ho an'ny sampana lehibe amin'ny tahiry Git (HEAD) amin'ny alΓ lan'ny default. Ny fiankinan-doha apetraka ao amin'ny trano fitehirizam-bokatra mampiasa ny anarana main fa tsy master dia tsy mila sampana = "main" hamboarina intsony.
  • Ao amin'ny compiler, ny fepetra takiana amin'ny dikan-teny kely indrindra amin'ny LLVM dia atsangana ho LLVM 10.

Fanampin'izany, azontsika atao ny manamarika ny fanomezana famatsiam-bola ho an'ny fampivoarana ny fampidirana ao amin'ny kernel an'ny fitaovana Linux ho an'ny famolavolana singa amin'ny fiteny Rust. Ny asa dia hotanterahina ao anatin'ny rafitry ny tetikasa Prossimo eo ambany fiahian'ny fikambanana ISRG (Internet Security Research Group), izay mpanorina ny tetikasa Let's Encrypt ary mampiroborobo ny HTTPS sy ny fampivoarana ny teknolojia hampitomboana ny fiarovana ny Internet. Ny vola dia homen'ny Google, izay handoa ny asan'i Miguel Ojeda, mpanoratra ny tetikasa Rust-for-Linux. Teo aloha, ISRG sy Google dia efa namatsy vola ny famoronana backend HTTP hafa ho an'ny fampiasa curl sy ny fampivoarana mody TLS vaovao ho an'ny server Apache http.

Araka ny filazan'i Microsoft sy Google, manodidina ny 70% amin'ny vulnerability dia vokatry ny fikarakarana fahatsiarovana tsy azo antoka. Antenaina fa ny fampiasana ny fiteny Rust mba hamoronana singa kernel toy ny mpamily fitaovana dia hampihena ny loza ateraky ny fitadidiana tsy azo antoka ary hanafoana ny lesoka toy ny fidirana amin'ny faritra fitadidiana rehefa afaka izany ary mihoatra ny fetran'ny buffer.

Ny harafesina dia manery ny fiarovana ny fitadidiana amin'ny fotoana fanangonana amin'ny alΓ lan'ny fanamarinana reference, ny fananana zavatra ary ny fanaraha-maso mandritra ny androm-piainana (scopes), ary amin'ny fanombanana ny fahamarinan'ny fidirana amin'ny fitadidiana amin'ny fotoana fandehanana. Ny Rust koa dia manome fiarovana amin'ny fihoaran'ny integer, mitaky ny fanombohana ny soatoavina miovaova alohan'ny hampiasana azy, manana fikarakarana fahadisoana tsara kokoa ao amin'ny tranomboky mahazatra, mampiasa ny foto-kevitry ny fanondroana sy ny fari-pitsipika tsy azo ovaina amin'ny alΓ lan'ny default, ary manolotra sora-baventy matanjaka mba hampihenana ny lesoka lojika.

Source: opennet.ru

Add a comment