Cheerp un compilateur open source de C/C++ à WebAssembly et JavaScript

Bravo

Cheerp : un compilateur C++ pour le Web

Il a été récemment annoncé Version Cheerp 3.0, un compilateur qui vous permet de compiler n'importe quel code C/C++ en WebAssembly ou JavaScript. La nouvelle branche est remarquable pour déplacer le compilateur et les bibliothèques associées pour utiliser les licences Apache 2.0 et LLVM permissives, plutôt que la politique de licence limitée précédemment appliquée, qui offre une option de licence GPLv2 pour les projets non commerciaux et un propriétaire de licence pour les projets commerciaux.

Cheerp peut être utilisé à la fois pour porter des applications et des bibliothèques C/C++ existantes à exécuter dans le navigateur, ou pour créer des applications Web hautes performances et des composants WebAssembly à partir de rien.

Cela fait plus d'un an depuis la version précédente de Cheerp ( Cheerp 2.7 ), et cette nouvelle version regorge de nouvelles fonctionnalités et d'optimisations qui, une fois de plus, font évoluer l'état de l'art de l'utilisation de C++ comme langage de programmation pour les applications Web. Jeux.

Plus important encore, avec cette version, nous apportons un changement significatif au modèle de licence de Cheerp. Depuis Cheerp 3.0, tous les composants et bibliothèques de base du compilateur sont désormais sous licence permissive sous la licence Apache 2.0/LLVM. Cela marque une rupture radicale avec notre précédent modèle de licence commerciale GPLv2/double, permettant à Cheerp 3.0 d'être utilisé à n'importe quelle fin, sans restriction.

À propos de Cheerp

Le projet permet de combiner du code C/C++ et JavaScript dans une application web avec la possibilité d'accéder du code JavaScript aux fonctions développées à l'origine en C/C++, et du code C/C++ aux objets JavaScript, aux bibliothèques JavaScript, aux API Web et à toutes les fonctionnalités DOM, tout en vous permettant de créer des versions mixtes, une partie de le code qui compile en JavaScript et les parties en WebAssembly. Prend en charge les projets de génération qui utilisent les bibliothèques standard libc et libc++.

Comparé au compilateur Emscripten, Cheerp génère un code intermédiaire WebAssembly plus optimisé et compact (En moyenne, les tailles de fichiers résultantes sont 7 % plus petites.)

Conceptuellement, les différences se résument au fait que S'inscrire est utilisé comme format d'objet de WebAssembly et effectue la liaison et l'optimisation dans l'étape de post-traitement de WebAssembly (wasm-opt). Cheerp utilise le bytecode LLVM comme représentation intermédiaire pour les bibliothèques et les fichiers objets, permettant des optimisations plus larges à l'échelle du projet à l'aide de métadonnées de niveau LLVM sans avoir besoin de post-traitement.

Article connexe:
Emscripten 3.0, une chaîne d'outils de construction pour WebAssembly utilisant LLVM

En outre, Cheerp utilise l'optimiseur PreExecuter pour exécuter le code de manière préventive au moment de la compilation, par exemple, pour convertir les constructeurs utilisés pour initialiser les objets globaux en constantes. De plus, PartialExecuter est utilisé lors de la compilation, qui, basée sur l'analyse des paramètres de la fonction, supprime le code dont il est garanti qu'il ne sera pas utilisé à l'exécution.

Cheerp peut également générer du code JavaScript pour travailler dynamiquement avec la mémoire. couvert par le ramasseur d'ordures. En particulier, au lieu d'émuler un espace d'adressage traditionnel avec des tableaux typés, Cheerp fournit un mappage direct des objets C++ aux objets JavaScript, ce qui réduit la consommation de mémoire car le ramasse-miettes JavaScript a la capacité de supprimer les objets inutilisés. Pour améliorer les performances, le code intermédiaire WebAssembly généré utilise des extensions SIMD pour orchestrer la parallélisation des opérations de données.

Cheerp peut être utilisé comme plate-forme pour créer des applications Web intégrées client/serveur en C++. Dans la pratique actuelle, il est courant de développer un front-end séparé basé sur un navigateur écrit en JavaScript et un back-end séparé écrit en PHP, Python, Ruby ou JavaScript/Node.js.

Cheerp fournit les moyens de créer des applications Web C++ complètes qui prennent en charge à la fois le backend et le frontend dans une seule base de code.

Pendant le processus de génération, le côté serveur est compilé en code natif et l'interface est convertie en une représentation JavaScript. Le débogage de tous les composants du projet, y compris ceux convertis en JavaScript, est effectué à l'aide de textes sources C++ à l'aide de la technologie Source Map.

Enfin, si vous souhaitez en savoir plus, vous pouvez vérifier les détails dans le lien suivant

Le code du compilateur est basé sur les développements LLVM et Clang et inclut des optimisations supplémentaires pour améliorer les performances et réduire la taille de la sortie compilée.


Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.