Browsix: Bridging the Gap Between Unix and the Browser

11/23/2016
by   Bobby Powers, et al.
0

Applications written to run on conventional operating systems typically depend on OS abstractions like processes, pipes, signals, sockets, and a shared file system. Porting these applications to the web currently requires extensive rewriting or hosting significant portions of code server-side because browsers present a nontraditional runtime environment that lacks OS functionality. This paper presents Browsix, a framework that bridges the considerable gap between conventional operating systems and the browser, enabling unmodified programs expecting a Unix-like environment to run directly in the browser. Browsix comprises two core parts: (1) a JavaScript-only system that makes core Unix features (including pipes, concurrent processes, signals, sockets, and a shared file system) available to web applications; and (2) extended JavaScript runtimes for C, C++, Go, and Node.js that support running programs written in these languages as processes in the browser. Browsix supports running a POSIX shell, making it straightforward to connect applications together via pipes. We illustrate Browsix's capabilities via case studies that demonstrate how it eases porting legacy applications to the browser and enables new functionality. We demonstrate a Browsix-enabled LaTeX editor that operates by executing unmodified versions of pdfLaTeX and BibTeX. This browser-only LaTeX editor can render documents in seconds, making it fast enough to be practical. We further demonstrate how Browsix lets us port a client-server application to run entirely in the browser for disconnected operation. Creating these applications required less than 50 lines of glue code and no code modifications, demonstrating how easily Browsix can be used to build sophisticated web applications from existing parts without modification.

READ FULL TEXT
research
01/25/2019

Not So Fast: Analyzing the Performance of WebAssembly vs. Native Code

All major web browsers now support WebAssembly, a low-level bytecode int...
research
01/25/2019

Mind the Gap: Analyzing the Performance of WebAssembly vs. Native Code

All major web browsers now support WebAssembly, a low-level bytecode int...
research
05/27/2010

File Managing and Program Execution in Web Operating Systems

Web Operating Systems can be seen as an extension of traditional Operati...
research
08/24/2018

Using SWISH to realise interactive web based tutorials for logic based languages

Programming environments have evolved from purely text based to using gr...
research
03/28/2017

RootJS: Node.js Bindings for ROOT 6

We present rootJS, an interface making it possible to seamlessly integra...
research
02/08/2018

Putting in All the Stops: Execution Control for JavaScript

Scores of compilers produce JavaScript, enabling programmers to use many...
research
11/27/2020

ROS Based Visual Programming Tool for Mobile Robot Education and Applications

Visual programming languages (VPLs) provide coding without typing texts....

Please sign up or login with your details

Forgot password? Click here to reset