The Servo Browser Engine
Find a file
Patrick Walton 4f3ca373d4 Introduce a phantom type to prevent script from accessing the layout data directly.
Nodes are now parameterized over a "View" type. The particular View type
determines which methods can be called. Layout data accessors and mutators are
only accessible to nodes with a LayoutView. The only way to convert a
`Node<ScriptView>` to a `Node<LayoutView>` is through a transmutation, which is
done at the moment the layout task receives nodes. (This should be factored
better to contain the unsafety.)

We should also lock down DOM node mutation to the ScriptView to forbid data
races, but this patch doesn't do that.

This also reduces coupling between DOM and layout. Soon I would like to move
the DOM into its own crate, and this is a step on the way of doing that.
2013-05-28 15:40:47 -07:00
mk Remove the servo- prefix from core components. 2013-05-28 15:40:47 -07:00
src Introduce a phantom type to prevent script from accessing the layout data directly. 2013-05-28 15:40:47 -07:00
.gitignore Ignore objdir directory. 2013-05-22 12:24:00 -06:00
.gitmodules Add rust-alert to the tree and use it to allow a new URL to be navigated to 2013-05-21 14:10:49 -07:00
configure Remove the servo- prefix from core components. 2013-05-28 15:40:47 -07:00
Info.plist Build an app bundle on OS X 2012-04-23 17:43:45 -07:00
LICENSE Add license 2013-04-03 18:37:29 -07:00
Makefile.in Remove the servo- prefix from core components. 2013-05-28 15:40:47 -07:00
README.md Remove the servo- prefix from core components. 2013-05-28 15:40:47 -07:00

zRThe Servo Parallel Browser Project

Servo is a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux.

Prerequisites

On OS X (homebrew):

brew install https://raw.github.com/Homebrew/homebrew-versions/master/autoconf213.rb
brew install automake libtool
brew install pkg-config

On OS X (MacPorts):

sudo port install autoconf213

On Debian-based Linuxes:

sudo apt-get install autoconf2.13 curl freeglut3-dev libtool libfreetype6-dev libfontconfig1-dev libgl1-mesa-dri libglib2.0-dev

Servo builds its own copy of Rust, so there is no need to provide a Rust compiler.

Building

git clone git://github.com/mozilla/servo.git
cd servo
mkdir -p build && cd build
../configure
make && make check
./servo ../src/test/html/about-mozilla.html