Eisiúint na teanga ríomhchlárúcháin Rust 1.75 agus Unikernel Hermit 0.6.7

Tá scaoileadh na teanga ríomhchláraithe ilchuspóireach Rust 1.75, a bhunaigh an tionscadal Mozilla, ach atá forbartha anois faoi choimirce na heagraíochta neamhspleách neamhbhrabúis Rust Foundation, foilsithe. Díríonn an teanga ar shábháilteacht chuimhne agus cuireann sé bealaí ar fáil chun comhthreomhaireacht ard poist a bhaint amach agus úsáid á baint as bailitheoir truflais agus am rite a sheachaint (laghdaítear am rite go buntúsú agus cothabháil na leabharlainne caighdeánach).

Sábhálann modhanna láimhseála cuimhne Rust an forbróir ó earráidí nuair a bhíonn leideanna á n-ionramháil agus cosnaíonn siad i gcoinne fadhbanna a thagann chun cinn mar gheall ar láimhseáil cuimhne ar leibhéal íseal, mar shampla rochtain a fháil ar limistéar cuimhne tar éis é a shaoradh, leideanna nialais a dhíroghnú, róchaiteachas maoláin, etc. Chun leabharlanna a dháileadh, tógáil a sholáthar agus spleáchais a bhainistiú, forbraíonn an tionscadal an bainisteoir pacáiste lasta. Tacaítear leis an stór crates.io chun leabharlanna a óstáil.

Cuirtear sábháilteacht chuimhne ar fáil i Rust ag am tiomsaithe trí sheiceáil tagartha, súil a choinneáil ar úinéireacht réad, súil a choinneáil ar shaolréanna réad (scóip), agus measúnú a dhéanamh ar cheart an rochtain chuimhne le linn fhorghníomhú an chóid. Soláthraíonn Rust cosaint freisin i gcoinne ró-shreabhadh slánuimhir, éilíonn túsú éigeantach luachanna athraitheacha roimh úsáid, láimhseálann sé earráidí níos fearr sa leabharlann caighdeánach, cuireann sé coincheap na dtagairtí agus na n-athróg do-athraithe i bhfeidhm de réir réamhshocraithe, cuireann clóscríobh statach láidir ar fáil chun earráidí loighciúla a íoslaghdú.

