Uzmundriniet atvērtā pirmkoda kompilatoru no C/C++ līdz WebAssembly un JavaScript

uzmundrināt

Cheerp: C++ kompilators tīmeklim

Par to nesen tika paziņots Cheerp 3.0 laidiens, kompilators, kas ļauj apkopot jebkuru C/C++ kodu WebAssembly vai JavaScript. Jaunā filiāle ir ievērojama ar kompilatora un pavadošo bibliotēku pārvietošanu, lai izmantotu atļaujošas Apache 2.0 un LLVM licences, nevis iepriekš piemēroto ierobežoto licenču politiku, kas piedāvā GPLv2 licences iespēju nekomerciāliem projektiem un licences īpašnieku komerciāliem projektiem.

Cheerp var izmantot gan esošo C/C++ lietojumprogrammu un bibliotēku pārnešanai, lai tās darbotos pārlūkprogrammā, vai lai no jauna izveidotu augstas veiktspējas tīmekļa lietojumprogrammas un WebAssembly komponentus.

Ir pagājis vairāk nekā gads kopš iepriekšējā Cheerp izlaiduma ( Cheerp 2.7 ), un šī jaunā versija ir aprīkota ar jaunām funkcijām un optimizācijām, kas atkal virza jaunāko C++ kā tīmekļa lietojumprogrammu programmēšanas valodas izmantošanu. spēles.

Vissvarīgākais ir tas, ka ar šo laidienu mēs veicam būtiskas izmaiņas Cheerp licencēšanas modelī. Sākot ar Cheerp 3.0, visi galvenie kompilatoru komponenti un bibliotēkas tagad ir atļauti licencēti saskaņā ar Apache 2.0/LLVM licenci. Tas iezīmē radikālu atkāpšanos no mūsu iepriekšējā GPLv2/duālās komerciālās licences modeļa, ļaujot Cheerp 3.0 izmantot jebkuram mērķim bez ierobežojumiem.

Par Cheerp

Projekts ļauj apvienot C/C++ kodu un JavaScript tīmekļa lietojumprogrammā ar iespēju piekļūt no JavaScript koda funkcijām, kas sākotnēji izstrādātas C/C++, un no C/C++ koda uz JavaScript objektiem, JavaScript bibliotēkām, Web API un visiem DOM līdzekļiem, kā arī ļaujot izveidot jauktas versijas, kas ir daļa no kods, kas tiek kompilēts JavaScript un daļas WebAssembly. Atbalsta veidošanas projektus, kas izmanto standarta libc un libc++ bibliotēkas.

Salīdzinot ar Emscripten kompilatoru Cheerp ģenerē optimizētāku un kompaktāku WebAssembly starpposma kodu (Vidēji iegūtie failu izmēri ir par 7% mazāki.)

Konceptuāli atšķirības ir saistītas ar faktu, ka Pierakstīties tiek izmantots kā WebAssembly objekta formāts un veic saistīšanu un optimizāciju pēcapstrādes posmā. WebAssembly (wasm-opt). Cheerp izmanto LLVM baitu kodu kā starpposma attēlojumu bibliotēkām un objektu failiem, ļaujot veikt plašāku projekta mēroga optimizāciju, izmantojot LLVM līmeņa metadatus bez pēcapstrādes.

saistīto rakstu:
Emscripten 3.0, WebAssembly veidošanas rīku ķēde, izmantojot LLVM

Turklāt, Cheerp izmanto PreExecuter optimizētāju, lai iepriekšēji izpildītu kodu kompilēšanas laikā, piemēram, lai pārveidotu konstruktorus, ko izmanto globālo objektu inicializācijai, konstantēs. Turklāt kompilācijas laikā tiek izmantots PartialExecuter, kas, pamatojoties uz funkcijas parametru parsēšanu, noņem kodu, kas tiek garantēts, ka netiks izmantots izpildes laikā.

Cheerp var arī ģenerēt JavaScript kodu, lai dinamiski strādātu ar atmiņu. sedz atkritumu savācējs. Jo īpaši tā vietā, lai emulētu tradicionālo adrešu telpu ar drukātiem masīviem, Cheerp nodrošina tiešu kartēšanu no C++ objektiem uz JavaScript objektiem, kas samazina atmiņas patēriņu, jo JavaScript atkritumu savācējam ir iespēja noņemt neizmantotos objektus. Lai uzlabotu veiktspēju, ģenerētais WebAssembly starpposma kods izmanto SIMD paplašinājumus, lai organizētu datu darbību paralēli.

Cheerp var izmantot kā platformu, lai izveidotu iegultās tīmekļa lietojumprogrammas klients/serveris valodā C++. Pašreizējā praksē ir ierasts izstrādāt atsevišķu uz pārlūkprogrammu balstītu priekšgalu, kas rakstīts JavaScript valodā, un atsevišķu aizmuguri, kas rakstīts PHP, Python, Ruby vai JavaScript/Node.js.

Cheerp nodrošina iespēju izveidot pilnīgas C++ tīmekļa lietojumprogrammas, kas atbalsta gan aizmugursistēmu, gan priekšgalu vienā koda bāzē.

Būvēšanas procesa laikā servera puse tiek apkopota vietējā kodā, un saskarne tiek pārveidota par JavaScript attēlojumu. Visu projekta komponentu atkļūdošana, ieskaitot tos, kas pārveidoti par JavaScript, tiek veikta, izmantojot C++ avota tekstus, izmantojot Source Map tehnoloģiju.

Visbeidzot, ja jūs interesē uzzināt vairāk par to, sīkāku informāciju varat pārbaudīt šī saite.

Kompilatora kods ir balstīts uz LLVM un Clang izstrādi un ietver papildu optimizācijas, lai uzlabotu veiktspēju un samazinātu apkopotās izvades izmēru.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: AB Internet Networks 2008 SL
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.