Emscripten 3.0, LLVM kullanan WebAssembly için bir yapı araç zinciri

geçenlerde Emscripten 3.0 derleyicisinin yeni sürümünün piyasaya sürüldüğü açıklandı, kodun C / C++ ve LLVM tabanlı ön uçların mevcut olduğu diğer dillerde derlenmesine izin vermesiyle karakterize edilen , düşük seviyeli bir evrensel ara yazılım WebAssembly'de.

Bu derlemenin ana işlevi, bir web tarayıcısında çalıştırılan ve Node.js'de kullanılan JavaScript Projeleri ile sonraki entegrasyonu içindir. Js veya wasm çalışma zamanı ile çalışan çapraz platform bağımsız uygulamalar oluşturun.

Emscripten hakkında

ana hedef Emscripten projesinin geliştirilmesi Web'de kod çalıştırmanıza izin veren bir araç yaratmaktır, yazıldığı programlama dili ne olursa olsun.

Derlenmiş uygulamalar standart C ve C++ kitaplık çağrılarını kullanabilir (libc, libcxx), C ++ uzantıları, pthreads tabanlı çoklu kullanım, POSIX API ve birçok multimedya kitaplığı. Web API ve JavaScript kodu ile entegrasyon için API'ler ayrı olarak sağlanır.

Üye olmak Canvas aracılığıyla SDL2 kitaplık çıktısının akışını destekler, ayrıca WebGL aracılığıyla OpenGL ve EGL desteği sağlayarak grafik uygulamalarını ve oyunları WebAssembly'ye dönüştürmenize olanak tanır.

Hemen hemen her taşınabilir C veya C ++ kod tabanı, Emscripten kullanılarak WebAssembly'de derlenebilirGrafik oluşturması, ses çalması ve dosyaları yüklemesi ve işlemesi gereken yüksek performanslı oyunlardan Qt gibi uygulama çerçevelerine kadar. Emscripten, Unreal Engine 4 ve Unity Engine gibi ticari kod tabanları da dahil olmak üzere, çok uzun bir gerçek dünya kod tabanları listesini WebAssembly'ye dönüştürmek için zaten kullanılmıştır.

C/C++ kodunu derlemenin yanı sıra, Lua, C#, Python, Ruby ve Perl için yorumlayıcıların ve sanal makinelerin tarayıcılarda başlamasını sağlamak için ayrı ayrı projeler geliştirilir. Swift, Rust, D ve Fortran gibi diller için mevcut olan LLVM'ye Clang olmayan arayüzler uygulamak da mümkündür.

Bu not edilmelidir yerel çalışma zamanı ve Emscripten arasında farklar vardır, yani, genel olarak, eYerel kodda bazı değişiklikler yapmak gerekiyor. Bununla birlikte, birçok uygulamanın yalnızca ana döngülerini tanımlama şeklini değiştirmesi ve ayrıca tarayıcı / JavaScript sınırlamalarına uyum sağlamak için dosya işlemeyi değiştirmesi gerekecektir.

Ayrıca bazı kodların taşınmasını kolaylaştırabilecek sınırlamalar da vardır - nerede daha fazla çaba harcamanız gerekebileceğini belirlemek için Taşınabilirlik Yönergelerini okuyun.

Emscripten 3.0'ın başlıca yeni özellikleri

Sunulan bu yeni versiyonda emscripten'de kullanılan musl C kütüphanesi 1.2.2 versiyonuna güncellenmiştir (Emscripten 1.1.15.x dalında 2 versiyonu kullanılmıştır).

ParseTools.js kitaplığından, çoğunlukla projede kullanılan işlevlerin bir kısmı kaldırıldı: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralType _IntToHex, IEEEunHex, Compiletime.isPointerType, Compiletime,Type, Compiletime,Type, Compiletime,Type.

Süre shell.html ve shell_minimal.html şablonlarında, hata mesajlarının çıktısı emscripten işlemi sırasında meydana gelen ve uygulama tarafından stderr aracılığıyla yayınlanan varsayılan olarak console.error yerine console.warn kullanılacak şekilde değiştirilir.

Ayrıca vurgulanmıştır ki dosya adlarında kullanılan belirli bir metin kodlamasını belirtme yeteneği eklendi. Dosya adı iletilirken kodlama bir sonek olarak belirtilebilir, örneğin "a.rsp.utf-8" veya "a.rsp.cp1251").

Son olarak, Emscripten hakkında daha fazla bilgi edinmek istiyorsanız, projenin ayrıntılarına kendi sayfasından ulaşabilirsiniz. resmi internet sitesi.

Aynı şekilde, Emscripten'in nasıl kullanılacağına dair web'deki belgelere başvurabilirsiniz, önerebileceğimiz bir referans sitesi Mozilla geliştirici web sitesidir: https://developer.mozilla.org.

Ayrıca proje kodunun MIT lisansı altında dağıtıldığını da belirtmekte fayda var. Derleyici, LLVM projesindeki gelişmeleri kullanır ve Binaryen kitaplığı, WebAssembly ve optimizasyon oluşturmak için kullanılır. kodunuzu kontrol edebilirsiniz GitHub'daki kaynak.


İlk yorumu siz

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.