Parallel Web Browser
The browser will be the largest and most important application on many mobile devices. Future browser compute demands will grow with increasing connection speeds, richer web pages, and better output devices. We will parallelize browser serial bottlenecks, mainly parsing, layout/rendering, and script processing. Our goal is to make every website developer a parallel programmer, by introducing an implicitly parallel web scripting language supporting parallelized plug-ins.
With 4G networks and better output devices, building a parallel browser will be the last step to desktop-quality, AJAX-full browsing on an energy-limited handheld [Bodik, Jones et al. 2007]. Only a manycore handheld will provide the cycles needed for parsing (including translation to DOM), rendering (including page layout),and scripting—the three primary browser activities. Unfortunately, all three are considered nearly inherently sequential. In this project, we will explore techniques to parallelize all three. Older discarded styles of parsers appear promising for parallelization. Although irregular dependencies make parallelization of rendering challenging (e.g., changing one letter may force re-layout of an entire page), rendering is a dynamic programming dwarf composed with a graph traversal dwarf, and is parallelizable with some software speculation. Our goal is to turn every website developer into a parallel programmer without plaguing them with threads and/or locks. A transactional DOM has been proposed by others [Eich 2007; O'Callahan 2007], but we think we can do without threads and transactions, remaining entirely implicitly parallel thanks to a streaming language, SkipJax (derived from BrownU’s FlapJax [FlapJax 2007]) that combines reactive and media programming.