Fremhæv en open source-kompiler fra C/C++ til WebAssembly og JavaScript

cheerp

Cheerp: En C++-kompiler til internettet

Det blev for nylig annonceret Cheerp 3.0 udgivelse, en compiler, der giver dig mulighed for at kompilere enhver C/C++-kode til WebAssembly eller JavaScript. Den nye gren er bemærkelsesværdig ved at flytte compileren og de medfølgende biblioteker til at bruge tilladelige Apache 2.0- og LLVM-licenser i stedet for den tidligere anvendte begrænsede licenspolitik, som tilbyder en GPLv2-licensmulighed for ikke-kommercielle projekter og en licensejer til kommercielle projekter.

Cheerp kan bruges både til at portere eksisterende C/C++ applikationer og biblioteker til at køre i browseren, eller til at skabe højtydende webapplikationer og WebAssembly-komponenter fra bunden.

Der er gået over et år siden den forrige udgivelse af Cheerp ( Cheerp 2.7 ), og denne nye version er spækket med nye funktioner og optimeringer, der igen flytter det nyeste i at bruge C++ som et programmeringssprog til webapplikationer. og spil.

Det vigtigste er, at vi med denne udgivelse foretager en væsentlig ændring af Cheerps licensmodel. Fra og med Cheerp 3.0 er alle kernekompilerkomponenter og -biblioteker nu tilladt under Apache 2.0/LLVM-licensen. Dette markerer en radikal afvigelse fra vores tidligere GPLv2/dobbelt kommercielle licensmodel, der tillader Cheerp 3.0 at blive brugt til ethvert formål uden begrænsninger.

Om Cheerp

Projektet giver dig mulighed for at kombinere C/C++ kode og JavaScript i en webapplikation med mulighed for at få adgang fra JavaScript-kode til funktioner, der oprindeligt er udviklet i C/C++, og fra C/C++-kode til JavaScript-objekter, JavaScript-biblioteker, Web API'er og alle DOM-funktioner, samt at give dig mulighed for at oprette blandede builds, en del af koden som kompilerer til JavaScript og dele til WebAssembly. Understøtter byggeprojekter, der bruger standardbibliotekerne libc og libc++.

Sammenlignet med Emscripten-kompileren, Cheerp genererer mere optimeret og kompakt WebAssembly mellemkode (I gennemsnit er de resulterende filstørrelser 7 % mindre.)

Begrebsmæssigt bunder forskellene sig til, at Tilmelde bruges som objektformat for WebAssembly og udfører binding og optimering i efterbehandlingsfasen af WebAssembly (wasm-opt). Cheerp bruger LLVM-bytekode som en mellemrepræsentation for biblioteker og objektfiler, hvilket giver mulighed for bredere projektomfattende optimeringer ved hjælp af metadata på LLVM-niveau uden behov for efterbehandling.

relateret artikel:
Emscripten 3.0, en byggeværktøjskæde til WebAssembly ved hjælp af LLVM

Derudover Cheerp bruger PreExecuter optimizer til forebyggende eksekvering af kode på kompileringstidspunktet, for eksempel for at konvertere konstruktører, der bruges til at initialisere globale objekter til konstanter. Derudover bruges PartialExecuter under kompileringen, som ud fra parsing af funktionens parametre fjerner kode, der med garanti ikke bliver brugt ved eksekvering.

Cheerp kan også generere JavaScript-kode til at arbejde dynamisk med hukommelsen. dækket af skraldemanden. Især i stedet for at emulere et traditionelt adresseområde med indtastede arrays, leverer Cheerp en direkte mapping fra C++-objekter til JavaScript-objekter, hvilket reducerer hukommelsesforbruget, fordi JavaScript-skraldsamleren har mulighed for at fjerne ubrugte objekter. For at forbedre ydeevnen bruger den genererede WebAssembly-mellemkode SIMD-udvidelser til at orkestrere paralleliseringen af ​​dataoperationer.

Cheerp kan bruges som en platform til at bygge indlejrede webapplikationer klient/server i C++. I nuværende praksis er det almindeligt at udvikle en separat browserbaseret frontend skrevet i JavaScript og en separat backend skrevet i PHP, Python, Ruby eller JavaScript/Node.js.

Cheerp giver mulighed for at bygge komplette C++ webapplikationer, der understøtter både backend og frontend i en enkelt kodebase.

Under byggeprocessen kompileres serversiden til indbygget kode, og grænsefladen konverteres til en JavaScript-repræsentation. Fejlretning af alle projektkomponenter, inklusive dem, der er konverteret til JavaScript, udføres ved hjælp af C++-kildetekster ved hjælp af Source Map-teknologi.

Endelig hvis du er interesseret i at vide mere om det, kan du kontrollere detaljerne i følgende link.

Compilerkoden er baseret på LLVM- og Clang-udviklingen og inkluderer yderligere optimeringer for at forbedre ydeevnen og reducere størrelsen af ​​det kompilerede output.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for data: AB Internet Networks 2008 SL
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.