/linux

Linux kernel for WebAssembly

Primary LanguageCOtherNOASSERTION

Linux WebAssembly port

Try it in your browser.

  • All the build infrastructure
  • Reimplementation of the ELF/linker features the kernel relies on
  • Kernel threads
    • Mapped to JavaScript workers
    • Complete multicore support
  • Implement virtio in the host library
    • Implement a block device
  • binfmt_wasm
  • Jumping into userspace
  • Expose syscall dispatch
  • Port musl
  • Port busybox

Eventually:

  • signals
  • virtio-net to connect multiple machines
    • and service worker loopback
  • enhanced virtio-console to support terminal resizing and multiple terminals
  • virtio-fs backed by the File System API
  • vsock to implement custom javascript integrations
    • unrestricted vscode in the browser?
  • port lots of software
    • wrap/patch compilers to support wasm32-linux
      • both for cross-compilation and self-hosting
    • tailscale for full networking?
    • an x86_64 emulator like qemu/blink/box64?
  • /dev/fetch as a character device exposing a HTTP proxy interface
    • parses requests and invokes fetch()
  • canvas2d framebuffer driver?
  • virtio-gl backed by WebGL?
  • wayland?
  • MMU support?
  • support dynamic linking
    • might need to wait for the ABI to stabilize

If we add another architecture in the future, it may instead be something like the LLVM bitcode or WebAssembly, who knows?