Bemutatásra került a Linux kernel WebAssembly portja, amely a böngészőben futtatható

A Linux kernel developers mailing list has published patches implementing the "Wasm" architecture for the Linux kernel, allowing the kernel to be compiled into WebAssembly intermediate code for direct execution in a web browser without using emulators. In addition, the Linux kernel project has implemented the capability to run executable files in the ".wasm" format and has prepared a "web console" driver to simulate console operations in the browser. A toolkit has also been prepared to simplify the building of system environments that can be run in the browser.

As an example, an environment has been created based on the BusyBox utilities and the musl standard library, both compiled into WebAssembly. Xterm.js has been used as the terminal emulator to work with this environment. A demonstration site has been separately launched, allowing users to evaluate the port’s functionality without the need for self-compilation. Full support for Chromium-based browsers is claimed, and partial support for Firefox is noted, with some debugging capabilities being limited. On modern computers, loading the Wasm kernel build in the browser takes less than a second.

The project has been in development for about two years and currently allows loading the kernel in browsers and running typical programs. Work is not yet complete, and the port has some individual problems and limitations. For example, support for vfork and longjmp calls has not yet been implemented (patches have been applied to BusyBox to work without them), there is no capability for task interruption, the MMU is unavailable (the kernel and processes operate in the same address space), it is impossible to change already loaded code, and the console hangs after about five minutes due to timer issues. It is noted that the existing limitations are surmountable, but for some of them, additional WebAssembly extensions will need to be implemented in browsers. Such extensions are proposed for MMU and thread suspension.

A szálak WebAssembly-ben történő végrehajtásának felfüggesztésének lehetősége nem összeegyeztethető a kernel feladatütemezőjének működésével, de a párhuzamos feldolgozást módosított úton sikerült megvalósítani, minden szálat/feladatot kötve a saját virtuális CPU-jához, amelyet külön Web Worker kezel. Ezzel a módszerrel a párhuzamos folyamatvégrehajtást a böngészőmotor és a hoszt OS kernelének felhasználásával sikerült elérni, anélkül, hogy preemptív multitaskingot vagy feladatváltást kellett volna alkalmazni a böngészőben futó kernelben. Ilyen séma mellett a megszakítások és jelek nem működnek teljes mértékben, és a megszakítások, például az időzítő és az IPI (Inter-Processor Interrupt) átadásához egy külön virtuális CPU-t használnak.

A projekt alkalmazási köre túlmutat a Linux-környezetek egyszerű böngészőbeli indításán. Például a port használható többplatformos WebAssembly programok létrehozására, amelyek Linux-specifikus rendszerhívásokat használnak. Az ilyen rendszerhívások WebAssembly-be történő külön akadályozása lehetséges, és az alkalmazáshoz csatolható, lehetővé téve annak a rendszerkernelhez való kötődés nélküli használatát. A port szintén hasznos lesz az alkalmazások elszigetelt végrehajtásának szervezéséhez a WASI (WebAssembly System Interface) segítségével.

A tervek között szerepel a grafikus támogatás megvalósításának kísérlete a WebAssembly-ben összegyűjtött kernellel rendelkező környezetekben — a böngészői API, a WebGL alapjain az EGL megvalósítása és az OpenGL ES működésének biztosítása van napirenden. Ezen kívül tervezik a Dwarf hibakeresési formátum támogatásának megvalósítását a kód soronkénti hibakereséséhez.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster