Cheerp compiler open source dari C/C++ ke WebAssembly dan JavaScript

sorak-sorai

Cheerp: Kompiler C++ untuk Web

Baru-baru ini diumumkan Cheerp rilis 3.0, sebuah kompiler itu memungkinkan Anda mengkompilasi kode C/C++ ke WebAssembly atau JavaScript. Cabang baru ini terkenal karena memindahkan kompiler dan perpustakaan yang menyertainya untuk menggunakan lisensi Apache 2.0 dan LLVM permisif, daripada kebijakan lisensi terbatas yang diterapkan sebelumnya, yang menawarkan opsi lisensi GPLv2 untuk proyek non-komersial dan pemilik lisensi untuk proyek komersial.

Cheerp dapat digunakan baik untuk mem-porting aplikasi dan pustaka C/C++ yang ada untuk dijalankan di browser, atau untuk membuat aplikasi web berkinerja tinggi dan komponen WebAssembly dari awal.

Sudah lebih dari setahun sejak rilis Cheerp ( Cheerp 2.7 ) sebelumnya, dan versi baru ini dikemas dengan fitur dan pengoptimalan baru yang, sekali lagi, meningkatkan penggunaan C++ sebagai bahasa pemrograman untuk aplikasi Web. dan permainan.

Yang terpenting, dengan rilis ini kami membuat perubahan signifikan pada model lisensi Cheerp. Sejak Cheerp 3.0, semua komponen kompiler inti dan pustaka sekarang dilisensikan secara permisif di bawah lisensi Apache 2.0/LLVM. Ini menandai perubahan radikal dari model lisensi komersial GPLv2/ganda kami sebelumnya, memungkinkan Cheerp 3.0 digunakan untuk tujuan apa pun, tanpa batasan.

Tentang Cheerp

Proyek memungkinkan Anda menggabungkan kode C/C++ dan JavaScript dalam aplikasi web dengan kemampuan untuk mengakses dari kode JavaScript ke fungsi yang awalnya dikembangkan di C/C++, dan dari kode C/C++ ke objek JavaScript, pustaka JavaScript, API Web, dan semua fitur DOM, serta memungkinkan Anda membuat bangunan campuran, bagian dari kode yang dikompilasi ke JavaScript dan bagian ke WebAssembly. Mendukung proyek pembangunan yang menggunakan pustaka libc dan libc++ standar.

Dibandingkan dengan kompiler Emscripten, Cheerp menghasilkan kode perantara WebAssembly yang lebih optimal dan ringkas (Rata-rata, ukuran file yang dihasilkan 7% lebih kecil.)

Secara konseptual, perbedaannya bermuara pada fakta bahwa Tertulis digunakan sebagai format objek WebAssembly dan melakukan pengikatan dan pengoptimalan pada tahap pasca-pemrosesan WebAssembly (wasm-opt). Cheerp menggunakan kode byte LLVM sebagai representasi perantara untuk pustaka dan file objek, memungkinkan pengoptimalan proyek yang lebih luas menggunakan metadata tingkat LLVM tanpa perlu pasca-pemrosesan.

Artikel terkait:
Emscripten 3.0, toolchain build untuk WebAssembly menggunakan LLVM

Selain itu, Cheerp menggunakan pengoptimal PreExecuter untuk mengeksekusi kode terlebih dahulu pada waktu kompilasi, misalnya, untuk mengonversi konstruktor yang digunakan untuk menginisialisasi objek global menjadi konstanta. Selain itu, PartialExecuter digunakan selama kompilasi, yang berdasarkan penguraian parameter fungsi, menghapus kode yang dijamin tidak akan digunakan saat eksekusi.

Cheerp juga dapat menghasilkan kode JavaScript untuk bekerja secara dinamis dengan memori. ditutupi oleh pemulung. Secara khusus, alih-alih meniru ruang alamat tradisional dengan array yang diketik, Cheerp menyediakan pemetaan langsung dari objek C++ ke objek JavaScript, yang mengurangi konsumsi memori karena pengumpul sampah JavaScript memiliki kemampuan untuk menghapus objek yang tidak digunakan. Untuk meningkatkan kinerja, kode perantara WebAssembly yang dihasilkan menggunakan ekstensi SIMD untuk mengatur paralelisasi operasi data.

Cheerp dapat digunakan sebagai platform untuk membangun aplikasi web tertanam klien/server di C++. Dalam praktik saat ini, adalah umum untuk mengembangkan front-end berbasis browser terpisah yang ditulis dalam JavaScript dan back-end terpisah yang ditulis dalam PHP, Python, Ruby, atau JavaScript/Node.js.

Cheerp menyediakan sarana untuk membangun aplikasi web C++ lengkap yang mendukung backend dan frontend dalam basis kode tunggal.

Selama proses pembuatan, sisi server dikompilasi menjadi kode asli, dan antarmuka diubah menjadi representasi JavaScript. Debugging semua komponen proyek, termasuk yang dikonversi ke JavaScript, dilakukan menggunakan teks sumber C++ menggunakan teknologi Peta Sumber.

Akhirnya, jika Anda tertarik untuk mengetahui lebih banyak tentangnya, Anda dapat memeriksa detailnya di link berikut.

Kode kompiler didasarkan pada pengembangan LLVM dan Dentang dan menyertakan pengoptimalan tambahan untuk meningkatkan kinerja dan mengurangi ukuran output yang dikompilasi.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Bertanggung jawab atas data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.