Cheerp 3.0, kompileri C/C++ në JavaScript, është kaluar në licencat Apache 2.0 dhe LLVM.

Prezantuar kompajleri Cheerp 3.0, që lejon kompilimin e çdo kodi C/C++ në WebAssembly ose JavaScript. Dega e re është e veçantë për kalimin e kompajlerit dhe bibliotekave përkatëse në përdorimin e licencave të lejuara Apache 2.0 dhe LLVM, në vend të politikës së mëparshme të licencës kufizuese, e cila ofronte një variant me licencën GPLv2 për projekte jo-fitimprurëse dhe një licencë proprietar për ato fitimprurëse. Kodi i kompajlerit bazohet në punimet e LLVM dhe Clang, dhe përfshin optimizime të tjera për të rritur performancën dhe për të zvogëluar madhësinë e rezultatit të kompiluar.

Cheerp mund të përdoret si për portimin e biblioteka dhe aplikacioneve ekzistuese C/C++ për t'u ekzekutuar në shfletues, ashtu edhe për krijimin e aplikacioneve web me performancë të lartë dhe komponente WebAssembly nga e para. Projekti lejon kombinimin në një aplikacion web të kodit në C/C++ dhe JavaScript me mundësinë e aksesit nga kodi JavaScript në funksionet, të zhvilluara fillimisht në C/C++, dhe nga kodi C/C++ në objektet JavaScript, bibliotekat JavaScript, Web API dhe të gjitha mundësitë e DOM. Lejohet krijimi i ndërtimeve të kombinuara, ku një pjesë e kodit kompilohet në JavaScript dhe pjesa tjetër në WebAssembly. Mbështetet ndërtimi i projekteve që përdorin bibliotekat standarde libc dhe libc++.

Në krahasim me kompajlerin Emscripten, Cheerp gjeneron një kod ndërmjetë më të optimizuar dhe më kompakti për WebAssembly (në mesatare madhësia e skedarëve përfundimtarë është 7% më e vogël). Diferencat konceptuale lidhen me faktin se Emscripten përdoret si format objekti për WebAssembly dhe kryen lidhjen dhe optimizimin në fazën e postpërpunimit të WebAssembly (wasm-opt). Në Cheerp, si një përfaqësim ndërmjetë për bibliotekat dhe skedarët objekt përdoret bytecode në formatin LLVM, çka lejon aplikimin e optimizimeve më të gjera, duke përfshirë projektin në tërësi dhe duke përdorur metadatat në nivelin LLVM, pa nevojën për të kryer postpërpunim.

Shtesat e Cheerp përfshijnë optimizuesin PreExecuter, i cili siguron ekzekutimin e parashikueshëm të kodit në fazën e kompilimit, për shembull, për transformimin në konstante të konstruktorëve, të përdorura për inicializimin e objekteve globale. Gjithashtu, gjatë kompilimit përdoret PartialExecuter, i cili, në bazë të analizës së parametrave të funksioneve, eliminon kodin që garanton që nuk do të përdoret gjatë ekzekutimit.

Cheerp gjithashtu mund të gjenerojë kod JavaScript për punë dinamike me memorien, e mbuluar nga koleksionisti i mbetjeve. Së veçanti, në vend që të imitojë hapësirën tradicionale të adresimit duke përdorur tabelat e tipizuara, Cheerp siguron një mapim të drejtpërdrejtë të objekteve C++ në objektet JavaScript, çka lejon uljen e konsumit të memories, pasi koleksionisti i mbetjeve të JavaScript ka mundësinë të fshijë objektet e papërdorura. Për të rritur performancën në kodin e ndërmjetëm të gjeneruar për WebAssembly, zbatohen zgjerime SIMD që lejojnë organizimin e ekzekutimit paralel të operacioneve mbi të dhënat.

Cheerp mund të përdoret si platformë për krijimin e aplikacioneve web të integruara klient/server në gjuhën C++. Në praktikat ekzistuese, zakonisht zhvillohet veçmas frontend-i që ekzekutohet në shfletues, i shkruar në JavaScript, dhe një pjesë serveri të ndarë, të shkruar në gjuhët PHP, Python, Ruby ose JavaScript/Node.js. Cheerp ofron mjete për krijimin e aplikacioneve web të plota në gjuhën C++, në të cilat backend-i dhe frontend-i mbahen në një bazë të vetme kodi. Gjatë procesit të kompilimit, pjesa serveri kompilohet në kod nativ, ndërsa ndërfaqja konvertohet në një përfaqësim JavaScript. Debagimi i të gjitha komponenteve të projektit, përfshirë ato që konvertohen në JavaScript, kryhet përmes teksteve burimore në gjuhën C++ duke përdorur teknologjinë Source Map (në rast të një gabimi, mund të shihni pjesën e kodit në C++, mbështetet vendosja e pikave të ndalesës në kodin C++ dhe ekzekutimi hap pas hapi të kodit C++).

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster