Abstract Search

ISEF | Projects Database | Finalist Abstract

Back to Search Results | Print PDF

Engineering a WebAssembly-Based Shell

Booth Id:

Systems Software


Finalist Names:
Frias, Diego (School: Oregon Episcopal School)

This project creates a POSIX-style shell that runs WebAssembly, allowing programs to be shared between developers without safety issues, platform incompatibilities, determinism problems, or complex build processes, while also innovating a whole new way to interact with such programs. The core of the project is the virtual machine, which can execute programs compiled to WebAssembly, a binary instruction format that is targetable by all major compilers. The shell provides standard features, such as pipes, redirections, and programmability, but more importantly, acts as an environment for the virtual machine. Because the shell can configure the machine, the user of the shell can control the execution of programs on their system to a greater degree. To eliminate the risk of an unreproducible binary from destroying important data, programs are isolated from the file system by default, unless allowed by the programmer on a per-directory basis. Furthermore, specific functions can be dynamically loaded from the program into the shell environment, as regular shell commands. This allows certain functions to be tested, benchmarked, or used ad-hoc, from the command line. The shell also comes equipped with an in-memory file system, in which the side effects of an executable can be incrementally viewed and applied via a file system that does not exist on disk. In summary, this project innovates a new way for developers to run programs in deterministic, reproducible environments in which they may have full control over the side effects of a program.