Cheerp open source kompilátor z C/C++ do WebAssembly a JavaScript

veselý

Cheerp: C++ kompilátor pro web

Nedávno to bylo oznámeno Vydání Cheerp 3.0, kompilátor, který umožňuje zkompilovat jakýkoli kód C/C++ do WebAssembly nebo JavaScriptu. Nová větev je pozoruhodná přesunem kompilátoru a doprovodných knihoven k používání permisivních licencí Apache 2.0 a LLVM, spíše než dříve aplikované omezené licenční politiky, která nabízí možnost licence GPLv2 pro nekomerční projekty a vlastníka licence pro komerční projekty.

Cheerp lze použít jak k portování stávajících aplikací a knihoven C/C++ pro provoz v prohlížeči, tak k vytváření vysoce výkonných webových aplikací a komponent WebAssembly od začátku.

Od předchozího vydání Cheerp ( Cheerp 2.7 ) uběhl více než rok a tato nová verze je nabitá novými funkcemi a optimalizacemi, které opět posouvají stav techniky používání C++ jako programovacího jazyka pro webové aplikace. hry.

A co je nejdůležitější, s touto verzí provádíme významnou změnu v licenčním modelu Cheerp. Od Cheerp 3.0 jsou nyní všechny základní komponenty a knihovny kompilátoru povoleny pod licencí Apache 2.0/LLVM. To znamená radikální odklon od našeho předchozího modelu GPLv2/duální komerční licence, který umožňuje použití Cheerp 3.0 pro jakýkoli účel bez omezení.

O Cheerpovi

El Proyecto umožňuje kombinovat kód C/C++ a JavaScript ve webové aplikaci se schopností přistupovat z kódu JavaScript k funkcím původně vyvinutým v C/C++ a z kódu C/C++ k objektům JavaScript, knihovnám JavaScript, webovým rozhraním API a všem funkcím DOM, stejně jako umožňuje vytvářet smíšené sestavení, součást kód, který se zkompiluje do JavaScriptu a části do WebAssembly. Podporuje sestavení projektů, které používají standardní knihovny libc a libc++.

Ve srovnání s kompilátorem Emscripten Cheerp generuje optimalizovanější a kompaktnější mezikód WebAssembly (V průměru jsou výsledné velikosti souborů o 7 % menší.)

Koncepčně se rozdíly zmenšují na skutečnost, že Přihlásit se se používá jako objektový formát WebAssembly a provádí vazbu a optimalizaci ve fázi následného zpracování WebAssembly (wasm-opt). Cheerp používá LLVM bytecode jako prostřední reprezentaci pro knihovny a objektové soubory, což umožňuje širší optimalizaci celého projektu pomocí metadat na úrovni LLVM bez nutnosti následného zpracování.

Související článek:
Emscripten 3.0, sestavovací nástroj pro WebAssembly využívající LLVM

Navíc, Cheerp používá optimalizátor PreExecuter k preventivnímu spuštění kódu v době kompilace, například pro převod konstruktorů používaných k inicializaci globálních objektů na konstanty. Při kompilaci se navíc používá PartialExecuter, který na základě parsování parametrů funkce odstraňuje kód, u kterého je zaručeno, že nebude použit při provádění.

Cheerp může také generovat kód JavaScript pro dynamickou práci s pamětí. zakryté sběračem odpadu. Konkrétně, místo emulace tradičního adresního prostoru s typovanými poli, Cheerp poskytuje přímé mapování z C++ objektů na JavaScript objekty, což snižuje spotřebu paměti, protože JavaScript garbage collector má schopnost odstranit nepoužívané objekty. Pro zlepšení výkonu používá vygenerovaný přechodný kód WebAssembly rozšíření SIMD k řízení paralelizace datových operací.

Cheerp lze použít jako platformu pro vytváření vestavěných webových aplikací klient/server v C++. V současné praxi je běžné vyvinout samostatný front-end založený na prohlížeči napsaný v JavaScriptu a samostatný back-end napsaný v PHP, Pythonu, Ruby nebo JavaScript/Node.js.

Cheerp poskytuje prostředky k vytváření kompletních webových aplikací v jazyce C++, které podporují backend i frontend v jediné kódové základně.

Během procesu sestavování je serverová strana zkompilována do nativního kódu a rozhraní je převedeno na reprezentaci JavaScriptu. Ladění všech komponent projektu, včetně těch převedených do JavaScriptu, se provádí pomocí zdrojových textů C++ pomocí technologie Source Map.

Konečně, pokud máte zájem o tom vědět více, můžete zkontrolovat podrobnosti v následující odkaz.

Kód kompilátoru je založen na vývoji LLVM a Clang a zahrnuje další optimalizace pro zlepšení výkonu a snížení velikosti kompilovaného výstupu.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.