Cheerp einen Open-Source-Compiler von C/C++ bis WebAssembly und JavaScript

jubeln

Cheerp: Ein C++-Compiler für das Web

Das wurde kürzlich bekannt gegeben Cheerp 3.0-Version, ein Compiler, der ermöglicht es Ihnen, beliebigen C/C++-Code in WebAssembly oder JavaScript zu kompilieren. Der neue Zweig zeichnet sich dadurch aus, dass der Compiler und die begleitenden Bibliotheken verschoben werden, um permissive Apache 2.0- und LLVM-Lizenzen zu verwenden, anstatt der zuvor angewendeten Richtlinie für eingeschränkte Lizenzen, die eine GPLv2-Lizenzoption für nichtkommerzielle Projekte und einen Lizenzinhaber für kommerzielle Projekte bietet.

Cheerp kann sowohl zum Portieren vorhandener C/C++-Anwendungen und -Bibliotheken zur Ausführung im Browser als auch zum Erstellen hochleistungsfähiger Webanwendungen und WebAssembly-Komponenten von Grund auf verwendet werden.

Seit der letzten Veröffentlichung von Cheerp ( Cheerp 2.7 ) ist über ein Jahr vergangen, und diese neue Version ist vollgepackt mit neuen Funktionen und Optimierungen, die erneut den Stand der Technik bei der Verwendung von C++ als Programmiersprache für Webanwendungen verschieben Spiele.

Am wichtigsten ist, dass wir mit dieser Version das Lizenzmodell von Cheerp erheblich ändern. Ab Cheerp 3.0 sind alle Compiler-Kernkomponenten und -bibliotheken freizügig unter der Apache 2.0/LLVM-Lizenz lizenziert. Dies stellt eine radikale Abkehr von unserem vorherigen GPLv2/dual-kommerziellen Lizenzmodell dar, das es Cheerp 3.0 ermöglicht, ohne Einschränkung für jeden Zweck verwendet zu werden.

Über Cheerp

Das Projekt ermöglicht es Ihnen, C/C++-Code und JavaScript in einer Webanwendung zu kombinieren mit der Möglichkeit, von JavaScript-Code auf Funktionen zuzugreifen, die ursprünglich in C/C++ entwickelt wurden, und von C/C++-Code auf JavaScript-Objekte, JavaScript-Bibliotheken, Web-APIs und alle DOM-Funktionen sowie die Möglichkeit, gemischte Builds zu erstellen, Teil von der Code, der zu JavaScript und Teilen zu WebAssembly kompiliert wird. Unterstützt Build-Projekte, die die Standardbibliotheken libc und libc++ verwenden.

Im Vergleich zum Emscripten-Compiler Cheerp generiert einen optimierteren und kompakteren WebAssembly-Zwischencode (Im Durchschnitt sind die resultierenden Dateigrößen 7 % kleiner.)

Konzeptionell laufen die Unterschiede darauf hinaus, dass Anmelden wird als Objektformat von WebAssembly verwendet und führt die Bindung und Optimierung in der Nachbearbeitungsphase von durch WebAssembly (wasm-opt). Cheerp verwendet LLVM-Bytecode als Zwischendarstellung für Bibliotheken und Objektdateien, was umfassendere projektweite Optimierungen unter Verwendung von Metadaten auf LLVM-Ebene ohne die Notwendigkeit einer Nachbearbeitung ermöglicht.

Verwandte Artikel:
Emscripten 3.0, eine Build-Toolchain für WebAssembly mit LLVM

Zusätzlich Cheerp verwendet den PreExecuter-Optimierer, um Code präventiv auszuführen B. zur Kompilierzeit, um Konstruktoren zum Initialisieren globaler Objekte in Konstanten umzuwandeln. Darüber hinaus wird PartialExecuter während der Kompilierung verwendet, die basierend auf der Analyse der Parameter der Funktion Code entfernt, der garantiert nicht bei der Ausführung verwendet wird.

Cheerp kann auch JavaScript-Code generieren, um dynamisch mit dem Speicher zu arbeiten. vom Garbage Collector abgedeckt. Anstatt einen herkömmlichen Adressraum mit typisierten Arrays zu emulieren, bietet Cheerp insbesondere eine direkte Zuordnung von C++-Objekten zu JavaScript-Objekten, was den Speicherverbrauch reduziert, da der JavaScript-Garbage Collector die Fähigkeit hat, nicht verwendete Objekte zu entfernen. Um die Leistung zu verbessern, verwendet der generierte WebAssembly-Zwischencode SIMD-Erweiterungen, um die Parallelisierung von Datenoperationen zu orchestrieren.

Cheerp kann als Plattform zum Erstellen eingebetteter Webanwendungen verwendet werden Client/Server in C++. In der aktuellen Praxis ist es üblich, ein separates browserbasiertes Front-End zu entwickeln, das in JavaScript geschrieben ist, und ein separates Back-End, das in PHP, Python, Ruby oder JavaScript/Node.js geschrieben ist.

Cheerp bietet die Möglichkeit, vollständige C++-Webanwendungen zu erstellen, die sowohl Backend als auch Frontend in einer einzigen Codebasis unterstützen.

Während des Erstellungsprozesses wird die Serverseite in nativen Code kompiliert und die Schnittstelle in eine JavaScript-Darstellung konvertiert. Das Debuggen aller Projektkomponenten, einschließlich der in JavaScript konvertierten, erfolgt anhand von C++-Quelltexten unter Verwendung der Source-Map-Technologie.

Schließlich wenn Sie mehr darüber wissen möchtenkönnen Sie die Details in der überprüfen folgenden Link

Der Compiler-Code basiert auf den LLVM- und Clang-Entwicklungen und enthält zusätzliche Optimierungen, um die Leistung zu verbessern und die Größe der kompilierten Ausgabe zu reduzieren.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.