Otsige avatud lähtekoodiga kompilaatorit C/C++-st WebAssembly ja JavaScriptini

rõõmustama

Cheerp: C++ kompilaator veebi jaoks

Sellest teatati hiljuti Cheerp 3.0 väljalase, kompilaator, mis võimaldab kompileerida mis tahes C/C++ koodi WebAssemblysse või JavaScripti. Uus haru on märkimisväärne selle poolest, et kompilaator ja sellega kaasnevad teegid kasutavad lubavaid Apache 2.0 ja LLVM-i litsentse, mitte varem rakendatud piiratud litsentsipoliitikat, mis pakub mitteäriliste projektide jaoks GPLv2 litsentsivõimalust ja kommertsprojektide jaoks litsentsiomanikku.

Cheerpi saab kasutada nii olemasolevate C/C++ rakenduste ja teekide portimiseks, et need brauseris töötaksid, kui ka suure jõudlusega veebirakenduste ja WebAssembly komponentide nullist loomiseks.

Cheerpi eelmisest väljalaskest ( Cheerp 2.7 ) on möödunud üle aasta ning see uus versioon on täis uusi funktsioone ja optimeerimisi, mis taas liigutavad C++ kasutamist veebirakenduste programmeerimiskeelena. mängud.

Kõige tähtsam on see, et selle väljaandega teeme Cheerpi litsentsimismudelis olulise muudatuse. Alates versioonist Cheerp 3.0 on kõik kompilaatori põhikomponendid ja teegid nüüd Apache 2.0/LLVM litsentsi alusel lubatud. See tähistab radikaalset kõrvalekaldumist meie eelmisest GPLv2/kahe kaubandusliku litsentsi mudelist, mis võimaldab Cheerp 3.0 kasutada mis tahes eesmärgil ja piiranguteta.

Cheerpi kohta

El proyecto võimaldab veebirakenduses kombineerida C/C++ koodi ja JavaScripti võimalusega pääseda JavaScripti koodist juurde C/C++-s algselt välja töötatud funktsioonidele ja C/C++-koodist JavaScripti objektidele, JavaScripti teekidele, veebi API-dele ja kõigile DOM-i funktsioonidele, samuti võimaldab teil luua segaversioone, mis on osa kood, mis kompileeritakse JavaScripti ja osad WebAssemblysse. Toetab ehitusprojekte, mis kasutavad standardseid libc ja libc++ teeke.

Võrreldes Emscripteni koostajaga Cheerp loob optimeeritud ja kompaktsema WebAssembly vahekoodi (Saadud failisuurused on keskmiselt 7% väiksemad.)

Kontseptuaalselt taanduvad erinevused asjaolule, et Registreeri kasutatakse WebAssembly objektivorminguna ning teostab sidumise ja optimeerimise järeltöötluse etapis. WebAssembly (wasm-opt). Cheerp kasutab LLVM-i baitkoodi teekide ja objektifailide vaheesitlusena, võimaldades LLVM-taseme metaandmeid kasutades laiemaid projektiüleseid optimeerimisi ilma järeltöötlust vajamata.

Seotud artikkel:
Emscripten 3.0, LLVM-i kasutava WebAssembly ehitamise tööriistaahel

Lisaks Cheerp kasutab koodi ennetavaks täitmiseks optimeerijat PreExecuter kompileerimise ajal, näiteks globaalsete objektide lähtestamiseks kasutatavate konstruktorite teisendamiseks konstantideks. Lisaks kasutatakse kompileerimisel PartialExecuterit, mis funktsiooni parameetrite sõelumise põhjal eemaldab koodi, mida täitmisel garanteeritult ei kasutata.

Cheerp saab mäluga dünaamiliseks töötamiseks genereerida ka JavaScripti koodi. katab prügivedaja. Täpsemalt, selle asemel, et emuleerida traditsioonilist aadressiruumi trükitud massiividega, pakub Cheerp C++ objektide otsest vastendamist JavaScripti objektidele, mis vähendab mälutarbimist, kuna JavaScripti prügikogujal on võimalus kasutamata objektid eemaldada. Jõudluse parandamiseks kasutab loodud WebAssembly vahekood SIMD laiendusi, et korraldada andmetoimingute paralleelsus.

Cheerpi saab kasutada platvormina manustatud veebirakenduste loomiseks klient/server C++ keeles. Praeguses praktikas on tavaline, et arendatakse eraldi brauseripõhine JavaScriptis kirjutatud esiosa ja eraldi PHP, Python, Ruby või JavaScript/Node.js keeles kirjutatud taust.

Cheerp pakub vahendeid terviklike C++ veebirakenduste loomiseks, mis toetavad nii tausta- kui ka esiprogrammi ühes koodibaasis.

Ehitamise käigus kompileeritakse serveripoolne kood omakoodiks ja liides teisendatakse JavaScripti esituseks. Kõikide projekti komponentide silumine, sealhulgas JavaScriptiks teisendatud, toimub C++ lähtetekstide abil, kasutades Source Map tehnoloogiat.

Lõpuks kui olete huvitatud sellest rohkem teada saama, saate üksikasju vaadata järgmine link.

Kompilaatori kood põhineb LLVM-i ja Clangi arendustel ning sisaldab täiendavaid optimeerimisi jõudluse parandamiseks ja kompileeritud väljundi suuruse vähendamiseks.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutav: AB Internet Networks 2008 SL
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.