Rust 1.53 air a leigeil ma sgaoil. Maoinichidh Google le bhith a’ cur taic Rust ris an kernel Linux

Chaidh foillseachadh cànan prògramadh an t-siostaim Rust 1.53, a chaidh a stèidheachadh le pròiseact Mozilla, ach a chaidh a leasachadh a-nis fo sgèith na buidhne neo-eisimeileach neo-phrothaideach Rust Foundation, fhoillseachadh. Tha an cànan ag amas air sàbhailteachd cuimhne, a’ toirt seachad riaghladh cuimhne fèin-ghluasadach, agus a’ toirt seachad dòigh air co-shìnteachd àrd-obrach a choileanadh gun a bhith a’ cleachdadh inneal-cruinneachaidh sgudail no ùine ruith (tha ùine ruith air a lughdachadh gu toiseach tòiseachaidh is cumail suas an leabharlainn àbhaisteach).

Bidh riaghladh cuimhne fèin-ghluasadach Rust a’ sàbhaladh an leasaiche bho mhearachdan nuair a bhios e a’ làimhseachadh chomharran agus a’ dìon an aghaidh dhuilgheadasan a thig am bàrr mar thoradh air làimhseachadh cuimhne aig ìre ìosal, leithid faighinn gu raon cuimhne às deidh dha a bhith air a shaoradh, a’ toirt iomradh air comharran null, cus bufair, msaa. Gus leabharlannan a sgaoileadh, togail a thoirt seachad agus eisimeileachd a riaghladh, bidh am pròiseact a’ leasachadh manaidsear pacaid Cargo. Tha an stòr crates.io a’ faighinn taic airson aoigheachd a thoirt do leabharlannan.

Prìomh innleachdan:

  • Airson arrays, chaidh an cumadh IntoIterator a chuir an gnìomh, a leigeas leat tionndadh eileamaidean rèite a chuir air dòigh a rèir luachan: airson i ann an [1, 2, 3] { .. }

    Tha e comasach cuideachd arrays a chuir air adhart gu modhan a tha a’ gabhail ri iterators, mar eisimpleir: let set = BTreeSet::from_iter([1, 2, 3]); airson (a, b) ann an some_iterator.chain ([1]).zip ([1, 2, 3]) { .. }

    Roimhe sin, cha deach IntoIterator a chuir an gnìomh ach airson iomraidhean sreath, i.e. gus ath-aithris thairis air luachan feumar iomraidhean (“&[1, 2, 3]”) no “[1, 2, 3].iter()” a chleachdadh. Chaidh bacadh a chuir air buileachadh IntoIterator airson arrays le cùisean co-chòrdalachd a dh’ adhbhraich tionndadh cruinneachaidh na bu thràithe bho array.into_iter() gu (&array).into_iter(). Chaidh na duilgheadasan sin fhuasgladh le fuasgladh obrach - leanaidh an compiler air ag atharrachadh array.into_iter() gu (&array).into_iter() mar nach deach an t-suaicheantas IntoIterator a chuir an gnìomh, ach dìreach nuair a chuireas tu fios chun dòigh a’ cleachdadh an “.into_iter() )" co-chòrdadh agus gun a bhith a 'beantainn ris na gairmean san fhoirm "ann an [1, 2, 3]", "iter.zip ([1, 2, 3])", "IntoIterator::into_iter ([1, 2, 3] )".

  • Tha e comasach abairtean “|” a shònrachadh (obrachadh loidsigeach NO) ann am pàirt sam bith den teamplaid, mar eisimpleir, an àite “Some(1) | Some(2)" faodaidh tu a-nis "Some(1 | 2)" a sgrìobhadh: maids an toradh { Ok(Some(1 | 2)) => { ..} mearachd(MyError { kind: FileNotFound | Cead air a dhiùltadh, .. }) => { .. } _ => { .. } }
  • Tha cleachdadh charactaran neo-ASCII ann an aithnichearan ceadaichte, a’ gabhail a-steach caractaran nàiseanta sam bith a tha air am mìneachadh ann an sònrachadh Unicode UAX 31, ach às aonais caractaran emoji. Ma chleachdas tu caractaran eadar-dhealaichte ach an aon rud, bheir an neach-cruinneachaidh rabhadh seachad. const BLÅHAJ: &str = "🦈"; structar 人 { 名字: String, } leig α = 1; leigsos = 2; rabhadh: thathas den bheachd gu bheil paidhir aithnichear troimh-chèile eadar ‘s’ agus ‘s’
  • Chaidh cuibhreann ùr de APIan a ghluasad chun roinn stàbaill, a’ toirt a-steach na leanas seasmhach:
    • sreath :: bho_ref
    • sreath :: bho_mut
    • AtomicBool ::fetch_update
    • AtomicPtr ::fetch_update
    • BTreeSet ::gleidheadh
    • BTreeMap ::glèidh
    • BufReader ::seek_relative
    • cmp::min_by
    • cmp::min_by_key
    • cmp:: max_by
    • cmp:: max_by_key
    • DebugStruct ::finish_non_exhaustive
    • Ùine:: ZERO
    • Ùine:: MAX
    • Ùine :: is_zero
    • Ùine :: saturating_add
    • Ùine :: saturating_sub
    • Ùine :: saturating_mul
    • f32 :: tha_ fo-àbhaisteach
    • f64 :: tha_ fo-àbhaisteach
    • IntoIterator airson arrays
    • {slànaighear} ::BITS
    • io::Mearachd:: Gun taic
    • NonZero* :: leading_zeros
    • NonZero* ::trailing_zeros
    • Roghainn:: cuir a-steach
    • Ag òrdachadh ::is_eq
    • Ag òrdachadh ::is_ne
    • Ag òrdachadh::is_lt
    • Ag òrdachadh ::is_gt
    • Ag òrdachadh ::is_le
    • Ag òrdachadh ::is_ge
    • OsStr :: make_ascii_lowercase
    • OsStr :: dèan_ascii_uppercase
    • OsStr :: to_ascii_lowercase
    • OsStr ::to_ascii_uppercase
    • OsStr ::is_ascii
    • OsStr :: eq_ignore_ascii_case
    • Sùil :: peek_mut
    • Rc:: àrdachadh_cunntas_strong
    • Rc:: lùghdachadh_cunnt_strong
    • sliseag ::IterMut :: as_slice
    • AsRef <[T]> airson sliseag ::IterMut
    • impl SliceIndex airson (Bound , Ceangailte )
    • Vec:: leudachadh_bho_taobh a-staigh
  • Chaidh an treas ìre de thaic airson an àrd-ùrlar wasm64-neo-aithnichte a chuir an gnìomh. Tha an treas ìre a’ toirt a-steach taic bhunaiteach, ach às aonais deuchainn fèin-ghluasadach, foillseachadh toglaichean oifigeil, no sgrùdadh an gabh an còd a thogail.
  • Chaidh am manaidsear pacaid Cargo a ghluasad gus an t-ainm “prìomh” a chleachdadh airson a’ phrìomh mheur de stòr Git (HEAD) a ghnàth. Chan fheum eisimeileachd a tha air an cumail ann an stòran a chleachdas an t-ainm prìomh an àite maighstir tuilleadh branch = "main" a rèiteachadh.
  • Anns an inneal-cruinneachaidh, tha na riatanasan airson an dreach as ìsle de LLVM air an àrdachadh gu LLVM 10.

