- Stopify will support long-running L programs without freezing the browser tab. In particular, programs can access the DOM and are not limited to Web Workers.
- Stopify can pause or terminate an L program, even if it is an infinite loop.
- Stopify can set breakpoints or single-step through the L program, if C generates source maps.
- Stopify can simulate an arbitrarily deep stack and proper tail calls. This feature is necessary to run certain functional programs in the browser.
- Stopify can simulate blocking operations on the web.
To support these feature, Stopify has two major components:
You can run the Stopify compiler in three ways:
- Hosted on a web page: This is the easiest way to use Stopify. Moreover, when the compiler is hosted on a web page, your system will be able to compile users’ program even when they are offline.
- As a command-line tool: If your system already compiles code on a server (e.g., you run an L-to-JS compiler that does not run in the browser), then you may wish to run the compiler on the server.