[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/3037697.3037727acmconferencesArticle/Chapter ViewAbstractPublication PagesasplosConference Proceedingsconference-collections
research-article
Public Access

Browsix: Bridging the Gap Between Unix and the Browser

Published: 04 April 2017 Publication History

Abstract

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.

References

[1]
A. Baumann, P. Barham, P.-E. Dagand, T. Harris, R. Isaacs, S. Peter, T. Roscoe, A. Schüpbach, and A. Singhania. The multikernel: a new OS architecture for scalable multicore systems. In Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles, pages 29--44. ACM, 2009.
[2]
A. B. Brown and M. I. Seltzer. Operating system benchmarking in the wake of lmbench: A case study of the performance of netbsd on the intel x86 architecture. In Proceedings of the 1997 ACM SIGMETRICS International Conference on Measurement and Modeling of Computer Systems, SIGMETRICS '97, pages 214--224, New York, NY, USA, 1997. ACM.
[3]
S. Doeraene. Scala.js: Type-Directed Interoperability with Dynamically Typed Languages. Technical report, École polytechnique fédérale de Lausanne, 2013.
[4]
J. R. Douceur, J. Elson, J. Howell, and J. R. Lorch. Leveraging legacy code to deploy desktop applications on the web. In Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation, OSDI'08, pages 339--354, Berkeley, CA, USA, 2008. USENIX Association.
[5]
M. Fogleman. fogleman/gg: Go Graphics - 2D rendering in Go with a simple API, 2016. https://github.com/fogleman/gg.
[6]
L. T. Hansen and J. Fairbank. ECMAScript Shared Memory and Atomics, 2016. https://tc39.github.io/ecmascript_sharedmem/shmem.html.
[7]
H. Härtig, M. Hohmuth, J. Liedtke, J. Wolter, and S. Schönberg. The performance of μ-kernel-based systems. In Proceedings of the Sixteenth ACM Symposium on Operating Systems Principles, SOSP '97, pages 66--77, New York, NY, USA, 1997. ACM.
[8]
R. Hickey. Clojurescript. http://clojurescript.org/about/rationale, 2016.
[9]
J. Howell, B. Parno, and J. R. Douceur. Embassies: Radically refactoring the web. In Proceedings of the 10th USENIX Conference on Networked Systems Design and Implementation, nsdi'13, pages 529--546, Berkeley, CA, USA, 2013. USENIX Association.
[10]
T. Mauro. Adopting Microservices at Netflix: Lessons for Architectural Design, 2015. https://www.nginx.com/blog/microservices-at-netflix-architectural-best-practices/.
[11]
R. Musiol. gopherjs/gopherjs: A compiler from Go to JavaScript for running Go code in a browser, 2016. https://github.com/gopherjs/gopherjs.
[12]
S. Tang, H. Mai, and S. T. King. Trust and protection in the illinois browser operating system. In Proceedings of the 9th USENIX Conference on Operating Systems Design and Implementation, OSDI'10, pages 17--31, Berkeley, CA, USA, 2010. USENIX Association.
[13]
J. Vilk and E. D. Berger. Doppio: Breaking the browser language barrier. In Proceedings of the 2014 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2014), pages 508--518. ACM, 2014.
[14]
J. Vouillon and V. Balat. From bytecode to JavaScript: the Js\_of\_ocaml compiler. Software: Practice and Experience, 44(8):951--972, 2014.
[15]
D. Yoo and S. Krishnamurthi. Whalesong: running racket in the browser. In DLS'13, Proceedings of the 9th Symposium on Dynamic Languages, part of SPLASH 2013, Indianapolis, IN, USA, October 26--31, 2013, pages 97--108, 2013.
[16]
A. Zakai. Emscripten: an LLVM-to-JavaScript compiler. In OOPSLA Companion, pages 301--312, 2011.

Cited By

View all
  • (2024)Loupe: Driving the Development of OS Compatibility LayersProceedings of the 29th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 110.1145/3617232.3624861(249-267)Online publication date: 27-Apr-2024
  • (2024)Vulture: Cross-Device Web Experience with Fine-Grained Graphical User Interface DistributionIEEE INFOCOM 2024 - IEEE Conference on Computer Communications10.1109/INFOCOM52122.2024.10621433(2478-2487)Online publication date: 20-May-2024
  • (2024)A Next Generation Web Browser Execution Environment2024 IEEE International Conference on Data and Software Engineering (ICoDSE)10.1109/ICoDSE63307.2024.10829873(1-6)Online publication date: 30-Oct-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ASPLOS '17: Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems
April 2017
856 pages
ISBN:9781450344654
DOI:10.1145/3037697
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 04 April 2017

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. browser
  2. browsix
  3. javascript
  4. operating system

Qualifiers

  • Research-article

Funding Sources

Conference

ASPLOS '17

Acceptance Rates

ASPLOS '17 Paper Acceptance Rate 53 of 320 submissions, 17%;
Overall Acceptance Rate 535 of 2,713 submissions, 20%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)205
  • Downloads (Last 6 weeks)34
Reflects downloads up to 02 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Loupe: Driving the Development of OS Compatibility LayersProceedings of the 29th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 110.1145/3617232.3624861(249-267)Online publication date: 27-Apr-2024
  • (2024)Vulture: Cross-Device Web Experience with Fine-Grained Graphical User Interface DistributionIEEE INFOCOM 2024 - IEEE Conference on Computer Communications10.1109/INFOCOM52122.2024.10621433(2478-2487)Online publication date: 20-May-2024
  • (2024)A Next Generation Web Browser Execution Environment2024 IEEE International Conference on Data and Software Engineering (ICoDSE)10.1109/ICoDSE63307.2024.10829873(1-6)Online publication date: 30-Oct-2024
  • (2023)The Next Evolution of Web Browser Execution Environment Performance2023 International Conference on Artificial Intelligence, Big Data, Computing and Data Communication Systems (icABCD)10.1109/icABCD59051.2023.10220564(1-7)Online publication date: 3-Aug-2023
  • (2023)Concolic Testing of Front-end JavaScriptFundamental Approaches to Software Engineering10.1007/978-3-031-30826-0_4(67-87)Online publication date: 22-Apr-2023
  • (2019)Not so fastProceedings of the 2019 USENIX Conference on Usenix Annual Technical Conference10.5555/3358807.3358817(107-120)Online publication date: 10-Jul-2019
  • (2019)RT.js: Practical Real-Time Scheduling for Web Applications2019 IEEE Real-Time Systems Symposium (RTSS)10.1109/RTSS46320.2019.00017(69-79)Online publication date: Dec-2019
  • (2018)Putting in all the stops: execution control for JavaScriptACM SIGPLAN Notices10.1145/3296979.319237053:4(30-45)Online publication date: 11-Jun-2018
  • (2018)WebLinuxProceedings of the Fifth Annual ACM Conference on Learning at Scale10.1145/3231644.3231703(1-2)Online publication date: 26-Jun-2018
  • (2018)Putting in all the stops: execution control for JavaScriptProceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3192366.3192370(30-45)Online publication date: 11-Jun-2018
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media