WebAssembly tabanlı uygulamalar oluşturmak için bir araç seti olan Wasmer 2.0 mevcuttur

Wasmer projesi, farklı işletim sistemlerinde çalışabilen evrensel uygulamalar oluşturmak ve güvenilmeyen kodları ayrı ayrı çalıştırmak için kullanılabilecek WebAssembly modüllerini yürütmek için bir çalışma zamanı geliştiren ikinci büyük sürümünü yayınladı. Proje kodu Rust'ta yazılmıştır ve MIT lisansı altında dağıtılmaktadır.

Taşınabilirlik, uygulama kodunun herhangi bir işletim sistemi üzerinde çalışabilen veya diğer programlama dillerindeki programlara gömülebilen düşük seviyeli WebAssembly ara kodunda derlenmesiyle sağlanır. Programlar, WebAssembly sözde kodunu çalıştıran hafif kapsayıcılardır. Bu kaplar işletim sistemine bağlı değildir ve orijinal olarak herhangi bir programlama dilinde yazılmış kodu içerebilir. Emscripten araç seti WebAssembly'ye derlemek için kullanılabilir. WebAssembly'ı mevcut platformun makine koduna dönüştürmek için çeşitli derleme arka uçlarının (Singlepass, Cranelift, LLVM) ve motorların (JIT veya makine kodu oluşturma kullanılarak) bağlantısını destekler.

Erişim kontrolü ve sistemle etkileşim, işletim sistemi tarafından sağlanan dosyalar, soketler ve diğer işlevlerle çalışmak için programlama arayüzleri sağlayan WASI (WebAssembly Sistem Arayüzü) API kullanılarak sağlanır. Uygulamalar, sanal alan ortamında ana sistemden yalıtılmıştır ve yalnızca belirtilen işlevselliğe (yetenek yönetimine dayalı bir güvenlik mekanizması - her bir kaynakla (dosyalar, dizinler, yuvalar, sistem çağrıları vb.) yapılan eylemler için) erişime sahiptir. başvuruya uygun yetkilerin verilmesi gerekir).

Bir WebAssembly kapsayıcısı başlatmak için, Wasmer'ı harici bağımlılıklar olmadan gelen çalışma zamanı sistemine yükleyin (“curl https://get.wasmer.io -sSfL | sh”) ve gerekli dosyayı çalıştırın (“wasmer test.wasm” ). Programlar, WAPM paket yöneticisi kullanılarak yönetilebilen normal WebAssembly modülleri biçiminde dağıtılır. Wasmer ayrıca WebAssembly kodunu Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir ve Java programlarına gömmek için kullanılabilecek bir kitaplık olarak da mevcuttur.

Platform, yerel derlemelere yakın uygulama yürütme performansı elde etmenize olanak tanır. WebAssembly modülü için Native Object Engine'i kullanarak, çalışması için minimum çalışma süresi gerektiren ancak tüm sanal alan izolasyonunu koruyan makine kodu (önceden derlenmiş .so, .dylib ve .dll nesne dosyalarını oluşturmak için "wasmer compile -native") oluşturabilirsiniz. özellikler. Yerleşik Wasmer ile önceden derlenmiş programlar sağlamak mümkündür. Eklentiler ve uzantılar oluşturmak için Rust API ve Wasm-C-API sunulmaktadır.

Wasmer'ın sürüm numarasındaki önemli bir değişiklik, geliştiricilere göre platform kullanıcılarının %99'unu etkilemeyecek olan dahili API'ye uyumsuz değişikliklerin getirilmesiyle ilişkilidir. Uyumluluğu bozan değişiklikler arasında serileştirilmiş Wasm modüllerinin formatındaki değişiklik de yer alıyor (Wasmer 1.0'da serileştirilmiş modüller Wasmer 2.0'da kullanılamayacak). Diğer değişiklikler:

  • Veri işlemlerinin paralelleştirilmesine olanak tanıyan SIMD (Tek Talimat, Çoklu Veri) talimatları desteği. SIMD kullanımının performansı önemli ölçüde artırabileceği alanlar arasında makine öğrenimi, video kodlama ve kod çözme, görüntü işleme, fiziksel süreç simülasyonu ve grafik manipülasyonu yer alır.
  • Wasm modüllerinin diğer modüllerdeki veya temel ortamdaki bilgilere erişmesine olanak tanıyan referans türleri desteği.
  • Önemli performans optimizasyonları yapıldı. Kayan nokta sayılarıyla LLVM çalışma zamanının hızı yaklaşık %50 artırıldı. Çekirdeğe erişim gerektiren durumlar azaltılarak işlev çağrıları önemli ölçüde hızlandırıldı. Cranelift kod üreteci performansı %40 artırıldı. Veri seri durumdan çıkarma süresi azaltıldı.
    WebAssembly tabanlı uygulamalar oluşturmak için bir araç seti olan Wasmer 2.0 mevcuttur
    WebAssembly tabanlı uygulamalar oluşturmak için bir araç seti olan Wasmer 2.0 mevcuttur
  • Özü daha doğru bir şekilde yansıtmak için motorların adları değiştirildi: JIT → Universal, Native → Dylib (Dinamik Kütüphane), Object File → StaticLib (Static Library).

Kaynak: opennet.ru

Yorum ekle