Browsix brings Unix to the browser. Run C, C++, Go and Node.js programs as processes in browsers, including LaTeX, GNU Make, Go HTTP servers, and POSIX shell scripts.
While standard operating systems like Unix make it relatively simple to build complex applications, web browsers lack the features that make this possible. This project is Browsix, a JavaScript-only framework that brings the essence of Unix to the browser. Browsix makes core Unix features available to web applications (including pipes, processes, signals, sockets, and a shared file system) and extends JavaScript runtimes for C, C++, Go, and Node.js programs so they can run in a Unix-like environment within the browser. Browsix also provides a POSIX-like shell that makes it easy to compose applications together for parallel data processing via pipes.
Another way to think about this is that modern web applications are multi-process by nature – the client and some of the application logic lives in the browser, and some of it lives in the cloud, often implemented as microservices.
Browsix lets you rethink the boundary between code executing in the browser vs. server-side, while taking advantage of the multi-core nature of modern computing devices.
As a proof of concept, they’ve implemented a POSIX-like shell on top of Browsix, along with an implementation of a number of standard Unix utilities (cat
, tee
, echo
, sha1sum
, and friends). The utilities are all standard node programs that will run directly under node, or in the browser under Browsix. Individual commands are executed in their own workers, and piping works as expected (see above).
This project is licensed under the MIT license, but also incorporates code from other sources.
See the project website and the GitHub repo. For more details, check out the tech report (PDF).