Rust 1.53 e lokollotsoe. Google e tla tšehetsa chelete ea ho eketsa tšehetso ea Rust ho Linux kernel

Ho lokolloa ha puo ea lenaneo la tsamaiso Rust 1.53, e thehiloeng ke morero oa Mozilla, empa hona joale e ntlafalitsoe ka tlas'a ts'ebetso ea mokhatlo o ikemetseng o sa etseng phaello Rust Foundation, e hatisitsoe. Puo e tsepamisitse maikutlo holim'a ts'ireletso ea mohopolo, e fana ka taolo ea memori ea othomathike, 'me e fana ka mekhoa ea ho fihlela ts'ebetso e phahameng ea ts'ebetso ntle le ho sebelisa pokello ea lithōle kapa nako ea ho sebetsa (nako ea ho sebetsa e fokotsehile ho qala le ho boloka laebrari e tloaelehileng).

Taolo ea memori ea othomathike ea Rust e felisa liphoso ha e tsamaisa lintlha le ho sireletsa khahlanong le mathata a bakoang ke ho qhekella ha memori ea boemo bo tlase, joalo ka ho fihlella sebaka sa memori kamora hore e lokolloe, li-null pointer dereferences, buffer overruns, jj. Ho aba lilaebrari, ho etsa bonnete ba ho kopanya le ho laola ba itšetlehileng ka bona, morero o nts'etsapele mookameli oa thepa ea thepa. Sebaka sa polokelo ea crates.io se tšehetsoa bakeng sa lilaebrari tse amohelang batho.

