Strange Loop

Next: September 12-14 2019

/

Stifel Theatre

/

St. Louis, MO

Thinking DSLs for Massive Visualization

From MapReduce to Scipy, domain specific languages are democratizing parallel computing. Their success stems from high-level abstractions that empower developers and guide optimizing compilers. Meanwhile, another revolution in language is gaining steam: program synthesis. Essentially, hardware speed is improving at such a fast rate that we can design smart language features powered by search (e.g., SAT solving) that, on older hardware, would have been unacceptably slow to compile. These two ideas, tiny parallel DSLs and program synthesis, enabled us to build several new kinds of languages. We will describe using them for our most recent one, Superconductor.

Superconductor is a browser-based language for massive interactive visualizations. Initially, Superconductor programs look like the normal HTML5 stack: JSON, CSS, JavaScript, etc. Its power comes from the two above ideas:

  1. End-to-end Parallel DSLs. For performance, Superconductor compiles different types of high-level yet structured code into new parallel JavaScript extensions. It targets web workers, WebCL, and WebGL to utilize the multicore and GPU hardware in most laptops and now even in phones.

  2. A Synthesis DSL for Parallel Layout. Today, custom visual layouts such as treemaps are written in JavaScript, which hides parallelism from the compiler. We designed a tractable layout DSL that uses constraints (“attribute grammars”). We’ll show how synthesis powers a new form of parallel programming where programmers can mix explicit and automatic parallelization by invoking our new “schedule sketching” construct.

By combining these ideas into Superconductor, we can now script real-time interactive visualizations of hundreds of thousands of data points and control parallelization at a wonderfully high level. For a sneak peek, check out https://www.youtube.com/watch?v=AoOaGQLjcgc and http://www.sc-lang.com .

Leo Meyerovich

UC Berkeley

Leo Meyerovich researches system and language design at UC Berkeley and is the lead for the Superconductor big data visualization language. He specializes in parallel browsers, JavaScript security, and the social foundations of programming languages. Earlier, he was the head developer of the Flapjax language for functional reactive web programming, which led to various commercial and open source projects.