En la dissendolisto de kernaj programistoj Linux Pecetoj efektivigantaj la Wasm-arkitekturon por la kerno estis publikigitaj. Linux, kiu permesas kompili la kernon en WebAssembly-interan kodon por posta rekta ekzekuto en retumilo sen la uzo de emuliloj. Krome, por la kerno Linux проектом реализована возможность запускать исполняемые файлы в формате «.wasm» и подготовлен драйвер «web console» для симуляции работы с консолью в браузере. Также подготовлен инструментарий для упрощения сборки запускаемых в браузере системных окружений.
Ekzemple, medio estis kreita uzante la ilaron BusyBox kaj la sisteman bibliotekon musl kompilitan en WebAssembly. Xterm.js estas uzata kiel terminala emulilo por labori kun ĉi tiu medio. Aparta demonstra retejo estis lanĉita, permesante al uzantoj taksi la porton sen mem kompili ĝin. Plena subteno por Chromium-bazitaj retumiloj kaj parta subteno por Firefox, kiu havas limigitajn sencimigajn kapablojn, estas deklaritaj. Sur modernaj komputiloj, ŝargi la kernan konstruon de Wasm en retumilo daŭras malpli ol sekundon.
La projekto estas en disvolviĝo jam ĉirkaŭ du jarojn kaj nuntempe permesas ŝargi la kernon en retumiloj kaj efektivigi normajn programojn. La laboro ankoraŭ ne estas kompleta, kaj la adapto havas kelkajn problemojn kaj limigojn. Ekzemple, subteno por vfork kaj longjmp-vokoj ankoraŭ ne estas efektivigita (BusyBox estis flikita por funkcii sen ili), ne eblas interrompi taskojn, la MMU ne estas disponebla (la kerno kaj procezoj funkcias en la sama adresspaco), ne eblas modifi jam ŝargitan kodon, kaj la konzolo frostiĝas post ĉirkaŭ 5 minutoj pro tempmezuraj problemoj. Notinde estas, ke la ekzistantaj limigoj estas supereblaj, sed kelkaj el ili postulas la efektivigon de pliaj etendaĵoj al WebAssembly en retumiloj. Similaj etendaĵoj estis proponitaj por la MMU kaj fadenĉesigo.
La nekapablo paŭzi fadenan plenumon en WebAssembly konfliktas kun la taskoplanilo de la kerno, sed plurtaskado estis efektivigita per solvo asignante ĉiun fadenon/taskon al ĝia propra virtuala CPU, plenumata en aparta Web Worker. Ĉi tiu aliro ebligis paralelan plenumon de procezoj uzante la retumilan motoron kaj la gastigantan operaciumkernon, sen recurrir al antaŭprena plurtaskado aŭ taskoŝaltado en la kerno de la retumilo. Interrompoj kaj signaloj ne estas plene funkciaj en ĉi tiu aranĝo, kaj aparta virtuala CPU estas uzata por liveri tempigilajn kaj IPI (Inter-Procesoraj Interrompoj) interrompojn.
Область применения проекта выходит за рамки простого запуска Linux-окружений в браузерах. Например, порт может применяться для создания многоплатформенных WebAssembly программ, использующих специфичные для Linux системные вызовы. Реализация подобных системных вызовов может быть отдельно преобразована в WebAssembly и прикреплена к приложению, что позволит использовать его без привязки к системному ядру. Порт также будет полезен для организации изолированного выполнения приложений при помощи WASI (WebAssembly System Interface).
La planoj inkluzivas eksperimentojn pri efektivigo de grafiksubteno en medioj kun kerno enkonstruita en WebAssembly. Ili planas efektivigi EGL kaj subteni OpenGL ES uzante la WebGL API de la retumilo. Ili ankaŭ planas efektivigi subtenon por la sencimigado-formato Dwarf por sencimigado de kodo laŭlinie.
fonto: opennet.ru