Litlhahiso tse ka sehloohong:

  • Bakeng sa li-arrays, tšobotsi ea IntoIterator e kentsoe ts'ebetsong, e u lumellang ho hlophisa phetisetso ea likarolo tse ngata ka boleng: bakeng sa i ho [1, 2, 3] {.. }

    Hape hoa khoneha ho fetisetsa lihlopha ho mekhoa e amohelang li-iterators, mohlala: let set = BtreeSet::from_iter ([1, 2, 3]); bakeng sa (a, b) ho some_iterator.chain([1]).zip([1, 2, 3]) { .. }

    Pele, IntoIterator e ne e sebelisoa feela bakeng sa litšupiso tse fapaneng, ke hore. ho pheta-pheta boleng ho hlokahala hore ho sebelisoe litšupiso (“&[1, 2, 3]”) kapa “[1, 2, 3].iter()”. Ho kenngwa tshebetsong ha IntoIterator bakeng sa dihlopha ho ile ha sitiswa ke mathata a tshebedisano a bakilweng ke mokopanyi wa pejana ho tloha ho array.into_iter() ho ya ho (&array).into_iter(). Mathata ana a rarollotsoe ka mokhoa oa ho lokisa - mokopanyi o tla tsoelapele ho fetolela array.into_iter() ho (&array).into_iter() joalokaha eka ha ho na ts'ebetsong ea tšobotsi ea IntoIterator, empa feela ha a bitsa mokhoa o sebelisa ".into_iter( )" syntax le ntle le ho thetsa mehala ka mokhoa "ho [1, 2, 3]", "iter.zip([1, 2, 3])", "IntoIterator::into_iter([1, 2, 3] )".

  • Hoa khoneha ho hlakisa mantsoe "|" (e utloahalang KAPA ts'ebetso) karolong efe kapa efe ea template, mohlala, sebakeng sa “Ba bang(1) | Tse ling(2)" joale u ka ngola "Ba bang(1 | 2)": sephetho sa papali { Ok(Some(1 | 2)) => { .. } Err(MyError { kind: FileNotFound | PermissionDenited, .. }) = > { .. } _ => { .. } }
  • Tšebeliso ea litlhaku tseo e seng tsa ASCII ho li-identifier e lumelletsoe, ho kenyeletsoa litlhaku tsa naha tse hlalositsoeng ho Unicode UAX 31 litlhaloso, empa ho sa kenyeletsoe litlhaku tsa emoji. Haeba u sebelisa litlhaku tse fapaneng empa tse tšoanang, moqapi o tla fana ka temoso. const BLÅHAJ: &str = "🦈"; struct 人 { 名字: Khoele, } let α = 1; letsos = 2; temoso: li-identifier pair tse nkoang li ka ferekanya lipakeng tsa 's' le 's'
  • Karolo e ncha ea li-API e fetiselitsoe sehlopheng se tsitsitseng, ho kenyelletsa le tse latelang tse tsitsitseng:
    • sehlopha::ho tloha_ref
    • sehlopha::ho tloha_mut
    • AtomicBool::fetch_update
    • AtomicPtr::fetch_update
    • BTreeSet:: boloka
    • BtreeMap:: boloka
    • BufReader::batla_leloko
    • cmp::min_ka
    • cmp::min_by_key
    • cmp::max_ka
    • cmp::max_by_key
    • DebugStruct::finish_non_exhausing
    • Nako::ZERO
    • Nako::MAX
    • Nako::ke_zero
    • Nako::e khotsofatsang_eketsa
    • Nako::saturating_sub
    • Nako::saturating_mul
    • f32::ha e_e tloaeleha
    • f64::ha e_e tloaeleha
    • IntoIterator bakeng sa lihlopha
    • {integer}::BITS
    • io::Phoso::Ha e tšehetsoe
    • NonZero*::lead_zero
    • NonZero*::trailing_zero
    • Khetho::kenya
    • Ho odara::is_eq
    • Ho odara::ke_ne
    • Ho odara::is_lt
    • Ho odara::is_gt
    • Ho laela::ke_le
    • Ho odara::is_ge
    • OsStr::make_ascii_lowercase
    • OsStr::make_ascii_mangolo-kholo
    • OsStr::to_ascii_lowercase
    • OsStr::to_ascii_matlase
    • OsStr::is_ascii
    • OsStr::eq_ignore_ascii_case
    • E ka bonoang::peek_mut
    • Rc::increment_strong_count
    • Rc::decrement_strong_count
    • selae::IterMut::as_slice
    • AsRef<[T]> bakeng sa selae::IterMut
    • impl SliceIndex bakeng sa (Bound , E tlamiloe )
    • Vec:: atolosa_ho tloha_ka hare
  • Boemo ba boraro ba ts'ehetso bakeng sa sethala sa wasm64-tse sa tsejoeng-tse sa tsejoeng se kentsoe ts'ebetsong. Boemo ba boraro bo kenyelletsa ts'ehetso ea mantlha, empa ntle le tlhahlobo ea boiketsetso, meaho ea semmuso ea phatlalatso, kapa ho hlahloba hore na khoutu e ka hahuoa.
  • Motsamaisi oa sephutheloana sa Cargo o tlositsoe ho sebelisa lebitso "main" bakeng sa lekala le ka sehloohong la polokelo ea Git (HEAD) ka boiketsetso. Litšetleho tse tšoaroang lipolokelong tse sebelisang lebitso main ho fapana le master ha li sa hloka branch = "main" ho hlophisoa.
  • Sebokeng, litlhoko tsa mofuta o tlase oa LLVM li phahamisetsoa ho LLVM 10.

Ho feta moo, re ka hlokomela phano ea lichelete bakeng sa nts'etsopele ea kopanyo ho Linux kernel ea lisebelisoa tsa ho ntlafatsa likarolo tsa puo ea Rust. Mosebetsi o tla etsoa ka har'a moralo oa morero oa Prossimo tlas'a ts'ehetso ea mokhatlo oa ISRG (Internet Security Research Group), e leng mothehi oa morero oa Let's Encrypt le ho khothalletsa HTTPS le nts'etsopele ea mahlale a ho eketsa ts'ireletso ea ts'ireletso. Marang-rang. Chelete e tla fanoa ke Google, e tla lefella mosebetsi oa Miguel Ojeda, mongoli oa morero oa Rust-for-Linux. Nakong e fetileng, ISRG le Google li se li tšehelitse ho theha mofuta o mong oa HTTP bakeng sa ts'ebeliso ea curl le nts'etsopele ea module e ncha ea TLS bakeng sa seva sa Apache http.

Ho latela Microsoft le Google, hoo e ka bang 70% ea bofokoli e bakoa ke ho tšoara mohopolo o sa bolokehang. Ho lebelletsoe hore ho sebelisa puo ea Rust ho nts'etsapele likarolo tsa kernel joalo ka bakhanni ba lisebelisoa ho tla fokotsa kotsi ea bofokoli bo bakoang ke ho tšoara memori e sa sireletsehang le ho felisa liphoso tse kang ho fihlella sebaka sa memori kamora hore e lokolloe le ho feta meeli ea buffer.

Ho sebetsa ka mokhoa o sireletsehileng oa memori ho fanoa ka Rust ka nako ea ho bokella ka ho hlahloba litšupiso, ho boloka tlaleho ea botho ba ntho le nako ea bophelo ba ntho (scope), hammoho le ka tlhahlobo ea ho nepahala ha phihlello ea mohopolo nakong ea ts'ebetso ea khoutu. Rust e boetse e fana ka ts'ireletso khahlano le phallo e felletseng, e hloka ho qalisoa ha boleng bo fapaneng pele e sebelisoa, e sebetsana le liphoso hantle laeboraring e tloaelehileng, e sebelisa mohopolo oa litšupiso tse ke keng tsa fetoha le tse fapaneng ka mokhoa o ikhethileng, e fana ka ho thaepa ho tiileng ho fokotsa liphoso tse utloahalang.

Source: opennet.ru

Eketsa ka tlhaloso