Esitati Wasmer 5.0 väljalaset, veebikogumiste moodulite käitamiseks mõeldud runtime'i, mida saab kasutada universaalsete rakenduste loomisel, mis võivad töötada erinevates operatsioonisüsteemides. Wasmerit saab samuti rakendada kahtlaste koodiblokide isoleeritud käitamiseks tavapäraste rakenduste osana. Projekti kood on kirjutatud Rusti keeles ja seda levitatakse MIT litsentsi alusel.
Ühe rakenduse käitamise võimalus erinevates platvormides on realiseeritud WebAssembly madala taseme vahekoodeksi kompileerimise kaudu, mis võib töötada igas opsüsteemis või olla integreeritud teistel programmeerimiskeeltel kirjutatud programmidesse. Programmid on kergev pesado, milles käib WebAssembly pseudokoodi täitmine. Need konteinerid ei ole seotud operatsioonisüsteemiga ja võivad sisaldada koodi, mis on algselt kirjutatud mis tahes programmeerimiskeeles.
WebAssembly vahekoodeksi täitmiseks või selle tõlkimiseks sihtplatvormi masinkoodiks pakutakse erinevaid tagapindu:
- Singlepass kompilaatoriga tagapind, optimaalselt kasutamiseks plokiahelates.
- Cranelift koodigeneraatoriga tagapind, optimaalselt kasutamiseks arendustegevuses.
- LLVM kompilaatoriga tagapind, optimaalselt kasutamiseks tööalustes rakendustes.
- Web-brauseris käitamiseks mõeldud tagapind.
- JavaScripti mootoril JavascriptCore põhinev tagapind, optimaalselt kasutamiseks macOS platvormil.
- JavaScripti mootoril V8 põhinev tagapind, optimaalselt iOS ja Android platvormide rakenduste jaoks.
- Wasmi interpreteril põhinev tagapind, optimaalselt plokiahelatele ja Rusti projektidele, mis ei kasuta standardraamatukogu (nostd).
- WAMR runtime'il põhinev tagapind, optimaalselt iOS platvormile.
Rakendused isoleeritakse peamise süsteemist sandbox-keskkonnas ja neil on juurdepääs ainult deklareeritud funktsionaalsusele. Isolatsiooniks kasutatakse õiguste haldamise mehhanismi — igasuguste ressurssidega (failid, kataloogid, soklid, süsteemikutsed jne) tegelemiseks peab rakendusel olema antud vastavad volitused. Juurdepääsu haldamine ja süsteemiga suhtlemine tagatakse WASI (WebAssembly System Interface) API kaudu, mis pakub programmeerimisliideseid failide, soklite ja muude süsteemi funktsioonide kasutamiseks.
Platvorm võimaldab saavutada rakenduste soorituse, mis on lähedane natiivsete kogumite täitmisele. Native Object Engine'i abil saab WebAssembly moodulile genereerida masinakoodi, mille käitamiseks on vajalik minimaalne runtime, kuid kõik sandbox-isolatsiooni võimalused säilivad. Saadaval on eelkompileeritud programme, kus on sisse ehitatud Wasmer. Laienduste ja täienduste loomiseks on ette nähtud Rust API ja Wasm-C-API.
WebAssembly konteineri käivitamiseks piisab, kui installida süsteemi Wasmer runtime, mis tarnitakse ilma väliste sõltuvusteta ("curl https://get.wasmer.io -sSfL | sh"), ja käivitada vajalik fail ("wasmer test.wasm"). Programmid levitatakse tavapäraste WebAssembly moodulitena, mille haldamiseks saab kasutada paketihaldurit WAPM. Wasmer on samuti saadaval teegina, mida saab kasutada WebAssembly koodi sisestamiseks programmides, mis on kirjutatud Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir ja Java keeltes.
Wasmer 5.0 peamised uuendused:
- On rakendatud WebAssembly tõlgendajate kasutamise võimalus.
- Lisatud eksperimentaalne tagaplaneering kergest Wasmi tõlkijast, mis võimaldab käitada WebAssembly vahepealset koodi piiratud ressurssidega keskkondades.
- Lisatud eksperimentaalne tagaplaneering WebAssembly runtime'ist WAMR (WebAssembly Micro Runtime), mis on optimeeritud minimaalse ressursikasutuse jaoks ja sobib kasutamiseks seadmetes, kus on vähe põhiraami.
- Lisatud eksperimentaalne tagaplaneering JavaScripti mootorist v8, mida kasutatakse Chromiumi koodibaasil brauserites. Peamiseks eeliseks V8 põhineva tagaplaneeringu kasutamisel on võimalus kasutada selle mootori sisseehitatud siluri ja web-arendajate tööriistu, samuti V8 pakkumist laiendatud funktsionaalsuste nagu veateadete töötlemine ja prügikogu.
- LLVM tagaplaneeringusse on lisatud eksperimentaalne tugi Loongarch64 arhitektuurile.
- Lisatud tugi iOS platvormile, mis on saadaval WAMR, Wasmi ja V8 tagaplaneeringute kasutamise korral.
- Emscripteni kompilaatori tugi on lõpetatud.
- Sõltuvused on ajakohastatud, sealhulgas LLVM 18, koodigeneratsiooni rajatis Cranelift 27 ja rkyv 0.8 raamistik.
- Soorituse optimeerimine on toimunud. Näiteks, moodulite deserialiseerimise operatsioonide täitmisel on täheldatud efektiivsuse suurenemist kuni 50%.







Allikas: opennet.ru







