Sgaoileadh cànain prògramaidh Rust 1.51

Chaidh foillseachadh cànan prògramadh an t-siostaim Rust 1.51, 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:

  • Tha an gnìomh co-cheangailte ri cleachdadh generics seasmhach air inbhe toradh obrachail as ìsle (MVP) fhaighinn, a’ toirt an solas uaine airson a chleachdadh fad is farsaing. Tha Const generics a’ leigeil le seòrsaichean a bhith air an cur san fharsaingeachd gu luachan seasmhach, i.e. argamaidean coitcheann a chleachdadh cuibhrichte gu raon de luachan seasmhach, chan e seòrsaichean no beatha. Tha am feart seo a’ toirt cothrom dhut seòrsachan paramadair le àireamhan iomlan agus tarraing a-mach a chleachdadh nuair a bhios tu a’ cruthachadh comharran airson arrays de mheud sam bith gun a bhith agad ri seòrsa air leth a chruthachadh airson gach raon de luachan dligheach gus dèanamh cinnteach nach bi tachartasan taobh a-muigh crìochan ann.

    A’ tòiseachadh leis an fhoillseachadh gnàthach, airson arrays leis an t-seòrsa “[T; N]" (seòrsa T agus meud N) a’ toirt seachad comas air seòrsa agus meud a tharraing a-mach a’ cleachdadh luachan le seòrsa iomlanachd, boolean agus caractar (chan eil taic ri seòrsaichean struct agus enum fhathast). Bidh generics seasmhach gu mòr a’ sìmpleachadh leasachadh leabharlainn; mar eisimpleir, gus raon a chleachdadh nach eil ceangailte ri seòrsa agus meud sònraichte, faodaidh tu sònrachadh: struct Array { // ^^^^^^^^^^^^^^^^^ mìneachadh air liosta gnèitheach seasmhach: [T; FAD] // ^^^^^^ a chleachdadh }

    Nuair a thèid a chleachdadh leis a’ mhìneachadh seo air “Array » cruthaichidh an compiler dreach monomorphic de Array: struct Array {liosta: [u8; 32] }

  • Chaidh an std ::array ::IntoIter API, a tha stèidhichte air gnèitheachas seasmhach, a dhèanamh seasmhach, leis an urrainn dhut iterators a chruthachadh le luach airson sreath sam bith: fn main () {let array = [1, 2, 3, 4, 5] ; // Roimhe sin, gus ath-aithris a dhèanamh air luach, dh'fheumadh tu an dòigh .iter () airson nì ann an array.iter().copied() { println!("{}", item); } // A-nis is urrainn dhut sònrachadh airson rud ann an std::array::IntoIter:: new(array) { println!("{}", item); } }
  • Tha am manaidsear pacaid cargo a-nis a’ toirt taic do raon fuasglaidh ùr ann an Cargo.toml, a dh’ fhaodar a chleachdadh gus an dàrna dreach den fuasgladh feart a chomasachadh. Bidh an dreach ùr den mhìneachadh a’ seachnadh a bhith a’ cothlamadh feartan eisimeileachd a tha air an liostadh san roinn “[feartan]” far a bheil e neo-iomchaidh, mar eisimpleir, nuair a bhios e a’ toirt a-steach eisimeileachd a dh’ iarras feart àbhaisteach ann an sgriobtaichean togail agus macros, ach nuair a bhios tu a’ cleachdadh feart neo-àbhaisteach anns an fhaidhle so-ghnìomhaichte a thig às.

    Gu ruige seo, chaidh comasan pasgan a chaidh ainmeachadh iomadh uair sa ghraf eisimeileachd a chur còmhla. Mar eisimpleir, ma tha pròiseact a’ toirt a-steach foo eisimeileachd a mhìnicheas comasan A agus B, agus gu bheil am pasgan seo air a chleachdadh anns na pacaidean eile bàr is baz, ged a tha bàr an urra ri foo le feart A, agus tha baz an urra ri foo le feart B, an uairsin Is e an toradh a bhios ann an cargo còmhla ris na feartan sin agus a’ cur ri chèile foo le feartan A agus B. Dh’ fhaodadh an dòigh seo leantainn gu feart a tha air a chomasachadh air sgàth gu bheil cuid de eisimeileachd neo-chòrdail ris an t-siostam targaid airson a bheil an togail air a dhèanamh. Mar eisimpleir, nuair a tha thu airson dreach de foo a chleachdadh le “#![no_std]” ann an gnìomh a chaidh a thogail le “#![no_std]”, agus aig an aon àm cleachd foo le “std” rè an togail a-steach. rs. Nuair a shònraicheas tu resolver = "2" ann an Cargo.toml, feuchaidh manaidsear a’ phacaid a-nis ris a’ chòmhstri seo a làimhseachadh gu ceart, a’ sgaradh eisimeileachd dev, aoigheachd agus targaidean.

  • Bidh Cargo a’ buileachadh an roghainn split-debuginfo, suidhichte anns an roinn “[profile]”, agus a’ bhratach fhreagarrach “-Csplit-debuginfo= unpacked” ann an rustc, a’ tabhann dòigh ùr airson fiosrachadh deasbaid a shàbhaladh, a chuireas às don fheum air cuir fios gu goireas dsymutil agus luathaichidh e gu mòr am pròiseas togail le fiosrachadh deasbaid air macOS.
  • Makos seasmhach "ptr::addr_of!" agus “ptr::addr_of_mut!”, a leigeas leat comharran amh a chruthachadh airson raointean gun cheangal. cleachd std::ptr; #[repr(paced)] struct Packed { f1: u8, f2: u16, } let packed = Pacaichte { f1: 1, f2: 2 }; // &packed.f2 cruthaichidh e puing neo-ainmichte a’ leantainn gu giùlan neo-mhìnichte let raw_f2 = ptr::addr_of!(packed.f2); assert_eq! (mì-shàbhailte { raw_f2.read_unaligned() }, 2);
  • Chaidh cuibhreann ùr den API a ghluasad chun roinn stàbaill, a’ toirt a-steach na dòighean a leanas air an socrachadh:
    • Arc:: lùghdachadh_cunnt_strong
    • Arc:: àrdachadh_cunnt_strong
    • Aon uair:: call_once_force
    • Sùil :: an ath_if_eq
    • Sùil :: ath_if
    • Seek::stream_position
    • eagar::IntoIter
    • clisgeadh :: panic_any
    • ptr::addr_of!
    • ptr::addr_of_mut!
    • sliseag :: lìon_le
    • sliseag :: split_inclusive_mut
    • sliseag :: split_inclusive
    • sliseag :: strip_prefix
    • sliseag :: strip_suffix
    • str :: split_inclusive
    • sioncranachadh::OnceState
    • obair ::Wake
  • Chaidh an treas ìre de thaic a chuir an gnìomh airson an i386-unknown-linux-gnu, i486-unknown-linux-gnu, aarch64_be-unknown-linux-gnu, aarch64-unknown-linux-gnu_ilp32 agus aarch64_be-unknown-linux-gnu_ilp32 platformer. . 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.

Source: fosgailtenet.ru

Cuir beachd ann