Cheerp prevoditelj otvorenog koda iz C/C++ u WebAssembly i JavaScript

navijati

Cheerp: C++ prevodilac za web

Nedavno je objavljeno Izdanje Cheerp 3.0, kompajler koji omogućuje vam kompajliranje bilo kojeg C/C++ koda u WebAssembly ili JavaScript. Nova grana je značajna po premještanju kompajlera i pratećih biblioteka na korištenje dopuštajućih licenci Apache 2.0 i LLVM, umjesto prethodno primijenjene politike ograničene licence, koja nudi opciju GPLv2 licence za nekomercijalne projekte i vlasnika licence za komercijalne projekte.

Cheerp se može koristiti i za prijenos postojećih C/C++ aplikacija i biblioteka za pokretanje u pregledniku ili za stvaranje web aplikacija visokih performansi i WebAssembly komponenti od nule.

Prošlo je više od godinu dana od prethodnog izdanja Cheerpa ( Cheerp 2.7 ), a ova nova verzija je prepuna novih značajki i optimizacija koje još jednom pomiču stanje umjetnosti korištenja C++ kao programskog jezika za web aplikacije. i igre.

Ono što je najvažnije, ovim izdanjem značajno mijenjamo Cheerpov model licenciranja. Od Cheerp 3.0, sve osnovne komponente prevoditelja i biblioteke sada su dopušteno licencirane pod licencom Apache 2.0/LLVM. Ovo označava radikalni odmak od našeg prethodnog modela GPLv2/dvostruke komercijalne licence, dopuštajući da se Cheerp 3.0 koristi u bilo koju svrhu, bez ograničenja.

O Cheep-u

Projekt omogućuje vam kombiniranje C/C++ koda i JavaScripta u web aplikaciji s mogućnošću pristupa od JavaScript koda do funkcija koje su izvorno razvijene u C/C++, i od C/C++ koda do JavaScript objekata, JavaScript biblioteka, Web API-ja i svih DOM značajki, kao i dopuštajući vam stvaranje mješovitih verzija, dio kod koji se kompajlira u JavaScript i dijelove u WebAssembly. Podržava projekte izgradnje koji koriste standardne libc i libc++ biblioteke.

U usporedbi s kompilatorom Emscripten, Cheerp generira optimiziraniji i kompaktniji međukod WebAssembly (U prosjeku, rezultirajuće veličine datoteka su 7% manje.)

Konceptualno se razlike svode na to da Prijavite se koristi se kao format objekta WebAssembly i izvodi uvezivanje i optimizaciju u fazi naknadne obrade WebAssembly (wasm-opt). Cheerp koristi LLVM bajt kod kao posredni prikaz za biblioteke i objektne datoteke, omogućujući šire optimizacije na cijelom projektu korištenjem metapodataka na razini LLVM bez potrebe za naknadnom obradom.

Povezani članak:
Emscripten 3.0, lanac alata za izradu WebAssembly koristeći LLVM

Osim toga, Cheerp koristi optimizator PreExecuter za preventivno izvršavanje koda u vrijeme prevođenja, na primjer, za pretvaranje konstruktora koji se koriste za inicijalizaciju globalnih objekata u konstante. Osim toga, tijekom kompilacije koristi se PartialExecuter, koji na temelju parsiranja parametara funkcije uklanja kod za koji se jamči da se neće koristiti pri izvođenju.

Cheerp također može generirati JavaScript kod za dinamički rad s memorijom. pokriven sakupljačem smeća. Konkretno, umjesto oponašanja tradicionalnog adresnog prostora s tipiziranim nizovima, Cheerp pruža izravno preslikavanje iz C++ objekata u JavaScript objekte, što smanjuje potrošnju memorije jer JavaScript skupljač smeća ima mogućnost uklanjanja neiskorištenih objekata. Kako bi se poboljšala izvedba, generirani međukod WebAssembly koristi SIMD proširenja za orkestriranje paralelizacije podatkovnih operacija.

Cheerp se može koristiti kao platforma za izradu ugrađenih web aplikacija klijent/poslužitelj u C++. U trenutnoj praksi uobičajeno je razviti zasebno sučelje temeljeno na pregledniku napisano u JavaScriptu i zasebno pozadinsko sučelje napisano u PHP-u, Pythonu, Rubyju ili JavaScript/Node.js.

Cheerp pruža sredstva za izgradnju cjelovitih C++ web aplikacija koje podržavaju i pozadinu i sučelje u jednoj bazi koda.

Tijekom procesa izgradnje poslužiteljska strana kompajlira se u izvorni kod, a sučelje se pretvara u JavaScript reprezentaciju. Otklanjanje pogrešaka svih komponenti projekta, uključujući one pretvorene u JavaScript, provodi se pomoću C++ izvornih tekstova pomoću tehnologije Source Map.

Konačno, ako vas zanima više o tome, detalje možete provjeriti u sljedeći link.

Kod kompajlera temelji se na razvoju LLVM i Clang i uključuje dodatne optimizacije za poboljšanje performansi i smanjenje veličine kompajliranog izlaza.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.