Piristä avoimen lähdekoodin kääntäjää C/C++:sta WebAssemblyyn ja JavaScriptiin

hurraa

Cheerp: C++-kääntäjä verkkoon

Siitä ilmoitettiin hiljattain Cheerp 3.0 -julkaisu, sen kääntäjä voit kääntää minkä tahansa C/C++-koodin WebAssemblyksi tai JavaScriptiksi. Uusi haara on merkittävä siitä, että kääntäjä ja siihen liittyvät kirjastot siirretään käyttämään sallivia Apache 2.0- ja LLVM-lisenssejä aiemmin sovelletun rajoitetun lisenssipolitiikan sijaan, joka tarjoaa GPLv2-lisenssivaihtoehdon ei-kaupallisille projekteille ja lisenssinomistajan kaupallisiin projekteihin.

Cheerpiä voidaan käyttää sekä nykyisten C/C++-sovellusten ja kirjastojen siirtämiseen selaimessa toimiviksi tai tehokkaiden verkkosovellusten ja WebAssembly-komponenttien luomiseen tyhjästä.

On kulunut yli vuosi Cheerpin edellisestä julkaisusta ( Cheerp 2.7 ), ja tämä uusi versio on täynnä uusia ominaisuuksia ja optimointeja, jotka jälleen kerran siirtävät C++:n käytön huippua Web-sovellusten ohjelmointikielenä. pelejä.

Mikä tärkeintä, tällä julkaisulla teemme merkittävän muutoksen Cheerpin lisenssimalliin. Cheerp 3.0:sta lähtien kaikki kääntäjän ydinkomponentit ja kirjastot on nyt lisensoitu Apache 2.0/LLVM -lisenssillä. Tämä merkitsee radikaalia poikkeamaa aiemmasta GPLv2/dual kaupallisesta lisenssimallistamme, mikä mahdollistaa Cheerp 3.0:n käytön mihin tahansa tarkoitukseen ilman rajoituksia.

Tietoja Cheerpistä

El proyecto voit yhdistää C/C++-koodin ja JavaScriptin verkkosovelluksessa mahdollisuus päästä JavaScript-koodista alunperin C/C++:lla kehitettyihin toimintoihin ja C/C++-koodista JavaScript-objekteihin, JavaScript-kirjastoihin, Web API:ihin ja kaikkiin DOM-ominaisuuksiin, sekä mahdollistaa sekarakenteiden luomisen, osa koodi, joka käännetään JavaScriptiin ja osat WebAssemblyyn. Tukee koontiprojekteja, jotka käyttävät tavallisia libc- ja libc++-kirjastoja.

Verrattuna Emscripten-kääntäjään Cheerp luo entistä optimoitumpaa ja kompaktimpaa WebAssembly-välikoodia (Tuloksena saadut tiedostokoot ovat keskimäärin 7 % pienempiä.)

Käsitteellisesti erot johtuvat siitä, että Kirjaudu käytetään WebAssemblyn objektimuotona ja suorittaa sidontaa ja optimointia tiedoston jälkikäsittelyvaiheessa. WebAssembly (wasm-opt). Cheerp käyttää LLVM-tavukoodia kirjastojen ja objektitiedostojen väliesityksenä, mikä mahdollistaa laajemman projektin laajuisen optimoinnin käyttämällä LLVM-tason metatietoja ilman jälkikäsittelyä.

Aiheeseen liittyvä artikkeli:
Emscripten 3.0, WebAssemblyn koontityökaluketju LLVM:ää käyttäen

Lisäksi, Cheerp käyttää PreExecuter-optimointiohjelmaa koodin ennaltaehkäisevään suorittamiseen käännöshetkellä esimerkiksi muuttamaan globaalien objektien alustamiseen käytetyt konstruktorit vakioiksi. Lisäksi kääntämisessä käytetään PartialExecuteria, joka funktion parametrien jäsentämisen perusteella poistaa koodin, jota ei taatusti käytetä suorituksessa.

Cheerp voi myös luoda JavaScript-koodia toimiakseen dynaamisesti muistin kanssa. jätekeräimen peitossa. Erityisesti sen sijaan, että se emuloisi perinteistä osoiteavaruutta kirjoitetuilla taulukoilla, Cheerp tarjoaa suoran yhdistämisen C++-objekteista JavaScript-objekteihin, mikä vähentää muistin kulutusta, koska JavaScript-roskankerääjä pystyy poistamaan käyttämättömät objektit. Suorituskyvyn parantamiseksi luotu WebAssembly-välikoodi käyttää SIMD-laajennuksia datatoimintojen rinnastamisen järjestämiseen.

Cheerpiä voidaan käyttää alustana sulautettujen verkkosovellusten rakentamiseen asiakas/palvelin C++:ssa. Nykykäytännössä on yleistä kehittää erillinen JavaScript-kielellä kirjoitettu selainpohjainen käyttöliittymä ja erillinen PHP-, Python-, Ruby- tai JavaScript/Node.js-kielellä kirjoitettu tausta.

Cheerp tarjoaa keinot luoda täydellisiä C++-verkkosovelluksia, jotka tukevat sekä tausta- että käyttöliittymää yhdessä koodipohjassa.

Rakennusprosessin aikana palvelinpuoli käännetään alkuperäiseen koodiin ja käyttöliittymä muunnetaan JavaScript-esitykseen. Kaikkien projektikomponenttien, mukaan lukien JavaScriptiksi muunnettujen, virheenkorjaus suoritetaan C++-lähdeteksteillä käyttäen Source Map -tekniikkaa.

lopuksi, jos olet kiinnostunut tietämään siitä lisää, voit tarkistaa yksityiskohdat seuraava linkki.

Kääntäjäkoodi perustuu LLVM- ja Clang-kehityksiin ja sisältää lisäoptimointeja suorituskyvyn parantamiseksi ja käännetyn lähdön koon pienentämiseksi.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastaa tiedoista: AB Internet Networks 2008 SL
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.