Rozveselte kompilátor s otvoreným zdrojovým kódom z C/C++ na WebAssembly a JavaScript

veselý

Cheerp: C++ kompilátor pre web

Nedávno to bolo oznámené Vydanie Cheerp 3.0, kompilátor, ktorý umožňuje zostaviť ľubovoľný kód C/C++ do WebAssembly alebo JavaScriptu. Nová vetva je pozoruhodná presunutím kompilátora a sprievodných knižníc na používanie permisívnych licencií Apache 2.0 a LLVM, a nie skôr uplatňovanej obmedzenej licenčnej politiky, ktorá ponúka možnosť licencie GPLv2 pre nekomerčné projekty a vlastníka licencie pre komerčné projekty.

Cheerp možno použiť na portovanie existujúcich aplikácií a knižníc C/C++ na spustenie v prehliadači alebo na vytváranie vysokovýkonných webových aplikácií a komponentov WebAssembly od začiatku.

Od predchádzajúceho vydania Cheerp (Cheerp 2.7) uplynul viac ako rok a táto nová verzia je plná nových funkcií a optimalizácií, ktoré opäť posúvajú úroveň techniky používania C++ ako programovacieho jazyka pre webové aplikácie. hry.

Najdôležitejšie je, že týmto vydaním robíme významnú zmenu v licenčnom modeli Cheerp. Od Cheerp 3.0 sú teraz všetky základné komponenty kompilátora a knižnice oprávnene licencované pod licenciou Apache 2.0/LLVM. To znamená radikálny odklon od nášho predchádzajúceho modelu GPLv2/duálnej komerčnej licencie, ktorý umožňuje Cheerp 3.0 používať na akýkoľvek účel bez obmedzenia.

O Cheerpovi

Projekt umožňuje kombinovať kód C/C++ a JavaScript vo webovej aplikácii s možnosťou prístupu z kódu JavaScript k funkciám pôvodne vyvinutým v C/C++ a z kódu C/C++ k objektom JavaScript, knižniciam JavaScript, webovým rozhraniam API a všetkým funkciám DOM, ako aj umožňujúcim vytvárať zmiešané zostavy, ktoré sú súčasťou kód, ktorý sa skompiluje do JavaScriptu a časti do WebAssembly. Podporuje zostavovacie projekty, ktoré používajú štandardné knižnice libc a libc++.

V porovnaní s kompilátorom Emscripten, Cheerp generuje optimalizovanejší a kompaktnejší medzikód WebAssembly (V priemere sú výsledné veľkosti súborov o 7 % menšie.)

Koncepčne sa rozdiely zmenšujú na skutočnosť Prihlásiť Se sa používa ako objektový formát WebAssembly a vykonáva väzbu a optimalizáciu vo fáze následného spracovania WebAssembly (wasm-opt). Cheerp používa bajtový kód LLVM ako prechodnú reprezentáciu pre knižnice a objektové súbory, čo umožňuje širšiu optimalizáciu v rámci celého projektu pomocou metadát na úrovni LLVM bez potreby následného spracovania.

Súvisiaci článok:
Emscripten 3.0, zostava nástrojov pre WebAssembly pomocou LLVM

Okrem toho, Cheerp používa optimalizátor PreExecuter na preventívne spustenie kódu v čase kompilácie, napríklad na konverziu konštruktorov používaných na inicializáciu globálnych objektov na konštanty. Okrem toho sa pri kompilácii používa PartialExecuter, ktorý na základe analýzy parametrov funkcie odstráni kód, ktorý sa zaručene nepoužije pri vykonávaní.

Cheerp môže tiež generovať kód JavaScript na dynamickú prácu s pamäťou. zakryté zberačom odpadu. Najmä namiesto emulácie tradičného adresného priestoru s typovanými poľami, Cheerp poskytuje priame mapovanie z objektov C++ na objekty JavaScript, čo znižuje spotrebu pamäte, pretože zberač odpadu JavaScript má schopnosť odstraňovať nepoužívané objekty. Na zlepšenie výkonu vygenerovaný medzikód WebAssembly používa rozšírenia SIMD na organizáciu paralelizácie dátových operácií.

Cheerp možno použiť ako platformu na vytváranie vstavaných webových aplikácií klient/server v C++. V súčasnej praxi je bežné vyvinúť samostatný front-end založený na prehliadači napísaný v JavaScripte a samostatný back-end napísaný v PHP, Pythone, Ruby alebo JavaScript/Node.js.

Cheerp poskytuje prostriedky na vytváranie kompletných webových aplikácií v jazyku C++, ktoré podporujú backend aj frontend v jedinom kóde.

Počas procesu zostavovania sa serverová strana skompiluje do natívneho kódu a rozhranie sa skonvertuje na reprezentáciu JavaScriptu. Ladenie všetkých komponentov projektu, vrátane tých, ktoré sú konvertované do JavaScriptu, sa vykonáva pomocou zdrojových textov C++ pomocou technológie Source Map.

konečne, ak máte záujem dozvedieť sa o tom viac, môžete skontrolovať podrobnosti v nasledujúci odkaz.

Kód kompilátora je založený na vývoji LLVM a Clang a obsahuje ďalšie optimalizácie na zlepšenie výkonu a zníženie veľkosti kompilovaného výstupu.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Za údaje zodpovedá: AB Internet Networks 2008 SL
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.