Parallel Web Browser

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. 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, 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.