A bharrachd air an sin, is urrainn dhuinn toirt fa-near solar maoineachaidh airson leasachadh amalachadh a-steach do kernel innealan Linux airson a bhith a’ leasachadh phàirtean ann an cànan Rust. Thèid an obair a dhèanamh taobh a-staigh frèam a’ phròiseict Prossimo fo sgèith na buidhne ISRG (Buidheann Sgrùdaidh Tèarainteachd Eadar-lìn), a stèidhich am pròiseact Let's Encrypt agus a bhrosnaicheas HTTPS agus leasachadh theicneòlasan gus tèarainteachd an t-siostaim a mheudachadh. Eadar-lìon. Thèid an t-airgead a thoirt seachad le Google, a phàigheas airson obair Miguel Ojeda, ùghdar a’ phròiseict Rust-for-Linux. Roimhe sin, tha ISRG agus Google mar-thà air maoineachadh a dhèanamh airson cruthachadh backend HTTP eile airson goireas curl agus leasachadh modal TLS ùr airson frithealaiche Apache http.

A rèir Microsoft agus Google, tha timcheall air 70% de chugallachd air adhbhrachadh le làimhseachadh cuimhne mì-shàbhailte. Thathas an dùil gun lughdaich cleachdadh cànan Rust gus co-phàirtean kernel leithid draibhearan inneal an cunnart bho chugallachd adhbhrachadh le làimhseachadh cuimhne mì-shàbhailte agus cuir às do mhearachdan leithid faighinn gu sgìre cuimhne às deidh dha a bhith air a shaoradh agus a dhol thairis air crìochan bufair.

Bidh Rust a’ sparradh sàbhailteachd cuimhne aig àm cruinneachaidh tro sgrùdadh iomraidh, sealbhachadh nithean agus lorg fad-beatha nithean (scopes), agus le bhith a’ measadh dè cho ceart ‘s a tha slighean cuimhne aig àm ruith. Bidh Rust cuideachd a’ toirt dìon an aghaidh tar-shruthan iomlan, ag iarraidh gun tèid luachan caochlaideach a thòiseachadh mus tèid an cleachdadh, gu bheil làimhseachadh mhearachdan nas fheàrr aige san leabharlann àbhaisteach, a’ cleachdadh bun-bheachd iomraidhean agus caochladairean neo-sheasmhach gu bunaiteach, agus a’ tabhann clò-sgrìobhadh làidir statach gus mearachdan loidsigeach a lughdachadh.

Source: fosgailtenet.ru

Cuir beachd ann