Plotësoni një përpilues me burim të hapur nga C/C++ në WebAssembly dhe JavaScript

brohorasin

Cheerp: Një përpilues C++ për ueb

Është njoftuar së fundmi Lirimi i Cheerp 3.0, një përpilues që ju lejon të përpiloni çdo kod C/C++ në WebAssembly ose JavaScript. Dega e re shquhet për lëvizjen e përpiluesit dhe bibliotekave shoqëruese për të përdorur licencat lejuese Apache 2.0 dhe LLVM, në vend të politikës së licencës të kufizuar të aplikuar më parë, e cila ofron një opsion licence GPLv2 për projektet jokomerciale dhe një pronar licence për projekte komerciale.

Cheerp mund të përdoret si për të transferuar aplikacionet dhe bibliotekat ekzistuese C/C++ për t'u ekzekutuar në shfletues, ose për të krijuar aplikacione ueb me performancë të lartë dhe komponentë WebAssembly nga e para.

Ka kaluar më shumë se një vit që nga lëshimi i mëparshëm i Cheerp ( Cheerp 2.7 ) dhe ky version i ri është i mbushur me veçori dhe optimizime të reja që, edhe një herë, lëvizin gjendjen e artit të përdorimit të C++ si një gjuhë programimi për aplikacionet në ueb. dhe lojërat.

Më e rëndësishmja, me këtë version ne po bëjmë një ndryshim të rëndësishëm në modelin e licencimit të Cheerp. Që nga Cheerp 3.0, të gjithë përbërësit kryesorë të përpiluesit dhe bibliotekat tani janë të licencuara me leje nën licencën Apache 2.0/LLVM. Kjo shënon një largim rrënjësor nga modeli ynë i mëparshëm i licencës tregtare GPLv2/të dyfishtë, duke lejuar që Cheerp 3.0 të përdoret për çdo qëllim, pa kufizime.

Rreth Cheerp

El Proyecto ju lejon të kombinoni kodin C/C++ dhe JavaScript në një aplikacion ueb me aftësinë për të hyrë nga kodi JavaScript në funksionet e zhvilluara fillimisht në C/C++, dhe nga kodi C/C++ tek objektet JavaScript, bibliotekat JavaScript, API-të e uebit dhe të gjitha veçoritë e DOM, si dhe ju lejon të krijoni ndërtime të përziera, pjesë të kodi i cili përpilohet në JavaScript dhe pjesë në WebAssembly. Mbështet projektet e ndërtimit që përdorin bibliotekat standarde libc dhe libc++.

Krahasuar me përpiluesin Emscripten, Cheerp gjeneron kod të ndërmjetëm më të optimizuar dhe kompakt WebAssembly (Mesatarisht, madhësitë e skedarëve që rezultojnë janë 7% më të vogla.)

Konceptualisht, dallimet zbresin në faktin se Regjistrohu përdoret si formati i objektit të WebAssembly dhe kryen lidhjen dhe optimizimin në fazën e pas-përpunimit të WebAssembly (wasm-opt). Cheerp përdor bytecode LLVM si një përfaqësim të ndërmjetëm për bibliotekat dhe skedarët e objekteve, duke lejuar optimizime më të gjera në të gjithë projektin duke përdorur metadata të nivelit LLVM pa pasur nevojë për përpunim pas.

Artikulli i lidhur:
Emscripten 3.0, një zinxhir mjetesh ndërtimi për WebAssembly duke përdorur LLVM

Përveç kësaj, Cheerp përdor optimizuesin PreExecuter për të ekzekutuar paraprakisht kodin në kohën e kompilimit, për shembull, për të kthyer konstruktorët e përdorur për të inicializuar objektet globale në konstante. Përveç kësaj, PartialExecuter përdoret gjatë përpilimit, i cili, bazuar në analizimin e parametrave të funksionit, heq kodin që garantohet se nuk do të përdoret në ekzekutim.

Cheerp gjithashtu mund të gjenerojë kod JavaScript për të punuar në mënyrë dinamike me kujtesën. mbuluar nga mbledhësi i plehrave. Në veçanti, në vend që të imitojë një hapësirë ​​​​tradicionale adresash me vargje të shtypura, Cheerp ofron një hartë të drejtpërdrejtë nga objektet C++ në objektet JavaScript, gjë që redukton konsumin e memories sepse mbledhësi i mbeturinave JavaScript ka aftësinë të heqë objektet e papërdorura. Për të përmirësuar performancën, kodi i ndërmjetëm i gjeneruar i WebAssembly përdor zgjerimet SIMD për të orkestruar paralelizimin e operacioneve të të dhënave.

Cheerp mund të përdoret si një platformë për të ndërtuar aplikacione të integruara në ueb klient/server në C++. Në praktikën aktuale, është e zakonshme të zhvillohet një front-end i veçantë i bazuar në shfletues i shkruar në JavaScript dhe një fund i veçantë i shkruar në PHP, Python, Ruby ose JavaScript/Node.js.

Cheerp ofron mjetet për të ndërtuar aplikacione të plota në internet C++ që mbështesin si fundin ashtu edhe frontendin në një bazë të vetme kodi.

Gjatë procesit të ndërtimit, ana e serverit përpilohet në kodin vendas dhe ndërfaqja konvertohet në një paraqitje JavaScript. Korrigjimi i të gjithë komponentëve të projektit, përfshirë ata të konvertuar në JavaScript, kryhet duke përdorur tekste burimore C++ duke përdorur teknologjinë Source Map.

Së fundi, nëse jeni të interesuar të dini më shumë për të, ju mund të kontrolloni detajet në lidhja vijuese.

Kodi i përpiluesit bazohet në zhvillimet LLVM dhe Clang dhe përfshin optimizime shtesë për të përmirësuar performancën dhe për të zvogëluar madhësinë e prodhimit të përpiluar.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: AB Internet Networks 2008 SL
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.