De Linux-kernelport voor WebAssembly is gepresenteerd, die in de browser kan worden uitgevoerd.

In de mailinglijst van de ontwikkelaars van de Linux-kernel zijn patches gepubliceerd met de implementatie van de 'Wasm'-architectuur voor de Linux-kernel, waarmee de kernel kan worden gecompileerd naar WebAssembly-intermediair code voor directe uitvoering in een webbrowser zonder emulatoren. Bovendien is er voor de Linux-kernel de mogelijkheid geĆÆmplementeerd om uitvoerbare bestanden in '.wasm'-formaat uit te voeren, en is er een 'web console'-driver voorbereid om de interactie met de console in de browser te simuleren. Daarnaast is er een toolkit ontwikkeld om de bouw van systeemomgevingen die in de browser worden uitgevoerd te vereenvoudigen.

Als voorbeeld is er een omgeving gecreƫerd op basis van de in WebAssembly gecompileerde set van BusyBox-tools en de musl-systeembibliotheek. Voor de terminalemulator in een dergelijke omgeving wordt Xterm.js gebruikt. Daarnaast is er een demonstratiesite gestart waarmee de werking van de poort kan worden beoordeeld zonder dat men zelf hoeft te compileren. Er wordt volledige ondersteuning voor browsers op basis van Chromium en beperkte ondersteuning voor Firefox genoemd, waarbij de mogelijkheden voor debugging zijn beperkt. Op moderne computers duurt het laden van de Wasm-build van de kernel in de browser minder dan een seconde.

Het project is al bijna twee jaar in ontwikkeling en staat momenteel toe om de kernel in browsers te laden en typische programma's uit te voeren. Het werk is nog niet voltooid en de poort heeft verschillende problemen en beperkingen. Zo is er nog geen ondersteuning voor vfork- en longjmp-aanroepen gerealiseerd (aan BusyBox zijn patches toegepast om zonder deze functies te kunnen werken), er is geen mogelijkheid om taken te onderbreken, de MMU is niet beschikbaar (de kernel en processen werken in dezelfde adresruimten), het is niet mogelijk om reeds geladen code te wijzigen en de console hangt ongeveer na vijf minuten vanwege timerproblemen. Er wordt opgemerkt dat de bestaande beperkingen overwinbaar zijn, maar voor sommige daarvan zijn extra extensies voor WebAssembly in browsers nodig. Dergelijke extensies zijn voorgesteld voor de MMU en voor het pauzeren van threads.

De onmogelijkheid om de uitvoering van threads in WebAssembly te pauzeren, is niet compatibel met de werking van de taakplanner in de kernel, maar multitasking is op een alternatieve manier gerealiseerd door elke thread/taken aan een eigen virtuele CPU te koppelen, die wordt verwerkt in een afzonderlijke Web Worker. Op deze manier is het gelukt parallelle uitvoering van processen te bereiken door het browsersysteem en de kernel van het hostbesturingssysteem zonder gebruik te maken van pre-emtieve multitasking en taakwisseling in de kernel die in de browser draait. Interrupties en signalen functioneren in dit schema niet volledig, en voor het afleveren van interrupts van de timer en IPI (Inter-Processor Interrupt) is een aparte virtuele CPU in gebruik.

De toepassingsgebied van het project gaat verder dan alleen het opstarten van Linux-omgevingen in browsers. Bijvoorbeeld, de port kan gebruikt worden voor het creëren van cross-platform WebAssembly-toepassingen die gebruik maken van Linux-specifieke systeemaanroepen. De implementatie van dergelijke systeemaanroepen kan afzonderlijk worden omgezet naar WebAssembly en aan de applicatie worden gekoppeld, waardoor deze kan worden gebruikt zonder binding aan de systeemkernel. De port zal ook nuttig zijn voor het organiseren van geïsoleerde uitvoering van applicaties met behulp van WASI (WebAssembly System Interface).

Van de plannen wordt melding gemaakt van experimenten met de implementatie van grafische ondersteuning in omgevingen met een kernel die is opgebouwd in WebAssembly - op basis van de browser-API WebGL is het plan om EGL te implementeren en de werking van OpenGL ES te waarborgen. Ook is het de bedoeling om ondersteuning voor het debugformaat Dwarf te implementeren voor regel-voor-regel debugging van code.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster