Sgaoileadh cànain prògramaidh Rust 1.66

Chaidh foillseachadh cànan prògramadh adhbhar coitcheann Rust 1.66, 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 a’ cuimseachadh air sàbhailteachd cuimhne agus a’ toirt seachad dòighean air co-shìnteachd obrach àrd a choileanadh fhad ‘s a tha e a’ seachnadh cleachdadh neach-cruinneachaidh sgudail agus ùine ruith (tha ùine ruith air a lughdachadh gu toiseach tòiseachaidh agus cumail suas an leabharlann àbhaisteach).

Bidh dòighean làimhseachaidh cuimhne Rust a’ sàbhaladh an leasaiche bho mhearachdan nuair a bhios iad 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.

Tha sàbhailteachd cuimhne air a thoirt seachad ann an Rust aig àm cruinneachaidh tro sgrùdadh iomraidh, cumail sùil air seilbh nithean, cumail sùil air beatha nithean (scopes), agus measadh dè cho ceart ‘s a tha ruigsinneachd cuimhne rè coileanadh còd. Bidh Rust cuideachd a’ toirt dìon an aghaidh thar-shruthan iomlan, a’ feumachdainn luachan caochlaideach a thòiseachadh mus tèid an cleachdadh, a’ làimhseachadh mhearachdan nas fheàrr san leabharlann àbhaisteach, a’ cur an gnìomh bun-bheachd iomraidhean neo-sheasmhach agus caochladairean gu bunaiteach, a’ tabhann clò-sgrìobhadh làidir statach gus mearachdan loidsigeach a lughdachadh.

Prìomh innleachdan:

  • Ann an àireamhachd le riochdachaidhean iomlan (am feart “#[repr(Int)]”), tha comharradh soilleir air an leth-bhreith (àireamh caochlaideach san àireamhachd) ceadaichte, eadhon ged a tha raointean anns an àireamhachd. #[repr(u8)] enum Foo { A(u8), # leth-bhreith 0 B(i8), # leth-bhreith 1 C(bool) = 42, # leth-bhreith 42 }
  • Gnìomh gnìomh a bharrachd :: sanas :: black_box a tha dìreach a’ tilleadh an luach a fhuaireadh. Leis gu bheil an neach-cruinneachaidh den bheachd gu bheil an gnìomh seo a’ dèanamh rudeigin, faodar an gnìomh black_box a chleachdadh gus optimizations cruinneachaidh airson lùban a dhì-cheadachadh nuair a bhios iad a’ dèanamh deuchainn coileanadh còd no nuair a thathar a’ sgrùdadh còd inneal a chaidh a chruthachadh (gus nach bi an neach-cruinneachaidh a’ beachdachadh air a’ chòd gun chleachdadh agus a thoirt air falbh). Mar eisimpleir, anns an eisimpleir gu h-ìosal, tha black_box(v.as_ptr()) a’ cur casg air an neach-cruinneachaidh bho bhith a’ smaoineachadh nach eil an vectar v ga chleachdadh. cleachd std ::hint ::black_box; fn push_cap (v: & mut Vec) { airson i ann an 0..4 { v.push(i); black_box(v.as_ptr()); } }
  • Tha am manaidsear pacaid “cargo” a’ tabhann an àithne “Thoir air falbh”, a leigeas leat eisimeileachd a thoirt air falbh bhon taisbeanadh Cargo.toml bhon loidhne-àithne.
  • Chaidh cuibhreann ùr den API a ghluasad chun roinn de stàball, a’ toirt a-steach dòighean agus buileachadh feartan air an socrachadh:
    • proc_macro :: Span :: source_text
    • u* ::{seic_cuir_soidhnigeadh, a' cur thairis_add_signed, saturating_add_signed, wrapping_add_signed}
    • i* ::{seic_add_gun ainm-sgrìobhte, a' cur thairis_add_gun ainm-sgrìobhte, saturating_add_unsigned, wrapping_add_unsigned}
    • i* ::{seic_sub_gun ainm-sgrìobhte, a' cur thairis_sub_gun ainm-sgrìobhte, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet :: {an toiseach, mu dheireadh, pop_first, pop_last}
    • BTreeMap :: {first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • Cuir buileachadh AsFd ris airson seòrsachan glas stdio nuair a bhios tu a’ cleachdadh WASI.
    • impl TryFrom > airson Bogsa<[T; N]>
    • cridhe :: sanas :: black_box
    • Ùine:: try_from_secs_{f32,f64}
    • Roghainn:: unzip
    • std::os::fd
  • Tha na raointean "..X" agus "..=X" ceadaichte ann an teamplaidean.
  • Nuair a bhios tu a’ togail ceann aghaidh an inneal-cruinneachaidh meirge agus an backend LLVM, thathas a’ cleachdadh modhan optimization LTO (Link Time Optimization) agus BOLT (Inneal Optimization Binary and Layout) gus coileanadh a’ chòd a thig às a mheudachadh agus caitheamh cuimhne a lughdachadh.
  • Taic ìre 5 air a chuir an gnìomh airson àrd-ùrlaran armv5te-none-eabi agus thumbvXNUMXte-none-eabi. Tha an treas ìre a 'ciallachadh taic bunaiteach, ach às aonais deuchainn fèin-ghluasadach, a' foillseachadh togalaichean oifigeil agus a 'sgrùdadh comas a' chòd a thogail.
  • Taic a bharrachd airson ceangal ri macOS Generic Libraries.

A bharrachd air an sin, is urrainn dhuinn toirt fa-near gu bheil an cruinneachadh aghaidh aghaidh den chànan Rust (gccrs) a-steach do bhun-chòd GCC. Tha an aghaidh air a ghabhail a-steach ann am meur GCC 13, a thèid fhoillseachadh sa Chèitean 2023. A’ tòiseachadh le GCC 13, bidh e comasach an inneal àbhaisteach GCC a chleachdadh gus prògraman Rust a chuir ri chèile gun fheum air an inneal-cruinneachaidh rustc a chaidh a thogail a’ cleachdadh leasachaidhean LLVM a chuir a-steach. Bidh buileachadh Rust ann an GCC 13 ann an inbhe beta, gun a bhith air a chomasachadh gu bunaiteach.

Source: fosgailtenet.ru

Cuir beachd ann