Cheerp 3.0, C/C++ menyang JavaScript compiler, migrasi menyang Apache 2.0 lan lisensi LLVM

Kompiler Cheerp 3.0 wis dikenalake, ngidini sampeyan ngumpulake kode C/C++ menyang WebAssembly utawa JavaScript. Cabang anyar iki misuwur amarga mindhah kompiler lan perpustakaan sing ngiringi nggunakake lisensi Apache 2.0 lan LLVM sing ngidini, tinimbang kabijakan lisensi winates sing sadurunge ditrapake, nawakake pilihan lisensi GPLv2 kanggo proyek non-komersial lan lisensi kepemilikan kanggo komersial. Kode compiler adhedhasar pembangunan saka LLVM lan Clang, lan kalebu optimizations tambahan kanggo nambah kinerja lan nyuda ukuran asil nyawiji.

Cheerp bisa digunakake kanggo porting perpustakaan lan aplikasi C/C ++ sing ana kanggo mbukak ing browser, lan kanggo nggawe aplikasi web kinerja dhuwur lan komponen WebAssembly saka awal. Proyek iki ngidini sampeyan nggabungake kode ing C/C++ lan JavaScript ing siji aplikasi web kanthi kemampuan kanggo ngakses saka kode JavaScript menyang fungsi sing asline dikembangake ing C/C++, lan saka kode C/C++ menyang obyek JavaScript, perpustakaan JavaScript, API Web lan kabeh fitur DOM. Sampeyan bisa nggawe rakitan gabungan, bagean saka kode sing dikompilasi menyang JavaScript, lan bagean menyang WebAssembly. Ndhukung proyek bangunan sing nggunakake perpustakaan standar libc lan libc++.

Dibandhingake karo kompiler Emscripten, Cheerp ngasilake kode perantara WebAssembly sing luwih optimal lan kompak (rata-rata 7% file sing luwih cilik). Secara konseptual, bedane yaiku Emscripten digunakake minangka format obyek WebAssembly lan nindakake panyambungan lan optimasi ing tahap pangolahan pasca WebAssembly (wasm-opt). Cheerp nggunakake bytecode LLVM minangka perwakilan penengah kanggo perpustakaan lan file obyek, ngidini optimasi sing luwih jembar sing ngluwihi kabeh proyek lan nggunakake metadata tingkat LLVM tanpa perlu proses pasca.

Kajaba iku, Cheerp nggunakake pangoptimal PreExecuter, sing njamin eksekusi kode preemptive ing tahap kompilasi, umpamane, kanggo ngowahi konstruktor sing digunakake kanggo miwiti obyek global dadi konstanta. Uga, sajrone kompilasi, PartialExecuter digunakake, sing, adhedhasar analisis parameter fungsi, mbusak kode sing dijamin ora bakal digunakake sajrone eksekusi.

Cheer uga bisa ngasilake kode JavaScript kanggo manipulasi memori kanthi dinamis sing ditutupi dening kolektor sampah. Utamane, tinimbang niru papan alamat tradisional nggunakake array sing diketik, Cheerp nyedhiyakake pemetaan langsung obyek C ++ menyang obyek JavaScript, sing nyuda konsumsi memori amarga kolektor sampah JavaScript nduweni kemampuan kanggo mbusak obyek sing ora digunakake. Kanggo nambah kinerja, kui WebAssembly kode penengah nggunakake ekstensi SIMD sing ngidini parallelization saka operasi data.

Cheerp bisa digunakake minangka platform kanggo nggawe aplikasi web klien / server terpadu ing C++. Ing praktik saiki, umume ngembangake ujung ngarep ing browser sing kapisah, ditulis ing JavaScript, lan mburi mburi sing kapisah, ditulis ing PHP, Python, Ruby, utawa JavaScript/Node.js. Cheerp nyedhiyakake alat kanggo nggawe aplikasi web lengkap ing C ++, sing backend lan frontend didhukung ing basis kode siji. Sajrone proses kompilasi, sisih server dikompilasi dadi kode asli, lan antarmuka diowahi dadi perwakilan JavaScript. Debugging kabeh komponen proyek, kalebu sing diowahi dadi JavaScript, ditindakake kanthi nggunakake teks sumber ing C ++ nggunakake teknologi Source Map (yen ana kesalahan, sampeyan bisa ndeleng bagean kode C ++; ndhukung nyetel breakpoints ing kode C ++ lan baris. -line langkah-langkah eksekusi kode C++).

Source: opennet.ru

Add a comment