Príomh-nuálaíochtaí:

  • Cuireadh leis an gcumas úsáid a bhaint as “async fn” agus an nodaireacht “->impl Trait” i dtréithe príobháideacha. Mar shampla, ag baint úsáide as “->impl Trait” is féidir leat modh trait a scríobh a sheolann iterator ar ais: trait Coimeádán { fn items(&self) -> impl Iterator; } impl Coimeádán le haghaidh MyContainer { fn items(&self) -> impl Iterator { self.items.iter().cloned() } }

    Is féidir leat tréithe a chruthú freisin le "async fn": trait HttpService { async fn fetch (&self, url: Url) -> HtmlBody; // leathnófar é go: // fn fetch(&self, url: Url) -> impl Future; }

  • Cuireadh API leis chun fritháirimh bheart a ríomh i gcoibhneas le leideanna. Agus tú ag obair le leideanna lom (“*const T” agus “*mut T”), d’fhéadfadh go mbeadh gá le hoibríochtaí chun fritháireamh a chur leis an bpointeoir. Roimhe seo, bhíothas in ann foirgniú mar “::add(1)” a úsáid, ag cur líon na mbeart a fhreagraíonn do mhéid “size_of::()”. Déanann an API nua an oibríocht seo a shimpliú agus is féidir fritháirimh beart a ionramháil gan na cineálacha a chaitheamh ar dtús go "* const u8" nó "* mut u8".
    • pointeoir::byte_add
    • pointeoir::byte_offset
    • pointeoir::byte_offset_from
    • pointeoir::byte_sub
    • pointeoir:: wrapping_byte_add
    • pointeoir:: wrapping_byte_offset
    • pointeoir:: wrapping_byte_sub
  • Obair leanúnach chun feidhmíocht an tiomsaitheora meirge a mhéadú. Cuireadh an optimizer BOLT leis, a ritheann sa chéim iar-naisc agus a úsáideann faisnéis ó phróifíl forghníomhaithe réamhullmhaithe. Trí BOLT a úsáid is féidir leat cur i gcrích an tiomsaitheora a bhrostú de thart ar 2% trí leagan amach an chóid leabharlainne librustc_driver.so a athrú le húsáid níos éifeachtaí a bhaint as taisce an phróiseálaí.

    Áiríodh leis an tiomsaitheoir rustc a thógáil leis an rogha "-Ccodegen-units=1" chun cáilíocht an bharrfheabhsú in LLVM a fheabhsú. Léiríonn na tástálacha a rinneadh méadú thart ar 1% ar an bhfeidhmíocht i gcás na tógála “-Ccodegen-units=1.5”. Tá na huasmhéaduithe breise cumasaithe de réir réamhshocraithe ach amháin don ardán x86_64-unknown-linux-gnu.

    Rinne Google tástáil ar na huasmhéaduithe a luadh roimhe seo chun am tógála comhpháirteanna ardán Android scríofa i Rust a laghdú. Trí úsáid a bhaint as “-C codegen-units=1” agus Android á thógáil, ligeadh dúinn méid an fhoireann uirlisí a laghdú 5.5% agus a fheidhmíocht a mhéadú 1.8%, agus tháinig méadú faoi dhó beagnach ar am tógála an fhoireann uirlisí féin.

    Trí bhailiú truflais nasc-am a chumasú (“--gc-sections”) tháinig an gnóthachan feidhmíochta suas le 1.9%, rud a chuir ar chumas leas iomlán a bhaint as am naisc (LTO) suas le 7.7%, agus leas iomlán a bhaint as próifíl-bhunaithe (PGO) suas le 19.8%. Sa deireadh, cuireadh leas iomlán a bhaint as an bhfóntas BOLT, rud a d'éirigh leis an luas tógála a mhéadú go 24.7%, ach tháinig méadú 10.9% ar mhéid an fhoireann uirlisí.

    Eisiúint na teanga ríomhchlárúcháin Rust 1.75 agus Unikernel Hermit 0.6.7

  • Aistríodh cuid nua den API chuig an gcatagóir de chobhsaí, lena n-áirítear modhanna agus cur i bhfeidhm na dtréithe a chobhsú:
    • Adamhach*::ó_ptr
    • Amanna Comhad
    • FileTimesExt
    • Comhad::set_modified
    • Comhad::set_times
    • IPAddr::go_canónach
    • Ipv6Addr::go_canónach
    • Rogha:: as_slice
    • Rogha:: as_mut_slice
    • pointeoir::byte_add
    • pointeoir::byte_offset
    • pointeoir::byte_offset_from
    • pointeoir::byte_sub
    • pointeoir:: wrapping_byte_add
    • pointeoir:: wrapping_byte_offset
    • pointeoir:: wrapping_byte_sub
  • Úsáidtear an tréith “const”, a chinneann an fhéidearthacht é a úsáid in aon chomhthéacs seachas tairisigh, sna feidhmeanna:
    • Ipv6Addr::go_ipv4_mapped
    • B'fhéidirUninit:: glacadh_init_léamh
    • B'fhéidirUninit::nialas
    • mem:: idirdhealaitheach
    • mem::náid
  • Tá an tríú leibhéal tacaíochta curtha i bhfeidhm do na hardáin csky-unknown-linux-gnuabiv2hf, i586-unknown-netbsd agus mipsel-unknown-netbsd. Tá tacaíocht bhunúsach i gceist leis an tríú leibhéal, ach gan tástáil uathoibrithe, foirgnimh oifigiúla a fhoilsiú, nó seiceáil an féidir an cód a thógáil.

Ina theannta sin, is féidir linn a thabhairt faoi deara leagan nua den tionscadal Hermit, a fhorbraíonn eithne speisialaithe (unikernel), scríofa sa teanga Rust, a sholáthraíonn uirlisí chun feidhmchláir féinchuimsitheacha a thógáil ar féidir leo oibriú ar bharr hypervisor nó crua-earraí lom gan sraitheanna breise. agus gan córas oibriúcháin. Nuair a bheidh sé tógtha, tá an t-iarratas nasctha go statach le leabharlann, a chuireann an fheidhmiúlacht riachtanach go léir i bhfeidhm go neamhspleách, gan a bheith ceangailte leis an eithne OS agus leabharlanna córais. Déantar cód an tionscadail a dháileadh faoi cheadúnais Apache 2.0 agus MIT. Tacaítear le Tionól chun feidhmchláir atá scríofa i Rust, Go, Fortran, C agus C++ a chur i gcrích go neamhspleách. Tá an tionscadal ag forbairt a bootloader féin freisin a ligeann duit Hermit a sheoladh ag baint úsáide as QEMU agus KVM.

Foinse: oscailtenet.ru

Add a comment