SMLtoJs: hosting a standard ML compiler in a web browser

  • Authors:
  • Martin Elsman

  • Affiliations:
  • SimCorp, Copenhagen, Denmark

  • Venue:
  • Proceedings of the 1st ACM SIGPLAN international workshop on Programming language and systems technologies for internet clients
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

Standard ML is a strictly typed functional programming language that provides programmers with many powerful features, including parametric polymorphism, pattern matching, and a rich module system. In this paper, we present SMLtoJs, an optimizing compiler that compiles Standard ML programs into JavaScript to be executed in any JavaScript-supported Web browser. SMLtoJs supports all of Standard ML and most of the Standard ML Basis Library, which allows for the SMLtoJs compiler itself to be compiled and executed in a browser. We present the overall structure of SMLtoJs, including the non-JavaScript aware front-end and the JavaScript-specific backend. We also present SMLtoJs's type safe interface for interacting with native JavaScript, such as the DOM api. Finally, we present the details of the JavaScript-specific optimizations, including how SMLtoJs deals with tail recursion, which enable complex Standard ML programs to be compiled into efficient JavaScript.