Linuxi tuuma arendajate postiloendis on avaldatud plaastrid, mis implementeerivad «Wasm» arhitektuuri Linuxi tuumale, võimaldades kompileerida tuuma WebAssembly vahekoodeksiks, et see saaks brauseris otse käivituda ilma emulaatorite kaasamiseta. Lisaks on Linuxi tuuma projektis realiseeritud võimalus käivitada «.wasm» formaadis täidetavaid faile ja ette valmistatud «web console» draiver, et simuleerida brauseris konsooliga töötamist. Samuti on loodud tööriistakomplekt brauseris töötavate süsteemsete keskkondade lihtsustatud koostamiseks.
Näiteks on loodud keskkond koos WebAssembly-sse kompileeritud BusyBoxi utiliitide komplekti ja süsteemi teegi musl põhjal. Sellise keskkonnaga tööks on kasutusel terminali emulaator Xterm.js. Eraldi on käivitatud demonstreeriv veebileht, mis võimaldab hinnata porta tööd ilma iseseisva kompileerimise vajaduseta. Täielik tugi on saadaval Chromiumi mootoriga brauserites ja osaline tugi Firefoxis, kus silumise võimalused on piiratud. Kaasaegsetel arvutitel laadib tuuma Wasm-kogumik brauserisse vähem kui sekundi.
Projekt on arenenud juba umbes kaks aastat ja praegu võimaldab see laadida tuuma brauseritesse ja käivitada tavalisi programme. Töö pole veel lõpetatud ning portl on mitmed probleemid ja piirangud. Näiteks ei ole veel realiseeritud vfork ja longjmp kõnede tugi (BusyBoxile on rakendatud plaastrid nende kasutamiseta töötamiseks), ülesannete katkemise võimalust ei ole, MMU pole saadaval (tuum ja protsessid töötavad samas aadressiruumis), juba laaditud koodi muuta ei saa, konsool hangub ligikaudu 5 minuti pärast ajastusega seotud probleemide tõttu. Toodud piirangud on ületatavad, kuid mõned neist nõuavad brauserites täiendavate WebAssembly laienduste realiseerimist. Selliseid laiendusi on soovitatud rakendada MMU ja threadide peatamiseks.
WebAssembly'i voogude peatamise võimetus ei sobi kokku tuumplaanijaga, kuid paljuülesanne on saavutatud mööda minnes, sidudes iga voo/ülesande oma virtuaalse CPU-ga, mida töödeldakse eraldi Web Worker'is. Nii on õnnestunud saavutada protsesside paralleelne töötlemine brauserimootori ja host-OS-i tuuma kaudu, ilma et kasutataks eelnevat ülesannete vahetust ja ülesannete vahetamist brauseri tuumas. Selles skeemis katkestused ja signaalid ei tööta korralikult ning katkestuste edastamiseks, nagu ajastu katkestusi ja IPI (Inter-Processor Interrupt), kasutatakse eraldi virtuaalset CPU-d.
Projekti rakendusvaldkond ületab lihtsalt Linuxi keskkondade käivitamise brauserites. Näiteks võib porti kasutada mitme platvormi WebAssembly programmide loomisel, mis kasutavad Linuxile spetsiifilisi süsteemikõnesid. Selliste süsteemikõnede rakendamine võib eraldi tõlkida WebAssembly'ks ja rakendusele külge kinnitada, võimaldades selle kasutamist ilma süsteemitootega sidumata. Porti on samuti kasulik rakenduste isoleeritud käitamise korraldamiseks WASI (WebAssembly System Interface) abil.
Plaani alla kuuluvad katsetused graafika toe rakendamisega keskkondades, mille tuum on kokku pandud WebAssembly's, tuginedes brauseri API-le WebGL, plaanivad nad rakendada EGL ja tagada OpenGL ES töö. Samuti on kavas rakendada Dwarf'i silumise formaadi toetus lähtekoodi samm-sammulisele silumisele.
Allikas: opennet.ru
