Cheerp 3.0, C / C ++ gu compiler JavaScript, air imrich gu ceadan Apache 2.0 agus LLVM

Chaidh an compiler Cheerp 3.0 a thoirt a-steach, a leigeas leat còd C / C ++ sam bith a chuir ri chèile gu WebAssembly no JavaScript. Tha am meur ùr ainmeil airson an neach-cruinneachaidh agus na leabharlannan a tha na chois a ghluasad gus na ceadan ceadaichte Apache 2.0 agus LLVM a chleachdadh, an àite a’ phoileasaidh ceadachd cuibhrichte a chaidh a chuir an sàs roimhe, a ’tabhann roghainn cead GPLv2 airson pròiseactan neo-mhalairteach agus cead seilbh airson feadhainn malairteach. Tha an còd cruinneachaidh stèidhichte air leasachaidhean bho LLVM agus Clang, agus a’ toirt a-steach optimizations a bharrachd gus coileanadh a leasachadh agus meud an toraidh cruinnichte a lughdachadh.

Faodar Cheerp a chleachdadh an dà chuid airson leabharlannan C/C ++ agus tagraidhean a tha ann mu thràth a ruith sa bhrobhsair, agus airson tagraidhean lìn àrd-choileanaidh agus co-phàirtean WebAssembly a chruthachadh bhon fhìor thoiseach. Leigidh am pròiseact leat còd a chur còmhla ann an C/C++ agus JavaScript ann an aon iarrtas lìn leis a’ chomas faighinn a-steach bho chòd JavaScript gu gnìomhan a chaidh a leasachadh an toiseach ann an C/C++, agus bho chòd C/C++ gu nithean JavaScript, leabharlannan JavaScript, Web API agus a h-uile feart DOM. Tha e comasach co-chruinneachaidhean aonaichte a chruthachadh, pàirt den chòd anns a bheil e air a chur ri chèile ann an JavaScript, agus pàirt a-steach do WebAssembly. Bidh e a’ toirt taic do phròiseactan togail a bhios a’ cleachdadh leabharlannan àbhaisteach libc agus libc ++.

An coimeas ris an inneal-cruinneachaidh Emscripten, bidh Cheerp a’ gineadh còd eadar-mheadhanach WebAssembly nas fheàrr agus nas toinnte (faidhlichean toraidh cuibheasach 7% nas lugha). Gu bun-bheachdail, is e na h-eadar-dhealachaidhean gu bheil Emscripten air a chleachdadh mar chruth nì WebAssembly agus a’ dèanamh ceangal agus optimization ann an ìre iar-giullachd WebAssembly (wasm-opt). Bidh Cheerp a’ cleachdadh bytecode LLVM mar riochdachadh eadar-mheadhanach airson leabharlannan agus faidhlichean nithean, a’ ceadachadh optimizations nas fharsainge a tha a’ cuairteachadh a’ phròiseict gu lèir agus a’ luathachadh meata-dàta aig ìre LLVM gun fheum air iar-ghiollachd.

A bharrachd air an sin, bidh Cheerp a’ cleachdadh an optimizer PreExecuter, a nì cinnteach gun tèid còd a chuir an gnìomh gu ro-sheasmhach aig an ìre cruinneachaidh, mar eisimpleir, gus luchd-togail a thèid a chleachdadh gus nithean cruinneil a thionndadh gu bhith nan stàball. Cuideachd, nuair a thathar a 'cur ri chèile, bidh PartialExecuter air a chleachdadh, a tha, stèidhichte air mion-sgrùdadh air crìochan gnìomh, a' toirt air falbh còd a tha cinnteach nach tèid a chleachdadh aig àm cur gu bàs.

Faodaidh sunnd cuideachd còd JavaScript a ghineadh gus cuimhne a tha còmhdaichte leis an neach-cruinneachaidh sgudail a làimhseachadh. Gu sònraichte, an àite a bhith ag atharrais air àite seòlaidh traidiseanta a’ cleachdadh arrays clò-sgrìobhte, bidh Cheerp a’ toirt seachad mapadh dìreach de nithean C ++ gu nithean JavaScript, a lughdaicheas caitheamh cuimhne leis gu bheil comas aig neach-cruinneachaidh sgudail JavaScript nithean nach eilear a’ cleachdadh a thoirt air falbh. Gus coileanadh a leasachadh, bidh an còd eadar-mheadhanach WebAssembly a chaidh a chruthachadh a’ cleachdadh leudachaidhean SIMD a leigeas le gnìomhachd dàta co-shìnte.

Faodar Cheerp a chleachdadh mar àrd-ùrlar airson tagraidhean lìn teachdaiche / frithealaiche amalaichte a chruthachadh ann an C ++. Ann an cleachdadh làithreach, tha e cumanta ceann aghaidh in-bhrabhsair fa leth a leasachadh, sgrìobhte ann an JavaScript, agus deireadh cùil air leth, sgrìobhte ann am PHP, Python, Ruby, no JavaScript/Node.js. Bidh Cheerp a’ toirt seachad innealan airson tagraidhean lìn iomlan a chruthachadh ann an C ++, anns a bheil an backend agus frontend a’ faighinn taic ann an aon bhunait còd. Rè a 'phròiseas cruinneachaidh, tha taobh an fhrithealaiche air a chur ri chèile ann an còd dùthchasach, agus tha an eadar-aghaidh air a thionndadh gu riochdachadh JavaScript. Bithear a’ dì-bhugachadh a h-uile pàirt den phròiseact, a’ gabhail a-steach an fheadhainn a chaidh atharrachadh gu JavaScript, le bhith a’ cleachdadh theacsaichean stòr ann an C ++ a’ cleachdadh teicneòlas Mapa Stòr (ma thachras mearachd, chì thu earrann de chòd C ++; bidh e a’ toirt taic do shuidheachadh puingean-briseadh ann an còd C ++ agus loidhne-by). - loidhne ceum air cheum cur an gnìomh còd C ++).

Source: fosgailtenet.ru

Cuir beachd ann