Wasmer 3.0, sebuah toolkit untuk membangun aplikasi berbasis WebAssembly, telah tersedia

Rilis besar ketiga dari proyek Wasmer diperkenalkan, yang mengembangkan runtime untuk mengeksekusi modul WebAssembly yang dapat digunakan untuk membuat aplikasi universal yang dapat berjalan pada sistem operasi yang berbeda, serta untuk mengeksekusi kode yang tidak tepercaya secara terpisah. Kode proyek ditulis dalam Rust dan didistribusikan di bawah lisensi MIT.

Kemampuan untuk menjalankan satu aplikasi pada berbagai platform dicapai dengan mengkompilasi kode menjadi kode perantara WebAssembly tingkat rendah, yang dapat dijalankan pada OS apa pun atau tertanam dalam program dalam bahasa pemrograman lain. Programnya adalah wadah ringan yang menjalankan kodesemu WebAssembly. Kontainer ini tidak terikat dengan sistem operasi dan dapat berisi kode aslinya yang ditulis dalam bahasa pemrograman apa pun. Toolkit Emscripten dapat digunakan untuk mengkompilasi ke WebAssembly. Untuk menerjemahkan WebAssembly ke dalam kode mesin pada platform saat ini, ia mendukung koneksi berbagai backend kompilasi (Singlepass, Cranelift, LLVM) dan mesin (menggunakan JIT atau pembuatan kode mesin).

Aplikasi diisolasi dari sistem utama di lingkungan sandbox dan hanya memiliki akses ke fungsionalitas yang dinyatakan (mekanisme keamanan berdasarkan manajemen kemampuan - untuk tindakan dengan masing-masing sumber daya (file, direktori, soket, panggilan sistem, dll.), aplikasi permohonan harus diberikan kewenangan yang sesuai). Kontrol akses dan interaksi dengan sistem disediakan menggunakan API WASI (WebAssembly System Interface), yang menyediakan antarmuka pemrograman untuk bekerja dengan file, soket, dan fungsi lain yang disediakan oleh sistem operasi.

Platform ini memungkinkan Anda mencapai kinerja eksekusi aplikasi yang mendekati rakitan asli. Dengan menggunakan Mesin Objek Asli untuk modul WebAssembly, Anda dapat membuat kode mesin (“kompilasi wasmer -native” untuk menghasilkan file objek .so, .dylib, dan .dll yang telah dikompilasi sebelumnya), yang memerlukan runtime minimal untuk dijalankan, namun tetap mempertahankan semua isolasi kotak pasir fitur. Dimungkinkan untuk menyediakan program yang telah dikompilasi dengan Wasmer bawaan. Rust API dan Wasm-C-API ditawarkan untuk membuat add-on dan ekstensi.

Untuk meluncurkan wadah WebAssembly, cukup instal Wasmer di sistem runtime, yang hadir tanpa ketergantungan eksternal (“curl https://get.wasmer.io -sSfL | sh”), dan jalankan file yang diperlukan (“wasmer test.wasm” ). Program didistribusikan dalam bentuk modul WebAssembly biasa, yang dapat dikelola menggunakan manajer paket WAPM. Wasmer juga tersedia sebagai perpustakaan yang dapat digunakan untuk menyematkan kode WebAssembly ke dalam program Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, dan Java.

Perubahan besar di Wasmer 3.0:

  • Добавлена возможность создания родных исполняемых файлов для любых платформ. Полностью переработана команда «wasmer create-exe», которая позволяет преобразовать файл с промежуточным кодом WebAssembly в самодостаточные исполняемые файлы для платформ Linux, Windows и macOS, которые могут работать без установки самого Wasmer.
  • Dimungkinkan untuk meluncurkan paket WAPM yang terletak di direktori wapm.io menggunakan perintah “wasmer run”. Misalnya, menjalankan "wasmer run python/python" akan mengunduh paket python dari repositori wapm.io dan menjalankannya.
  • Wasmer Rust API telah didesain ulang sepenuhnya, mengubah gaya bekerja dengan memori dan memberikan kemampuan untuk menyimpan objek Wasm dengan aman di struktur Store. Struktur MemoryView baru telah diusulkan yang memungkinkan membaca dan menulis data ke area memori linier.
  • Seperangkat komponen wasmer-js telah diimplementasikan untuk menjalankan Wasmer di browser web dan berinteraksi dengannya dari JavaScript menggunakan perpustakaan wasm-bindgen. Dalam kemampuannya, wasmer-js sesuai dengan komponen wasmer-sys yang dirancang untuk menjalankan Wasmer pada sistem operasi biasa.
  • Mesin telah disederhanakan. Alih-alih mesin terpisah untuk JIT, tautan dinamis dan statis (Universal, Dylib, StaticLib), satu mesin umum kini ditawarkan, dan memuat serta menyimpan kode dikontrol pada tingkat parameter pengaturan.
  • Untuk melakukan deserialisasi artefak, kerangka kerja rkyv digunakan, yang memastikan operasi dalam mode penyalinan nol, mis. yang tidak memerlukan alokasi memori tambahan dan melakukan deserialisasi hanya menggunakan buffer yang disediakan sebelumnya. Penggunaan rkyv telah meningkatkan kecepatan startup secara signifikan.
  • Kompiler single-pass Singlepass telah ditingkatkan untuk menyertakan dukungan untuk fungsi multi-nilai, peningkatan keandalan, dan dukungan tambahan untuk frame penanganan pengecualian.
  • Peningkatan implementasi API WASI (WebAssembly System Interface). Masalah pada antarmuka perangkat lunak WASI untuk bekerja dengan sistem file telah teratasi. Tipe internal telah didesain ulang menggunakan WAI (WebAssembly Interfaces), yang akan mengaktifkan serangkaian fitur baru di masa depan.

Sumber: opennet.ru

Beli hosting yang andal untuk situs dengan perlindungan DDoS, server VPS VDS 🔥 Beli hosting website andal dengan perlindungan DDoS, server VPS VDS | ProHoster