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