Mozilla bouwt browser met multicore-engine

Browsermaker Mozilla wil een browser bouwen die meerdere processorcores gebruikt om een enkele webpagina snel te laden. Misschien wordt dit een toekomstige versie van Firefox.

Browsermaker Mozilla werkt aan een multithreaded Document Object Model (DOM) om het laden en weergeven van webpagina's te verdelen over meerdere processorcores. In het DOM is vastgesteld hoe een browser documenten als (X)HTML moeten benaderen en naar de render-engine van de browser te sturen. Door de DOM multithreaded te maken, gebruikt die de meerdere cores van moderne processors en kan een enkele website veel sneller worden weergegeven.

Nog in de beginfase
Open source-evangelist Chris Blizzard van Mozilla meent dat dit diepe multithreaden van browsers mogelijk is. Hij geeft tekst en uitleg aan de Britse techsite The Register. “We zijn op dit gebied actief bezig met onderzoek en we nodigen iedereen uit om zich bij ons te voegen”, vertelt hij. Het project is nog in de beginfase.

Blizzard vertelt dat het project gebruik maakt van een nieuwe diepliggende programmeertaal van Mozilla: Rust. Mozilla-ontwikkelaar Graydon Hoare is in 2006 aan de ontwikkeling van die taal begonnen, als een bijproject. Inmiddels werkt Hoare fulltime aan de ontwikkeling van deze programmeertaal. Rust is van de grond af opgebouwd met de nadruk op veiligheid en parallellisering. Verder lijkt de taal volgens Blizzard op C++.

Add-ons, tabbladen
Het parallel uitvoeren van verschillende stukken code gebeurt al wel in andere onderdelen van de browser. Zo draaien grafische functies via WebGL met behulp van de hardware-acceleratie die een videokaart biedt. Blizzard legt uit dat de mobiele versie van Firefox al twee losstaande processen gebruikt: één voor de browser zelf en één voor de content die het weergeeft.

Daarnaast is het al normaal dat verschillende tabbladen in de browser verschillende processen zijn. Die kunnen dus ook op verschillende processorkernen draaien. Ook add-ons in de browser zijn losstaande processen en zelfs http-transacties of het decoderen van online geluid en video zijn normaal gesproken al multithreaded.

DOM opdelen
Maar het Document Object Model zelf is nog altijd singlethreaded. Dat geldt niet alleen voor het DOM, zegt Blizzard. Ook de manier waarop de browser de layout van een webpagina verzorgt is niet multithreaded. Hetzelfde geldt voor de "verwachtingen en beloftes voor de manier waarop interne api's [van de browser - red] zich gedragen." De Mozilla-evangelist stelt dat het enorm moeilijk is om de DOM op meerdere kernen te laten draaien.

In essentie bouwt Mozilla het DOM opnieuw maar dan met behulp van Rust. “Het idee is om delen van het DOM en delen van de rendering-engine te nemen en de taken daarvan te splitsen. Zo is het mogelijk om voordeel te krijgen van computers met meerdere kernen terwijl je één webpagina laadt”, stelt Blizzard. Mozilla heeft overigens nog totaal geen code vrijgegeven van het project. Ook is er geen streefdatum voor een eerste release. Het gaat nu alleen om onderzoek.