Kernel garatzaileen posta-zerrendan Linux Wasm arkitektura nukleorako inplementatzen duten adabakiak argitaratu dira. Linux, eta horrek nukleoa WebAssembly tarteko kodean konpilatzea ahalbidetzen du, ondoren web arakatzaile batean zuzenean exekutatzeko, emuladoreak erabili gabe. Gainera, nukleoarentzat Linux проектом реализована возможность запускать исполняемые файлы в формате «.wasm» и подготовлен драйвер «web console» для симуляции работы с консолью в браузере. Также подготовлен инструментарий для упрощения сборки запускаемых в браузере системных окружений.
Adibide gisa, ingurune bat sortu zen BusyBox utilitate multzoa erabiliz eta musl sistemaren liburutegia WebAssembly-n konpilatu zen. Xterm.js erabiltzen da ingurune honekin lan egiteko terminal emuladore gisa. Demo gune bereizi bat abiarazi zen, erabiltzaileei portua ebaluatzeko aukera emanez, beraiek konpilatu gabe. Chromium-en oinarritutako arakatzaileentzako laguntza osoa eta Firefox-erako laguntza partziala deklaratzen dira, arazketa gaitasun mugatuak dituena. Ordenagailu modernoetan, Wasm kernelaren build-a arakatzaile batean kargatzeak segundo bat baino gutxiago behar du.
Proiektua bi urte inguru daramatza garatzen eta gaur egun kernela arakatzaileetan kargatzea eta programa estandarrak exekutatzea ahalbidetzen du. Lana oraindik ez da amaitu, eta portuan arazo eta muga batzuk daude. Adibidez, vfork eta longjmp deien euskarria ez da oraindik inplementatu (BusyBox horiek gabe funtzionatzeko adabaki bat jaso da), ez dago zereginak eteteko gaitasunik, MMU ez dago erabilgarri (kernela eta prozesuak helbide-espazio berean exekutatzen dira), ezinezkoa da dagoeneko kargatutako kodea aldatzea, eta kontsola 5 minutu inguru igaro ondoren blokeatzen da tenporizadore arazoengatik. Adierazi behar da dauden mugak gaindi daitezkeela, baina horietako batzuek WebAssembly-ren luzapen gehigarriak arakatzaileetan ezartzea eskatzen dutela. Antzeko luzapenak proposatu dira MMUrako eta hari-etetearentzat.
WebAssembly-n harien exekuzioa pausatzeko ezintasunak kernelaren ataza-antolatzailearekin gatazkan jartzen du, baina multiataza konponbide baten bidez gauzatu zen, hari/ataza bakoitza bere CPU birtual bati esleituz, Web Worker bereizi batean exekutatua. Ikuspegi honek prozesuak paraleloan exekutatzea ahalbidetu zuen arakatzailearen motorra eta ostalariaren sistema eragilearen kernela erabiliz, arakatzailearen kernelean multiataza preemptiborik edo ataza-aldaketarik egin gabe. Etenaldiak eta seinaleak ez dira guztiz funtzionalak konfigurazio honetan, eta CPU birtual bereizi bat erabiltzen da tenporizadoreak eta IPI (Prozesadore arteko etenaldiak) etenaldiak emateko.
Область применения проекта выходит за рамки простого запуска Linux-окружений в браузерах. Например, порт может применяться для создания многоплатформенных WebAssembly программ, использующих специфичные для Linux системные вызовы. Реализация подобных системных вызовов может быть отдельно преобразована в WebAssembly и прикреплена к приложению, что позволит использовать его без привязки к системному ядру. Порт также будет полезен для организации изолированного выполнения приложений при помощи WASI (WebAssembly System Interface).
Planen artean, WebAssembly-n eraikitako nukleoa duten inguruneetan grafikoen euskarria ezartzeko esperimentuak daude. EGL inplementatzeko eta OpenGL ES onartzeko asmoa dute arakatzailearen WebGL APIa erabiliz. Gainera, Dwarf arazketa formatuaren euskarria ezartzeko asmoa dute lerroz lerroko kodea arazteko.
Iturria: opennet.ru
