Sgaoileadh cànain prògramaidh Rust 1.37

foillsichte sgaoileadh cànan prògramadh siostam Meirge 1.37, a stèidhich am pròiseact Mozilla. Bidh 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.

Bidh riaghladh cuimhne fèin-ghluasadach Rust a’ saoradh an leasaiche bho làimhseachadh phuing agus a’ dìon an aghaidh dhuilgheadasan ag èirigh bho làimhseachadh cuimhne aig ìre ìosal, leithid slighean cuimhne às deidh an-asgaidh, ro-aithrisean puing null, cus bufair, agus an leithid. Thathas a’ leasachadh manaidsear pacaid gus leabharlannan a sgaoileadh, dèanamh cinnteach à co-chruinneachadh agus riaghladh eisimeileachd leis a’ phròiseact. Cargo, a 'toirt cothrom dhut na leabharlannan a tha a dhìth airson a' phrògram fhaighinn ann an aon bhriogadh. Tha stòr a’ faighinn taic gus aoigheachd a thoirt do leabharlannan cliathaichean.io.

prìomh innleachdan:

  • Anns an rustc compiler tèarainte taic airson optimization stèidhichte air toraidhean pròifil còd (PGO, Optimization Treòraichte le Pròifil),
    a’ toirt cothrom dhut còd nas fheàrr a ghineadh stèidhichte air mion-sgrùdadh staitistig a chaidh a chruinneachadh aig àm cur an gnìomh a’ phrògraim. Gus pròifil a ghineadh, tha am bratach “-C profile-generate” air a thoirt seachad, agus gus am pròifil a chleachdadh aig àm co-chruinneachadh - “-C profile-use” (an toiseach, tha am prògram air a chruinneachadh leis a ’chiad bhratach, a’ ruith timcheall, agus às deidh a chruthachadh am pròifil, tha e air ath-chruinneachadh leis an dàrna bratach);

  • Nuair a thèid an àithne “cargo run” a chuir an gnìomh, a tha goireasach a chleachdadh airson a bhith a’ dèanamh deuchainn gu sgiobalta air tagraidhean tòcan, chaidh an comas faidhle so-ghnìomhaichte a thaghadh gu fèin-ghluasadach a chuir ris ma tha grunn fhaidhlichean so-ghnìomhaichte sa phacaid. Tha am faidhle bunaiteach a thèid a chuir gu bàs air a dhearbhadh tron ​​​​stiùireadh bunaiteach anns an roinn [pasgan] le paramadairean pacaid, a leigeas leat ainm an fhaidhle a shònrachadh gu soilleir tron ​​​​bhratach “-bin” gach uair a ruitheas tu “cargo run”;
  • Tha an àithne “reiceadair bathair”, air a thoirt seachad roimhe mar pasgan fa leth. Leigidh an àithne leat obair a chuir air dòigh le leth-bhreac ionadail de eisimeileachd - às deidh dhut “reiceadair bathair” a chuir an gnìomh, thèid a h-uile còd stòr de eisimeileachd a ’phròiseict a luchdachadh sìos bho crates.io gu eòlaire ionadail, a dh’ fhaodar a chleachdadh an uairsin airson obair gun a bhith a ’faighinn cothrom air cliathran. io (às deidh an àithne a chuir an gnìomh, chithear sanas airson an rèiteachadh atharrachadh gus an eòlaire airson togail a chleachdadh). Tha am feart seo air a chleachdadh mar-thà gus lìbhrigeadh an trusaidh meirge a chuir air dòigh le pacadh de gach eisimeileachd ann an aon tasglann leis an fhoillseachadh;
  • Tha e comasach a-nis ceanglaichean a chruthachadh gu roghainnean enum a’ cleachdadh aliases seòrsa (mar eisimpleir, ann am bodhaig na gnìomh “fn increment_or_zero(x: ByteOption) faodaidh tu “ByteOption:: Chan eil gin => 0”) a shònrachadh, seòrsa de thogail àireamhachaidh (‹ MyType‹.. ›› ::option => N) no Fèin-ruigsinneachd (ann am blocaichean c &self faodaidh tu “Fèin::Quarter => 25” a shònrachadh);
  • Chuir sinn ris a’ chomas air cumaidhean gun ainm a chruthachadh ann am macros. An àite ainm na h-eileamaid a mhìneachadh ann an “const”, faodaidh tu a-nis an caractar “_” a chleachdadh gus aithnichear nach eil ag ath-aithris a thaghadh gu dinamach, a’ seachnadh còmhstri ainm nuair a chuireas tu fios chun macro a-rithist;
  • Chuir sinn ris a’ chomas am feart “#[repr(align(N))” a chleachdadh le enums a’ cleachdadh co-chòrdadh coltach ri bhith a’ mìneachadh structar AlignN‹T> le co-thaobhadh agus an uairsin a’ cleachdadh AlignN‹MyEnum›;
  • Chaidh cuibhreann ùr den API a ghluasad chun roinn stàbaill, a’ gabhail a-steach am BufReader ::bufair, BufWriter ::bufair, agus
    cealla ::bho_mut,
    cealla :: as_slice_of_cells,
    DoubleEndedIterator ::nth_back,
    Roghainn::xor
    {i, u}{8,16,64,128,size} :: reverse_bits, wrapping :: reverse_bits agus
    sliseag ::copy_taobh a-staigh.

A bharrachd air an sin, faodar a thoirt fa-near toiseach na deuchainn pròiseact Async-std, a tha a’ tabhann tionndadh asyncronach de leabharlann àbhaisteach Rust (port den leabharlann std, anns a bheil a h-uile eadar-aghaidh air a thabhann ann an dreach async agus deiseil airson a chleachdadh leis a ’cho-chòrdadh async / feitheamh).

Source: fosgailtenet.ru

Cuir beachd ann