Wasmer 3.0, yon bwat zouti pou bati aplikasyon ki baze sou WebAssembly, disponib

Twazyèm pi gwo lage pwojè Wasmer la prezante, ki devlope yon tan pou egzekite modil WebAssembly ki ka itilize pou kreye aplikasyon inivèsèl ki ka kouri sou diferan sistèm opere, epitou pou egzekite kòd ki pa fè konfyans nan izolasyon. Kòd pwojè a ekri nan Rust epi li distribye anba lisans MIT.

Kapasite pou kouri yon aplikasyon sou platfòm diferan yo bay nan konpile kòd nan kòd entèmedyè WebAssembly ki ba nivo, ki ka kouri sou nenpòt OS oswa entegre nan pwogram nan lòt lang pwogramasyon. Pwogram yo se resipyan ki lejè ki kouri pseudocode WebAssembly. Kontenè sa yo pa mare nan sistèm operasyon an epi yo ka gen ladan kòd orijinal ekri nan nenpòt lang pwogramasyon. Yo ka itilize bwat zouti Emscripten pou konpile nan WebAssembly. Pou tradwi WebAssembly nan kòd machin nan platfòm aktyèl la, li sipòte koneksyon an nan divès kalite backend konpilasyon (Singlepass, Cranelift, LLVM) ak motè (itilize JIT oswa jenerasyon kòd machin).

Aplikasyon yo izole nan sistèm prensipal la nan yon anviwònman sandbox epi yo gen aksè sèlman nan fonksyonalite yo deklare (yon mekanis sekirite ki baze sou jesyon kapasite - pou aksyon ak chak nan resous yo (fichye, anyè, sipò, apèl sistèm, elatriye), la. aplikasyon an dwe bay pouvwa apwopriye yo). Yo bay kontwòl aksè ak entèraksyon ak sistèm nan lè l sèvi avèk WASI (WebAssembly System Interface) API, ki bay koòdone pwogramasyon pou travay ak dosye, sipò ak lòt fonksyon sistèm opere a bay.

Platfòm nan pèmèt ou reyalize pèfòmans egzekisyon aplikasyon tou pre asanble natif natal yo. Sèvi ak Native Object Engine pou modil WebAssembly la, ou ka jenere kòd machin ("wasmer compile -native" pou jenere fichye objè .so, .dylib ak .dll prekonpile), ki mande pou yon tan minimòm pou kouri, men kenbe tout izolasyon sandbox la. karakteristik. Li posib pou bay pwogram prekonpile ak Wasmer entegre. Yo ofri Rust API ak Wasm-C-API pou kreye adisyon ak ekstansyon.

Pou lanse yon veso WebAssembly, jis enstale Wasmer nan sistèm nan kouri, ki vini san depandans ekstèn ("curl https://get.wasmer.io -sSfL | sh"), epi kouri dosye ki nesesè ("wasmer test.wasm" ). Pwogram yo distribye nan fòm modil WebAssembly regilye, ki ka jere lè l sèvi avèk manadjè pake WAPM la. Wasmer disponib tou kòm yon bibliyotèk ki ka itilize pou entegre kòd WebAssembly nan pwogram Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, ak Java.

Gwo chanjman nan Wasmer 3.0:

  • Te ajoute kapasite pou kreye dosye natif natal pou nenpòt platfòm. Kòmand "wasmer create-exe" te konplètman reamenaje pou konvèti yon dosye kòd entèmedyè WebAssembly nan ègzèkutabl endepandan pou platfòm Linux, Windows, ak macOS ki ka kouri san yo pa enstale Wasmer tèt li.
  • Li posib pou lanse pakè WAPM ki sitiye nan anyè wapm.io lè l sèvi avèk kòmandman "wasmer run". Pou egzanp, kouri "wasmer run python/python" pral telechaje pake a python nan repozitwa wapm.io epi kouri li.
  • Wasmer Rust API a te konplètman reamenaje, chanje style nan travay ak memwa epi bay kapasite nan san danje sove objè Wasm nan estrikti magazen an. Yo te pwopoze yon nouvo estrikti MemoryView ki pèmèt li ak ekri done nan yon zòn memwa lineyè.
  • Yo te aplike yon seri konpozan wasmer-js pou kouri Wasmer nan yon navigatè entènèt epi kominike avèk li nan JavaScript lè l sèvi avèk bibliyotèk wasm-bingen. Nan kapasite li yo, wasmer-js koresponn ak konpozan wasmer-sys ki fèt pou kouri Wasmer sou sistèm operasyon regilye yo.
  • Motè yo te senplifye. Olye de motè separe pou JIT, lyezon dinamik ak estatik (Universal, Dylib, StaticLib), kounye a yo ofri yon sèl motè komen, epi chaje ak ekonomize kòd kontwole nan nivo paramèt paramèt yo.
  • Pou deserialize zafè, yo itilize fondasyon an rkyv, ki asire operasyon nan mòd zewo-kopi, i.e. ki pa egzije alokasyon memwa adisyonèl epi li fè deserializasyon sèlman lè l sèvi avèk tanpon ki te bay okòmansman an. Itilizasyon rkyv te ogmante siyifikativman vitès demaraj.
  • Singlepass single-pass compilateur yo te amelyore, ajoute sipò pou fonksyon milti-valè, amelyore fyab, ak sipò ajoute pou ankadreman manyen eksepsyon.
  • Amelyore aplikasyon WASI (WebAssembly System Interface) API. Pwoblèm nan koòdone lojisyèl WASI pou travay ak sistèm dosye yo te rezoud. Kalite entèn yo te reamenaje lè l sèvi avèk WAI (WebAssembly Interfaces), ki pral pèmèt yon seri de nouvo karakteristik nan lavni.

Sous: opennet.ru

Add nouvo kòmantè