← Back to Explore

Engineering a WebAssembly-Based Shell

ISEF · 2024 Systems Software

Overview

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.

Awards (1)

  • National Security Agency Research Directorate : Second Place Award “Cybersecurity”

Competition history

  • ISEF 2024 Systems Software · Entry SOFT024 · Los Angeles, California, United States

Resources

Related projects

Closest projects by meaning, across every fair and year in the corpus.

Source: Regeneron International Science and Engineering Fair

Save projects to your library

Sign in with Google to keep track of projects you find interesting, organized into folders. Browsing stays public.

Continue with Google