Mozilla, Fastly, Intel lan Red Hat promosi WebAssembly minangka platform kanggo panggunaan universal

Mozilla, Fastly, Intel lan Red Hat manunggal upaya kanggo ngembangake teknologi sing mbantu nggawe WebAssembly minangka platform universal kanggo eksekusi kode aman ing kabeh infrastruktur, sistem operasi, utawa piranti. Komunitas wis dibentuk kanggo pangembangan bebarengan runtime lan compiler sing ngidini panggunaan WebAssembly ora mung ing browser web. Alliance Bytecode.

Kanggo nggawe program portabel sing dikirim ing format WebAssembly sing bisa dieksekusi ing njaba browser, disaranake nggunakake API WASI (WebAssembly System Interface), sing nyedhiyakake antarmuka piranti lunak kanggo interaksi langsung karo sistem operasi (POSIX API kanggo nggarap file, soket, lsp.). Fitur khas saka model eksekusi aplikasi nggunakake WASI yaiku mlaku ing lingkungan kothak wedhi kanggo ngisolasi saka sistem utama lan nggunakake mekanisme keamanan adhedhasar manajemen kemampuan kanggo tumindak kanthi saben sumber daya (file, direktori, soket, panggilan sistem. , etc.) aplikasi kasebut kudu diwenehi ijin sing cocog (mung akses menyang fungsi sing diumumake diwenehake).

Salah siji saka gol Aliansi sing digawe minangka solusi kanggo masalah distribusi aplikasi modular modern kanthi akeh dependensi. Ing aplikasi kasebut, saben ketergantungan bisa dadi sumber potensial kerentanan utawa serangan. Ngontrol dependensi ngidini sampeyan ngontrol kabeh aplikasi sing ana gandhengane. Kapercayan ing aplikasi kasebut kanthi otomatis nuduhake kapercayan ing kabeh dependensi, nanging dependensi asring dikembangake lan dikelola dening tim pihak katelu sing aktivitase ora bisa dikontrol. Anggota Bytecode Alliance arep menehi solusi sakabehe kanggo eksekusi aman saka aplikasi WebAssembly sing ora bisa dipercaya.

Kanggo pangayoman, disaranake nggunakake konsep nanoprocesses, ing ngendi saben modul dependensi dipisahake dadi modul WebAssembly sing diisolasi kanthi kapisah, kekuwatane mung ana hubungane karo modul iki (contone, perpustakaan kanggo ngolah strings ora bakal ana. bisa mbukak soket jaringan utawa file). Ora kaya pemisahan proses, pawang WebAssembly entheng lan meh ora mbutuhake sumber daya tambahan - interaksi antarane pawang ora luwih alon tinimbang nelpon fungsi biasa. Pemisahan bisa ditindakake ora mung ing tingkat modul individu, nanging uga ing tingkat klompok modul sing, umpamane, kudu nggarap area memori umum.

Kekuwatan sing dijaluk bisa ditemtokake ing tingkat dependensi dhewe, lan didelegasikan menyang dependensi ing sadawane rantai dening modul induk (sumber daya ing WASI digandhengake karo jinis deskriptor file khusus - kemampuan). Contone, modul bisa didelegasikan kemampuan kanggo ngakses direktori lan panggilan sistem tartamtu, lan yen infrastruktur pangembangan modul dikompromi utawa kerentanan diidentifikasi, sajrone serangan, akses bakal diwatesi mung kanggo sumber daya kasebut. Pranyatan sumber daya dening pangripta modul bisa dadi indikator aktivitas sing curiga, kayata nalika modul pangolahan teks njaluk ijin kanggo mbukak sambungan jaringan. Ijin sing disetel pisanan dicenthang lan yen owah-owahan, muatan dependensi ditolak nganti teken modul lokal dianyari.

Kanggo pembangunan bebarengan ing swiwi saka Bytecode Alliance dijarwakake sawetara related kanggo WebAssembly proyek, sadurunge dikembangake kanthi kapisah dening perusahaan pendiri aliansi:

  • Wayah bengi β€” Runtime kanggo mbukak aplikasi WebAssembly karo ekstensi WASI minangka aplikasi mandhiri biasa. Ndhukung loro ngluncurake WebAssembly bytecode nggunakake utilitas baris perintah khusus lan ngubungake file eksekusi sing wis siap (wasmtime dibangun ing aplikasi minangka perpustakaan). Wasmtime duwe struktur modular fleksibel sing ngijini sampeyan kanggo skala runtime kanggo macem-macem aplikasi, contone, sampeyan bisa nggawe versi diudani-mudhun kanggo piranti karo sumber daya winates;
  • Lucet - compiler lan runtime kanggo ngeksekusi program ing format WebAssembly. khas fitur Lucet nggunakake kompilasi antisipatif lengkap (AOT, ahead-of-time) tinimbang JIT dadi kode mesin sing cocog kanggo eksekusi langsung. ProyΓ¨k iki dikembangakΓ© dΓ©ning Fastly lan dioptimalake kanggo nggunakake sumber daya minimal lan miwiti kedadean anyar cepet banget (Cepet nggunakake Lucet ing mesin komputasi pinggiran maya sing nggunakake WebAssembly kanggo handler dibukak ing saben request). Minangka bagΓ©an saka proyek gabungan, kompiler Lucet direncanakake bakal diowahi kanggo nggunakake Wasmtime minangka basis;
  • WAM (WebAssembly Micro Runtime) minangka runtime liyane kanggo nglakokake WebAssembly, sing asline dikembangake dening Intel kanggo digunakake ing piranti Internet of Things. WAMR dioptimalake kanggo konsumsi sumber daya minimal lan bisa digunakake ing piranti kanthi jumlah RAM sing sithik. Proyek kasebut kalebu juru basa lan mesin virtual kanggo nglakokake bytecode WebAssembly, API (subset saka Libc) lan alat kanggo manajemen aplikasi dinamis;
  • angkat crane - generator kode sing nerjemahake perwakilan penengah independen saka arsitektur hardware menyang kode mesin eksekusi optimized kanggo platform hardware tartamtu. Cranelift ndhukung paralelisasi kompilasi fungsi kanggo ngasilake asil sing cepet banget, sing ngidini bisa digunakake kanggo nggawe kompiler JIT (JIT basis Cranelift digunakake ing mesin virtual Wasmtime);
  • WASI umum - implementasi kapisah saka WASI (WebAssembly System Interface) API kanggo ngatur interaksi karo sistem operasi;
  • kargo-wasi - modul kanggo manager paket Cargo sing nindakake printah kanggo kompilasi Rust kode menyang WebAssembly bytecode nggunakake antarmuka WASI kanggo nggunakake WebAssembly njaba browser;
  • wat ΠΈ wasmparser - parser kanggo parsing teks (WAT, WAST) lan perwakilan binar saka WebAssembly bytecode.

Kanggo rekap, WebAssembly akeh kaya Asm.js, nanging beda amarga iku format binar sing ora ana gandhengane karo JavaScript lan ngidini kode perantara tingkat rendah sing disusun saka macem-macem basa pamrograman bisa dieksekusi ing browser. WebAssembly ora mbutuhake kolektor sampah amarga nggunakake manajemen memori sing jelas. Kanthi nggunakake JIT kanggo WebAssembly, sampeyan bisa entuk tingkat kinerja sing cedhak karo kode asli. Antarane tujuan utama WebAssembly yaiku njamin portabilitas, prilaku sing bisa diprediksi lan eksekusi kode sing padha ing platform sing beda-beda.

Source: opennet.ru

Add a comment