Emscripten 3.0 mevcuttur, bir C/C++ to WebAssembly derleyicisi

Emscripten 3.0 derleyicisinin sürümü yayınlandı; bu sürüm, C/C++ ve LLVM tabanlı ön uçların mevcut olduğu diğer dillerde, JavaScript projeleriyle daha sonra entegrasyon için evrensel düşük seviyeli ara kod WebAssembly'de derlemenize olanak tanır. bir web tarayıcısında kullanın ve Node.js'de kullanın veya wasm çalışma zamanını kullanarak çalışan bağımsız çoklu platform uygulamaları oluşturun. Proje kodu MIT lisansı altında dağıtılmaktadır. Derleyici, LLVM projesindeki gelişmeleri kullanır ve Binaryen kitaplığı, WebAssembly oluşturma ve optimizasyon için kullanılır.

Emscripten projesinin temel amacı, kodun yazıldığı programlama dilinden bağımsız olarak Web üzerinde kod çalıştırabilmenizi sağlayan bir araç oluşturmaktır. Derlenmiş uygulamalar, standart C ve C++ kitaplıklarına (libc, libcxx), C++ uzantılarına, pthreads tabanlı çoklu iş parçacığına, POSIX API'lerine ve birçok multimedya kitaplığına yapılan çağrıları kullanabilir. Web API'si ve JavaScript koduyla entegrasyona yönelik API'ler ayrı olarak sağlanır.

Emscripten, SDL2 kütüphanesinin çıktısının Canvas aracılığıyla yayınlanmasını destekler ve ayrıca grafik uygulamaları ve oyunları WebAssembly'ye dönüştürmenize olanak tanıyan WebGL aracılığıyla OpenGL ve EGL desteği sağlar (örneğin, Qt araç kitinin bir bağlantı noktası vardır ve Unreal Engine'i destekler) 4 ve Unit oyun motorları, fiziksel Bullet motoru). C/C++ dilinde kod derlemenin yanı sıra, Lua, C#, Python, Ruby ve Perl dilleri için tarayıcılarda tercümanların ve sanal makinelerin başlatılmasını sağlamak üzere ayrı ayrı projeler geliştirilmektedir. Swift, Rust, D ve Fortran gibi dillerde kullanılabilen Clang olmayan ön uçları LLVM'ye uygulamak da mümkündür.

Emscripten 3.0'daki önemli değişiklikler:

  • Emscripten'de kullanılan musl C kütüphanesi 1.2.2 sürümüne güncellendi (Emscripten 2.x dalında 1.1.15 sürümü kullanıldı).
  • Projede esas olarak kullanılan işlevlerin bir kısmı parseTools.js kitaplığından kaldırıldı: RemovePointing, pointingLevels, RemoveAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralTypePartBits, isFunctionDef, isPossibleFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • Shell.html ve Shell_minimal.html şablonlarında, emscripten'in çalışması sırasında oluşan ve uygulama tarafından stderr aracılığıyla çıkarılan hata mesajlarının çıktısı, varsayılan olarak console.error yerine console.warn kullanacak şekilde değiştirilir.
  • Dosya adlarında kullanılan belirli bir metin kodlamasını belirtme yeteneği eklendi. Kodlama, dosya adı aktarılırken bir sonek biçiminde belirtilebilir; örneğin, "a.rsp.utf-8" veya "a.rsp.cp1251").

Kaynak: opennet.ru

Yorum ekle