Cheerp un compilator open source de la C/C++ la WebAssembly și JavaScript

înveseli

Cheerp: Un compilator C++ pentru web

A fost anunțat recent Versiunea Cheerp 3.0, un compilator care vă permite să compilați orice cod C/C++ în WebAssembly sau JavaScript. Noua ramură se remarcă prin mutarea compilatorului și a bibliotecilor însoțitoare pentru a utiliza licențe permisive Apache 2.0 și LLVM, mai degrabă decât politica de licență limitată aplicată anterior, care oferă o opțiune de licență GPLv2 pentru proiectele necomerciale și un proprietar de licență pentru proiectele comerciale.

Cheerp poate fi folosit atât pentru a porta aplicații și biblioteci C/C++ existente pentru a rula în browser, cât și pentru a crea aplicații web de înaltă performanță și componente WebAssembly de la zero.

A trecut peste un an de la lansarea anterioară a Cheerp ( Cheerp 2.7 ), iar această nouă versiune este plină de noi funcții și optimizări care, încă o dată, mută stadiul tehnicii de a folosi C++ ca limbaj de programare pentru aplicații Web. și jocuri.

Cel mai important, cu această lansare, facem o schimbare semnificativă a modelului de licențiere Cheerp. Începând cu Cheerp 3.0, toate componentele și bibliotecile de bază ale compilatorului sunt acum licențiate permisiv sub licența Apache 2.0/LLVM. Aceasta marchează o îndepărtare radicală de la modelul nostru anterior de licență comercială GPLv2/duală, permițând folosirea Cheerp 3.0 în orice scop, fără restricții.

Despre Cheerp

Proiectul vă permite să combinați codul C/C++ și JavaScript într-o aplicație web cu posibilitatea de a accesa de la codul JavaScript la funcțiile dezvoltate inițial în C/C++ și de la codul C/C++ la obiecte JavaScript, biblioteci JavaScript, API-uri web și toate caracteristicile DOM, precum și vă permite să creați versiuni mixte, parte din codul care se compilează în JavaScript și părți în WebAssembly. Suportă proiecte de compilare care utilizează bibliotecile standard libc și libc++.

În comparație cu compilatorul Emscripten, Cheerp generează un cod intermediar WebAssembly mai optimizat și mai compact (În medie, dimensiunile fișierelor rezultate sunt cu 7% mai mici.)

Conceptual, diferențele se rezumă la faptul că Inscrie-te este folosit ca format obiect al WebAssembly și realizează legarea și optimizarea în etapa de post-procesare a WebAssembly (wasm-opt). Cheerp folosește codul octet LLVM ca o reprezentare intermediară pentru biblioteci și fișiere obiect, permițând optimizări mai ample la nivel de proiect folosind metadatele la nivel LLVM fără a fi nevoie de post-procesare.

Articol asociat:
Emscripten 3.0, un lanț de instrumente de construcție pentru WebAssembly folosind LLVM

În plus, Cheerp folosește optimizatorul PreExecuter pentru a executa codul preventiv în timpul compilării, de exemplu, pentru a converti constructorii utilizați pentru a inițializa obiectele globale în constante. În plus, PartialExecuter este utilizat în timpul compilării, care, pe baza analizei parametrilor funcției, elimină codul care este garantat că nu va fi folosit la execuție.

Cheerp poate genera, de asemenea, cod JavaScript pentru a lucra dinamic cu memoria. acoperit de gunoiul. În special, în loc să emuleze un spațiu de adrese tradițional cu matrice tipizate, Cheerp oferă o mapare directă de la obiectele C++ la obiectele JavaScript, ceea ce reduce consumul de memorie deoarece colectorul de gunoi JavaScript are capacitatea de a elimina obiectele neutilizate. Pentru a îmbunătăți performanța, codul intermediar WebAssembly generat utilizează extensii SIMD pentru a orchestra paralelizarea operațiunilor de date.

Cheerp poate fi folosit ca platformă pentru a construi aplicații web încorporate client/server în C++. În practica curentă, este obișnuit să se dezvolte un front-end separat, bazat pe browser, scris în JavaScript și un back-end separat scris în PHP, Python, Ruby sau JavaScript/Node.js.

Cheerp oferă mijloacele de a construi aplicații web C++ complete care acceptă atât backend, cât și frontend într-o singură bază de cod.

În timpul procesului de construire, partea de server este compilată în cod nativ, iar interfața este convertită într-o reprezentare JavaScript. Depanarea tuturor componentelor proiectului, inclusiv a celor convertite în JavaScript, se realizează folosind texte sursă C++ folosind tehnologia Source Map.

În cele din urmă, dacă sunteți interesat să aflați mai multe despre asta, puteți verifica detaliile în următorul link.

Codul compilatorului se bazează pe dezvoltările LLVM și Clang și include optimizări suplimentare pentru a îmbunătăți performanța și a reduce dimensiunea rezultatului compilat.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: AB Internet Networks 2008 SL
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.