Wasmer 3.0, toolkit pikeun ngawangun aplikasi basis WebAssembly, sayogi

Pelepasan utama katilu tina proyék Wasmer diwanohkeun, anu ngembangkeun runtime pikeun ngalaksanakeun modul WebAssembly anu tiasa dianggo pikeun nyiptakeun aplikasi universal anu tiasa dijalankeun dina sistem operasi anu béda, ogé pikeun ngaéksekusi kode anu henteu dipercaya dina isolasi. Kodeu proyék ditulis dina Rust sareng disebarkeun dina lisénsi MIT.

Kamampuhan pikeun ngajalankeun hiji aplikasi dina platform anu béda-béda disayogikeun ku cara nyusun kode kana kode perantara WebAssembly tingkat rendah, anu tiasa dijalankeun dina OS naon waé atanapi dipasang dina program dina basa pamrograman anu sanés. Programna mangrupikeun wadah anu hampang anu ngajalankeun pseudocode WebAssembly. Wadah ieu teu dihijikeun ka sistem operasi sarta bisa ngawengku kode asalna ditulis dina sagala basa program. The Emscripten toolkit bisa dipaké pikeun compile ka WebAssembly. Pikeun narjamahkeun WebAssembly kana kode mesin tina platform ayeuna, éta ngarojong sambungan rupa backends kompilasi (Singlepass, Cranelift, LLVM) jeung mesin (ngagunakeun JIT atawa mesin kode generasi).

Aplikasi diisolasi tina sistem utama dina lingkungan sandbox sareng ngan ukur gaduh aksés kana fungsionalitas anu dinyatakeun (mékanisme kaamanan dumasar kana manajemén kamampuan - pikeun tindakan sareng masing-masing sumber daya (file, diréktori, soket, telepon sistem, jsb.), aplikasi kudu dibéré kakuatan luyu). Kontrol aksés sareng interaksi sareng sistem disayogikeun nganggo API WASI (WebAssembly System Interface), anu nyayogikeun antarmuka pemrograman pikeun damel sareng file, sockets sareng fungsi sanésna anu disayogikeun ku sistem operasi.

Platformna ngamungkinkeun anjeun pikeun ngahontal kinerja palaksanaan aplikasi anu caket sareng rakitan asli. Ngagunakeun Objék Engine Asalna pikeun modul WebAssembly, Anjeun bisa ngahasilkeun kode mesin ("wasmer compile -native" pikeun ngahasilkeun precompiled .jadi, .dylib na .dll file obyék), nu merlukeun runtime minimal keur ngajalankeun, tapi nahan sagala isolasi sandbox. Fitur. Kasebut nyaéta dimungkinkeun pikeun nyadiakeun program precompiled kalawan diwangun-di Wasmer. API Rust sareng Wasm-C-API ditawarkeun pikeun nyiptakeun tambihan sareng ekstensi.

Pikeun ngaluncurkeun wadah WebAssembly, pasang Wasmer dina sistem runtime, anu asalna tanpa katergantungan éksternal ("curl https://get.wasmer.io -sSfL | sh"), sareng jalankeun file anu diperyogikeun ("wasmer test.wasm" ). Program disebarkeun dina bentuk modul WebAssembly biasa, anu tiasa diurus nganggo manajer pakét WAPM. Wasmer ogé sayogi salaku perpustakaan anu tiasa dianggo pikeun nyelapkeun kode WebAssembly kana Rust, C/C ++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, sareng program Java.

Parobihan utama dina Wasmer 3.0:

  • Ditambahkeun kamampuan pikeun nyiptakeun file laksana asli pikeun platform naon waé. Paréntah "wasmer create-exe" parantos dirarancang deui pikeun ngarobih file kode perantara WebAssembly janten executable mandiri pikeun platform Linux, Windows, sareng macOS anu tiasa dijalankeun tanpa masang Wasmer sorangan.
  • Kasebut nyaéta dimungkinkeun pikeun ngaluncurkeun bungkusan WAPM anu aya dina diréktori wapm.io nganggo paréntah "wasmer run". Salaku conto, ngajalankeun "wasmer run python/python" bakal ngaunduh paket python tina gudang wapm.io sareng ngajalankeunana.
  • API Wasmer Rust parantos dirarancang deui, ngarobih gaya damel sareng mémori sareng nyayogikeun kamampuan pikeun ngahemat objék Wasm dina struktur Toko. Struktur MemoryView anyar parantos diajukeun anu ngamungkinkeun maca sareng nyerat data ka daérah mémori linier.
  • Sakumpulan komponén wasmer-js parantos dilaksanakeun pikeun ngajalankeun Wasmer dina browser wéb sareng berinteraksi sareng éta tina JavaScript nganggo perpustakaan wasm-bindgen. Dina kamampuanna, wasmer-js pakait sareng komponén wasmer-sys anu dirancang pikeun ngajalankeun Wasmer dina sistem operasi biasa.
  • Mesin geus disederhanakeun. Gantina mesin misah pikeun JIT, linking dinamis sarta statik (Universal, Dylib, StaticLib), hiji mesin umum ayeuna ditawarkeun, sarta loading tur nyimpen kode dikawasa dina tingkat parameter setelan.
  • Pikeun deserialize artefak dipaké kerangka rkyv, nu ensures operasi dina mode enol-salinan, i.e. nu teu merlukeun alokasi memori tambahan sarta ngalakukeun deserialization ngan ngagunakeun panyangga mimitina disadiakeun. Pamakéan rkyv geus nyata ngaronjat speed ngamimitian.
  • The Singlepass single-pass compiler geus ningkat, nambahkeun rojongan pikeun fungsi multi-nilai, ningkat reliabiliti, sarta rojongan ditambahkeun pikeun pigura penanganan iwal.
  • Ningkatkeun palaksanaan WASI (WebAssembly System Interface) API. Masalah dina antarmuka parangkat lunak WASI pikeun damel sareng sistem file parantos direngsekeun. Jinis internal parantos didesain deui nganggo WAI (WebAssembly Interfaces), anu bakal ngaktifkeun sababaraha fitur anyar di hareup.

sumber: opennet.ru

Tambahkeun komentar