Jabulela iqoqo lomthombo ovulekile ukusuka ku-C/C++ ukuya ku-WebAssembly ne-JavaScript

thokoza

I-Cheerp: I-C++ Compiler Yewebhu

Isanda kumenyezelwa Ukukhishwa kwe-Cheerp 3.0, umdidiyeli lowo ikuvumela ukuthi uhlanganise noma iyiphi ikhodi ye-C/C++ kuWebAssembly noma i-JavaScript. Igatsha elisha liphawuleka ngokususa umhlanganisi namalabhulali ahambisana nawo ukuze asebenzise amalayisensi e-Apache 2.0 kanye ne-LLVM avumelekile, esikhundleni senqubomgomo yelayisense ekhawulelwe esetshenziswe ngaphambilini, enikeza inketho yelayisense ye-GPLv2 kumaphrojekthi angewona ezohwebo kanye nomnikazi welayisensi wamaphrojekthi wezohwebo.

I-Cheerp ingasetshenziswa kokubili ukuthungatha izinhlelo zokusebenza ezikhona ze-C/C++ namalabhulali azosebenza esipheqululini, noma ukudala izinhlelo zokusebenza zewebhu ezisebenza kahle kakhulu nezingxenye ze-WebAssembly kusukela ekuqaleni.

Sekungaphezu konyaka kwakhululwa okwedlule i-Cheerp ( Cheerp 2.7 ), futhi le nguqulo entsha igcwele izici ezintsha nokwenziwa kahle, okuthi futhi, kuhambise isimo sobuciko bokusebenzisa i-C++ njengolimi lokuhlela lwezinhlelo zokusebenza zeWebhu. imidlalo.

Okubaluleke kakhulu, ngalokhu kukhululwa senza ushintsho olukhulu kumodeli yelayisense ye-Cheerp. Kusukela nge-Cheerp 3.0, zonke izingxenye zeqoqo eliyinhloko nemitapo yolwazi manje sezinelayisense evumelekile ngaphansi kwelayisensi ye-Apache 2.0/LLVM. Lokhu kuphawula ukushiya okukhulu kumodeli yethu yangaphambilini ye-GPLv2/ezimbili zamalayisense okuhweba, okuvumela i-Cheerp 3.0 ukuthi isetshenziselwe noma iyiphi injongo, ngaphandle kokuvinjelwa.

Mayelana ne-Cheerp

Le phrojekthi ikuvumela ukuthi uhlanganise ikhodi ye-C/C++ ne-JavaScript kuhlelo lokusebenza lewebhu enekhono lokufinyelela kusuka kukhodi ye-JavaScript kuya emisebenzini eyakhiwe ekuqaleni ku-C/C++, futhi ukusuka kukhodi ye-C/C++ kuye ezintweni ze-JavaScript, imitapo yolwazi ye-JavaScript, ama-Web API, nazo zonke izici ze-DOM, kanye nokukuvumela ukuthi udale izakhiwo ezixubile, ingxenye ikhodi ehlanganisa ku-JavaScript kanye nezingxenye ku-WebAssembly. Isekela ukwakha amaphrojekthi asebenzisa amalabhulali ajwayelekile e-libc kanye ne-libc++.

Uma kuqhathaniswa ne-Emscripten compiler, Cheerp ikhiqiza ikhodi ephakathi ye-WebAssembly eyenziwe ngcono kakhulu nehlangene (Ngokwesilinganiso, osayizi bamafayela aba umphumela bancane ngo-7%.)

Ngokomqondo, umehluko ubikela eqinisweni lokuthi Bhalisela isetshenziswa njengefomethi yento ye-WebAssembly futhi yenza ukubopha nokwenza ngcono esigabeni sokucubungula I-WebAssembly (i-wasm-opt). I-Cheerp isebenzisa i-LLVM bytecode njengesethulo esimaphakathi semitapo yolwazi namafayela ezinto, okuvumela ukulungiselelwa okubanzi kwephrojekthi kusetshenziswa imethadatha yezinga le-LLVM ngaphandle kwesidingo sokucutshungulwa kwangemuva.

I-athikili ehlobene:
I-Emscripten 3.0, i-toolchain yokwakha ye-WebAssembly isebenzisa i-LLVM

Futhi, I-Cheerp isebenzisa i-PreExecuter optimizer ukuze ikhiphe ikhodi ngaphambi kokulungiselela ngesikhathi sokuhlanganisa, ngokwesibonelo, ukuguqula abakhi abasetshenziselwa ukuqalisa izinto zomhlaba zibe izinto ezingaguquki. Ngaphezu kwalokho, i-PartialExecuter isetshenziswa phakathi nokuhlanganiswa, okuthi, ngokusekelwe ekuhlukaniseni amapharamitha omsebenzi, isuse ikhodi eqinisekisiwe ukuthi ngeke isetshenziswe lapho kwenziwa.

I-Cheerp ingaphinda ikhiqize ikhodi ye-JavaScript ukuze isebenze ngamandla ngenkumbulo. embozwe umqoqi wezibi. Ikakhulukazi, esikhundleni sokulingisa indawo yekheli yendabuko enezinhlu ezithayiphiwe, i-Cheerp inikeza imephu eqondile ukusuka ezintweni ze-C++ ukuya ezintweni ze-JavaScript, okwehlisa ukusetshenziswa kwememori ngoba umqoqi kadoti we-JavaScript unekhono lokususa izinto ezingasetshenzisiwe. Ukuze kuthuthukiswe ukusebenza, ikhodi ephakathi ye-WebAssembly ekhiqiziwe isebenzisa izandiso ze-SIMD ukuze ihlele ukufana kokusebenza kwedatha.

I-Cheerp ingasetshenziswa njengenkundla yokwakha izinhlelo zokusebenza zewebhu ezishumekiwe iklayenti/iseva ku-C++. Ngokwenza kwamanje, kuvamile ukuthuthukisa isiphetho esisekelwe kusiphequluli esihlukile esibhalwe ku-JavaScript kanye nesiphetho esihlukile esingemuva esibhalwe nge-PHP, i-Python, i-Ruby, noma i-JavaScript/Node.js.

I-Cheerp inikeza izindlela zokwakha izinhlelo zokusebenza zewebhu eziphelele ze-C++ ezisekela i-backend ne-frontend kusisekelo sekhodi eyodwa.

Phakathi nenqubo yokwakha, uhlangothi lweseva luhlanganiswa ukuze lube ikhodi yomdabu, futhi isixhumi esibonakalayo siguqulelwa ekubeni yisifanekiso se-JavaScript. Ukulungisa iphutha kuzo zonke izingxenye zephrojekthi, okuhlanganisa nalezo eziguqulelwe ku-JavaScript, kwenziwa kusetshenziswa imibhalo yomthombo we-C++ kusetshenziswa ubuchwepheshe be-Source Map.

Ekugcineni, uma unentshisekelo yokwazi kabanzi ngakho, ungabheka imininingwane kufayela le- isixhumanisi esilandelayo.

Ikhodi yokuhlanganisa isekelwe ekuthuthukisweni kwe-LLVM ne-Clang futhi ihlanganisa ukulungiselelwa okwengeziwe ukuze kuthuthukiswe ukusebenza nokunciphisa usayizi womkhiqizo ohlanganisiwe.


Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Unomthwalo wemfanelo ngedatha: AB Internet Networks 2008 SL
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.