Einnsean Hermes JavaScript le stòr fosgailte Facebook

Einnsean JavaScript aotrom le stòr fosgailte Facebook Hermes, air a bharrrachadh airson a bhith a’ ruith thagraidhean stèidhichte air an fhrèam Dùthchasach React air an àrd-ùrlar Android. Sgioba taice Hermes air a thogail a-steach ann an React Native a’ tòiseachadh le sgaoileadh 0.60.2 an-diugh. Tha am pròiseact air a dhealbhadh gus fuasgladh fhaighinn air duilgheadasan le amannan tòiseachaidh fada airson tagraidhean JavaScript dùthchasach agus caitheamh mòr de ghoireasan. Còd sgrìobhte ann an C ++ agus air a chuairteachadh fo chead MIT.

Am measg nam buannachdan bho bhith a’ cleachdadh Hermes, tha lùghdachadh ann an ùine tòiseachaidh an tagraidh, lùghdachadh ann an caitheamh cuimhne agus lùghdachadh ann am meud an tagraidh. Nuair a bhios tu a’ cleachdadh V8, is e na h-ìrean as motha a bheir ùine seachad na h-ìrean de bhith a’ parsadh a’ chòd stòr agus ga chur ri chèile air an itealan. Bheir Hermes na ceumannan sin chun ìre togail agus leigidh e le tagraidhean a bhith air an lìbhrigeadh ann an cruth bytecode teann agus èifeachdach.

Gus an tagradh a chuir an gnìomh gu dìreach, thèid inneal brìgheil a chaidh a leasachadh taobh a-staigh a ’phròiseict a chleachdadh leis an neach-cruinneachaidh sgudail SemiSpace, a bhios a’ cuairteachadh bhlocaichean a-mhàin mar a dh ’fheumar (Air iarrtas), a’ toirt taic do ghluasad agus defragmentation bhlocaichean, a ’tilleadh cuimhne saor chun t-siostam obrachaidh, gun a bhith bho àm gu àm. a’ sganadh susbaint a’ charn gu lèir.

Tha giullachd JavaScript air a roinn ann an grunn ìrean. An toiseach, tha na teacsaichean tùsail air am parsadh agus tha riochdachadh eadar-mheadhanach den chòd air a chruthachadh (Hermes IR), stèidhichte air an riochdachadh SSA (Sònrachadh Singilte Statach). An ath rud, tha an riochdachadh eadar-mheadhanach air a phròiseasadh ann an optimizer, a bhios a’ cleachdadh dhòighean optimization statach air adhart gus a’ chòd eadar-mheadhanach bun-sgoile a thionndadh gu riochdachadh eadar-mheadhanach nas èifeachdaiche fhad ‘s a tha e a’ gleidheadh ​​​​semantics tùsail a ’phrògraim. Aig an ìre mu dheireadh, thèid an bytecode airson an inneal brìgheil clàraichte a chruthachadh.

Anns an einnsean le taic bho pàirt de inbhe JavaScript ECMAScript 2015 (is e an amas mu dheireadh làn thaic a thoirt dha) agus a’ toirt seachad co-chòrdalachd leis a’ mhòr-chuid de thagraidhean React Native a tha ann mar-thà. Tha Hermes air co-dhùnadh gun a bhith a’ toirt taic do choileanadh ionadail eval (), le aithrisean, meòrachadh (Meòrachadh agus Proxy), Intl API agus cuid de bhrataichean ann an RegExp. Gus Hermes a chomasachadh ann an tagradh React Native, dìreach cuir an roghainn “enableHermes: true” ris a’ phròiseact. Tha e comasach cuideachd Hermes a thogail ann am modh CLI, a’ toirt cothrom dhut faidhlichean JavaScript neo-riaghailteach a chuir an gnìomh bhon loidhne-àithne. Tha modh cruinneachaidh leisg ri fhaighinn airson debugging, a leigeas leat gun a bhith a 'cur ri chèile JavaScript a h-uile turas tron ​​​​phròiseas leasachaidh, ach a bhith a' gineadh bytecode air an itealan a tha air an inneal mu thràth.

Aig an aon àm, chan eil Facebook an dùil Hermes atharrachadh airson Node.js agus fuasglaidhean eile, le fòcas a-mhàin air tagraidhean gluasadach (tha cruinneachadh AOT an àite JIT as fheàrr ann an co-theacsa siostaman gluasadach, aig a bheil beagan RAM agus Flash nas slaodaiche). Deuchainn dèanadais tòiseachaidh air a dhèanamh le luchd-obrach Microsoft air fhoillseachadhnuair a bhios tu a’ cleachdadh Hermes, gum bi an aplacaid Microsoft Office airson Android ri fhaighinn airson a chleachdadh ann an 1.1 diog. às deidh tòiseachadh agus ag ithe 21.5MB de RAM, agus nuair a bhios tu a’ cleachdadh an einnsean V8 bheir e 1.4 diogan airson tòiseachadh agus is e caitheamh cuimhne 30MB.

Cur-ris: Facebook fhoillseachadh toraidhean deuchainn fhèin. Nuair a bha thu a’ cleachdadh Hermes leis an tagradh MatterMost, chaidh an ùine airson tòiseachadh air cothrom air obair (TTI, Time To Interact) sìos bho 4.30 gu 2.01 diogan, chaidh meud a’ phacaid APK a lughdachadh bho 41 gu 22 MB, agus caitheamh cuimhne bho 185 gu 136 MB.

Source: fosgailtenet.ru

Cuir beachd ann