Cheerp un compilatore open source da C/C++ a WebAssembly e JavaScript

evviva

Cheerp: un compilatore C++ per il Web

È stato recentemente annunciato Cheerp versione 3.0, un compilatore che consente di compilare qualsiasi codice C/C++ in WebAssembly o JavaScript. Il nuovo ramo si distingue per lo spostamento del compilatore e delle librerie di accompagnamento per utilizzare licenze Apache 2.0 e LLVM permissive, piuttosto che la politica di licenza limitata applicata in precedenza, che offre un'opzione di licenza GPLv2 per progetti non commerciali e un proprietario di licenza per progetti commerciali.

Cheerp può essere utilizzato sia per trasferire applicazioni e librerie C/C++ esistenti da eseguire nel browser, sia per creare da zero applicazioni Web e componenti WebAssembly ad alte prestazioni.

È passato più di un anno dalla versione precedente di Cheerp ( Cheerp 2.7 ) e questa nuova versione è ricca di nuove funzionalità e ottimizzazioni che, ancora una volta, spostano lo stato dell'arte nell'utilizzo del C++ come linguaggio di programmazione per le applicazioni Web. e Giochi.

Ancora più importante, con questa versione stiamo apportando un cambiamento significativo al modello di licenza di Cheerp. A partire da Cheerp 3.0, tutti i componenti e le librerie principali del compilatore sono ora concessi in licenza in base alla licenza Apache 2.0/LLVM. Questo segna un radicale allontanamento dal nostro precedente modello di licenza GPLv2/doppia licenza commerciale, consentendo a Cheerp 3.0 di essere utilizzato per qualsiasi scopo, senza restrizioni.

A proposito di Cheerp

El proyecto consente di combinare codice C/C++ e JavaScript in un'applicazione web con la possibilità di accedere dal codice JavaScript a funzioni originariamente sviluppate in C/C++ e dal codice C/C++ a oggetti JavaScript, librerie JavaScript, API Web e tutte le funzionalità DOM, oltre a consentire la creazione di build miste, parte di il codice che viene compilato in JavaScript e parti in WebAssembly. Supporta progetti di compilazione che utilizzano le librerie standard libc e libc++.

Rispetto al compilatore Emscripten, Cheerp genera codice intermedio WebAssembly più ottimizzato e compatto (In media, le dimensioni dei file risultanti sono inferiori del 7%.)

Concettualmente, le differenze si riducono al fatto che Scritte viene utilizzato come formato oggetto di WebAssembly ed esegue l'associazione e l'ottimizzazione nella fase di post-elaborazione di WebAssembly (wasm-opt). Cheerp utilizza il bytecode LLVM come rappresentazione intermedia per librerie e file oggetto, consentendo ottimizzazioni più ampie a livello di progetto utilizzando metadati a livello di LLVM senza la necessità di post-elaborazione.

Articolo correlato:
Emscripten 3.0, una toolchain di build per WebAssembly utilizzando LLVM

Inoltre, Cheerp utilizza l'ottimizzatore PreExecuter per eseguire preventivamente il codice in fase di compilazione, ad esempio, per convertire i costruttori utilizzati per inizializzare gli oggetti globali in costanti. Inoltre, PartialExecuter viene utilizzato durante la compilazione, che, in base all'analisi dei parametri della funzione, rimuove il codice che è garantito per non essere utilizzato durante l'esecuzione.

Cheerp può anche generare codice JavaScript per lavorare dinamicamente con la memoria. coperti dal netturbino. In particolare, invece di emulare uno spazio di indirizzi tradizionale con array tipizzati, Cheerp fornisce una mappatura diretta dagli oggetti C++ agli oggetti JavaScript, che riduce il consumo di memoria perché il Garbage Collector JavaScript ha la capacità di rimuovere gli oggetti inutilizzati. Per migliorare le prestazioni, il codice intermedio WebAssembly generato utilizza le estensioni SIMD per orchestrare la parallelizzazione delle operazioni sui dati.

Cheerp può essere utilizzato come piattaforma per creare applicazioni Web integrate client/server in C++. Nella pratica corrente, è comune sviluppare un front-end separato basato su browser scritto in JavaScript e un back-end separato scritto in PHP, Python, Ruby o JavaScript/Node.js.

Cheerp fornisce i mezzi per creare applicazioni Web C++ complete che supportano sia il backend che il frontend in un'unica base di codice.

Durante il processo di compilazione, il lato server viene compilato in codice nativo e l'interfaccia viene convertita in una rappresentazione JavaScript. Il debug di tutti i componenti del progetto, inclusi quelli convertiti in JavaScript, viene eseguito utilizzando testi sorgente C++ utilizzando la tecnologia Source Map.

Infine, se sei interessato a saperne di più, puoi controllare i dettagli nel file seguente link

Il codice del compilatore si basa sugli sviluppi di LLVM e Clang e include ulteriori ottimizzazioni per migliorare le prestazioni e ridurre le dimensioni dell'output compilato.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.