Açık kaynaklı bir derleyiciyi C/C++'dan WebAssembly ve JavaScript'e neşelendirin

neşelendirmek

Cheerp: Web için bir C++ Derleyicisi

Geçenlerde duyuruldu Cheerp 3.0 sürümü, bir derleyici herhangi bir C/C++ kodunu WebAssembly veya JavaScript'te derlemenizi sağlar. Yeni şube, ticari olmayan projeler için bir GPLv2.0 lisans seçeneği ve ticari projeler için bir lisans sahibi sunan önceden uygulanan sınırlı lisans politikası yerine, derleyiciyi ve beraberindeki kitaplıkları izin verilen Apache 2 ve LLVM lisanslarını kullanmaya taşımasıyla dikkat çekiyor.

Cheerp, hem mevcut C/C++ uygulamalarını ve kitaplıklarını tarayıcıda çalışacak şekilde taşımak hem de sıfırdan yüksek performanslı web uygulamaları ve WebAssembly bileşenleri oluşturmak için kullanılabilir.

Cheerp'in (Cheerp 2.7) bir önceki sürümünün üzerinden bir yıldan fazla zaman geçti ve bu yeni sürüm, C++'ı Web uygulamaları için bir programlama dili olarak kullanma sanatını bir kez daha ileriye taşıyan yeni özellikler ve optimizasyonlarla dolu. ve oyunlar.

En önemlisi, bu sürümle Cheerp'in lisanslama modelinde önemli bir değişiklik yapıyoruz. Cheerp 3.0'dan itibaren, tüm çekirdek derleyici bileşenleri ve kitaplıkları artık izin verilen bir şekilde Apache 2.0/LLVM lisansı altında lisanslanmıştır. Bu, Cheerp 2'ın herhangi bir amaç için, herhangi bir kısıtlama olmaksızın kullanılmasına izin vererek, önceki GPLv3.0/ikili ticari lisans modelimizden radikal bir ayrılığı işaret ediyor.

Cheerp Hakkında

proje C/C++ kodunu ve JavaScript'i bir web uygulamasında birleştirmenizi sağlar JavaScript kodundan orijinal olarak C/C++'da geliştirilen işlevlere ve C/C++ kodundan JavaScript nesnelerine, JavaScript kitaplıklarına, Web API'lerine ve tüm DOM özelliklerine erişme yeteneğinin yanı sıra karma yapılar oluşturmanıza olanak tanır. JavaScript'te derlenen ve WebAssembly'de parçalanan kod. Standart libc ve libc++ kitaplıklarını kullanan derleme projelerini destekler.

Emscripten derleyicisi ile karşılaştırıldığında, Cheerp daha optimize edilmiş ve kompakt WebAssembly ara kodu oluşturur (Ortalama olarak, ortaya çıkan dosya boyutları %7 daha küçüktür.)

Kavramsal olarak, farklılıklar şu gerçeğe indirgenir: Üye olmak WebAssembly'ın nesne biçimi olarak kullanılır ve WebAssembly'nin son işleme aşamasında bağlama ve optimizasyon gerçekleştirir. WebAssembly (wasm-opt). Cheerp, LLVM bayt kodunu kitaplıklar ve nesne dosyaları için bir ara temsil olarak kullanır ve sonradan işlemeye gerek kalmadan LLVM düzeyindeki meta verileri kullanarak proje çapında daha geniş optimizasyonlara izin verir.

İlgili makale:
Emscripten 3.0, LLVM kullanan WebAssembly için bir yapı araç zinciri

Buna ek olarak, Cheerp, kodu önleyici olarak yürütmek için PreExecuter iyileştiriciyi kullanır derleme zamanında, örneğin, genel nesneleri sabitlere başlatmak için kullanılan oluşturucuları dönüştürmek için. Ek olarak, derleme sırasında, işlevin parametrelerini ayrıştırmaya dayalı olarak yürütme sırasında kullanılmaması garanti edilen kodu kaldıran PartialExecuter kullanılır.

Cheerp, bellekle dinamik olarak çalışmak için JavaScript kodu da oluşturabilir. çöp toplayıcı tarafından kaplanmıştır. Özellikle, Cheerp, yazılan dizilerle geleneksel bir adres alanını taklit etmek yerine, C++ nesnelerinden JavaScript nesnelerine doğrudan bir eşleme sağlar; bu, JavaScript çöp toplayıcının kullanılmayan nesneleri kaldırma yeteneğine sahip olduğundan bellek tüketimini azaltır. Performansı artırmak için oluşturulan WebAssembly ara kodu, veri işlemlerinin paralelleştirilmesini düzenlemek için SIMD uzantılarını kullanır.

Cheerp, gömülü web uygulamaları oluşturmak için bir platform olarak kullanılabilir C++'da istemci/sunucu. Mevcut uygulamada, JavaScript'te yazılmış ayrı bir tarayıcı tabanlı ön uç ve PHP, Python, Ruby veya JavaScript/Node.js'de yazılmış ayrı bir arka uç geliştirmek yaygındır.

Cheerp, tek bir kod tabanında hem arka ucu hem de ön ucu destekleyen eksiksiz C++ web uygulamaları oluşturma araçları sağlar.

Oluşturma işlemi sırasında, sunucu tarafı yerel koda derlenir ve arayüz bir JavaScript temsiline dönüştürülür. JavaScript'e dönüştürülenler de dahil olmak üzere tüm proje bileşenlerinin hata ayıklaması, Source Map teknolojisi kullanılarak C++ kaynak metinleri kullanılarak gerçekleştirilir.

Son olarak, onun hakkında daha fazla bilgi edinmekle ilgileniyorsanayrıntılarını kontrol edebilirsiniz. aşağıdaki bağlantı.

Derleyici kodu, LLVM ve Clang geliştirmelerine dayalıdır ve performansı iyileştirmek ve derlenen çıktının boyutunu azaltmak için ek optimizasyonlar içerir.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: AB Internet Networks 2008 SL
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.