Élvezzen egy nyílt forráskódú fordítót C/C++-tól WebAssembly-ig és JavaScript-ig

ujjongjon

Cheerp: C++ fordító a weben

Nemrég jelentették be Cheerp 3.0 kiadás, egy fordító, amely lehetővé teszi bármilyen C/C++ kód WebAssembly vagy JavaScript formátumba történő fordítását. Az új ág figyelemre méltó, hogy a fordítót és a kísérő könyvtárakat áthelyezi a megengedő Apache 2.0 és LLVM licencek használatára, a korábban alkalmazott korlátozott licencszabályzat helyett, amely GPLv2 licenclehetőséget kínál nem kereskedelmi projektekhez, és licenctulajdonost kereskedelmi projektekhez.

A Cheerp használható meglévő C/C++-alkalmazások és könyvtárak böngészőben való futtatásához, vagy nagy teljesítményű webalkalmazások és WebAssembly-összetevők létrehozásához a semmiből.

Több mint egy év telt el a Cheerp előző kiadása (Cheerp 2.7) óta, és ez az új verzió tele van olyan új funkciókkal és optimalizációkkal, amelyek ismét a C++ webalkalmazások programozási nyelveként való használatának csúcsát mozdítják elő. játékok.

A legfontosabb, hogy ezzel a kiadással jelentős változtatásokat hajtunk végre a Cheerp licencelési modelljén. A Cheerp 3.0-tól kezdve az összes alapvető fordítókomponens és könyvtár az Apache 2.0/LLVM licence alapján engedélyezett. Ez radikális eltérést jelent korábbi GPLv2/kettős kereskedelmi licencmodellünktől, lehetővé téve a Cheerp 3.0 bármilyen célra, korlátozás nélkül történő használatát.

A Cheerpről

A projekt lehetővé teszi a C/C++ kód és a JavaScript kombinálását egy webalkalmazásban azzal a lehetőséggel, hogy JavaScript kódból hozzáférhet az eredetileg C/C++ nyelven kifejlesztett funkciókhoz, C/C++ kódtól pedig JavaScript objektumokhoz, JavaScript-könyvtárakhoz, webes API-khoz és minden DOM-szolgáltatáshoz, valamint lehetővé teszi vegyes buildek létrehozását, a az a kód, amely JavaScriptre fordítódik, és részei a WebAssembly-nek. Támogatja a szabványos libc és libc++ könyvtárakat használó build projekteket.

Az Emscripten fordítóhoz képest a Cheerp optimalizáltabb és kompaktabb WebAssembly közbenső kódot generál (A kapott fájlméret átlagosan 7%-kal kisebb.)

Fogalmilag a különbségek abból fakadnak, hogy Regisztrálj a WebAssembly objektumformátumaként használatos, és az összerendelést és az optimalizálást az utófeldolgozási szakaszban végzi. WebAssemble (wasm-opt). A Cheerp az LLVM bájtkódot használja a könyvtárak és objektumfájlok közbenső reprezentációjaként, lehetővé téve az LLVM-szintű metaadatok használatával, utófeldolgozás nélkül, szélesebb körű, projektszintű optimalizálást.

Kapcsolódó cikk:
Emscripten 3.0, egy LLVM-et használó WebAssembly összeállítási eszközlánca

Ezen túlmenően, A Cheerp a PreExecuter optimalizálót használja a kód megelőző végrehajtásához fordítási időben például a globális objektumok inicializálására használt konstruktorok konstanssá alakításához. Ezenkívül a fordítás során a PartialExecuter is használatos, amely a függvény paramétereinek elemzése alapján eltávolítja azt a kódot, amely garantáltan nem kerül felhasználásra a végrehajtás során.

A Cheerp JavaScript-kódot is generálhat, hogy dinamikusan működjön együtt a memóriával. takarja a szemétgyűjtő. Ahelyett, hogy hagyományos címteret emulálna gépelt tömbökkel, a Cheerp közvetlen leképezést biztosít C++ objektumokról JavaScript objektumokra, ami csökkenti a memóriafelhasználást, mivel a JavaScript szemétgyűjtő képes eltávolítani a nem használt objektumokat. A teljesítmény javítása érdekében az előállított WebAssembly közbenső kód SIMD-bővítményeket használ az adatműveletek párhuzamosításának összehangolására.

A Cheerp platformként használható beágyazott webalkalmazások készítéséhez kliens/szerver C++ nyelven. A jelenlegi gyakorlatban elterjedt egy különálló, JavaScript-ben írt böngésző alapú front-end és egy PHP, Python, Ruby vagy JavaScript/Node.js nyelven írt külön back-end fejlesztése.

A Cheerp lehetőséget biztosít olyan komplett C++ webalkalmazások készítésére, amelyek támogatják a háttér- és frontendet is egyetlen kódbázisban.

Az összeállítási folyamat során a szerveroldalt natív kódra fordítják, és a felületet JavaScript-ábrázolásra alakítják. A projekt összes összetevőjének hibakeresése, beleértve a JavaScript-re konvertáltakat is, C++ forrásszövegekkel történik a Source Map technológia segítségével.

Végül, ha érdekel, hogy többet tudjon meg róla, ellenőrizheti a részleteket a következő link.

A fordítókód az LLVM és Clang fejlesztéseken alapul, és további optimalizálásokat tartalmaz a teljesítmény javítása és a lefordított kimenet méretének csökkentése érdekében.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: AB Internet Networks 2008 SL
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.