The Servo Browser Engine
Find a file
2014-09-08 20:21:42 -06:00
.cargo Cargoify servo 2014-09-08 20:21:42 -06:00
components Cargoify servo 2014-09-08 20:21:42 -06:00
etc Cargoify servo 2014-09-08 20:21:42 -06:00
ports Cargoify servo 2014-09-08 20:21:42 -06:00
python Cargoify servo 2014-09-08 20:21:42 -06:00
src Cargoify servo 2014-09-08 20:21:42 -06:00
support Cargoify servo 2014-09-08 20:21:42 -06:00
tests Cargoify servo 2014-09-08 20:21:42 -06:00
.gitignore Cargoify servo 2014-09-08 20:21:42 -06:00
.gitmodules Cargoify servo 2014-09-08 20:21:42 -06:00
.travis.yml Cargoify servo 2014-09-08 20:21:42 -06:00
Cargo.lock Cargoify servo 2014-09-08 20:21:42 -06:00
Cargo.toml Cargoify servo 2014-09-08 20:21:42 -06:00
CONTRIBUTING.md Add a link to easy bugs 2014-05-14 17:36:38 +05:30
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
mach Cargoify servo 2014-09-08 20:21:42 -06:00
ORGANIZATION.md Cargoify servo 2014-09-08 20:21:42 -06:00
README.md Cargoify servo 2014-09-08 20:21:42 -06:00
rust-snapshot-hash Move rust-snapshot-hash to the root. 2014-08-22 09:49:45 +01:00
servobuild.example Cargoify servo 2014-09-08 20:21:42 -06:00

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

Servo welcomes contribution from everyone. See CONTRIBUTING.md for help getting started.

Prerequisites

On OS X (homebrew):

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

On OS X (MacPorts):

sudo port install autoconf213 python27 py27-virtualenv

On Debian-based Linuxes:

sudo apt-get install autoconf2.13 curl freeglut3-dev libtool \
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \
    msttcorefonts gperf g++ automake cmake python-virtualenv \
    libssl-dev

On Fedora:

sudo yum install autoconf213 curl freeglut-devel libtool gcc-c++ libXi-devel \
    freetype-devel mesa-libGL-devel glib2-devel libX11-devel libXrandr-devel gperf \
    fontconfig-devel cabextract ttmkfdir python python-virtualenv expat-devel \
    rpm-build openssl-devel
pushd .
cd /tmp
wget http://corefonts.sourceforge.net/msttcorefonts-2.5-1.spec
rpmbuild -bb msttcorefonts-2.5-1.spec
sudo yum install $HOME/rpmbuild/RPMS/noarch/msttcorefonts-2.5-1.noarch.rpm
popd

On Arch Linux:

sudo pacman -S base-devel autoconf2.13 git gperf python2 \
    python2-virtualenv mesa libxrandr libxi libgl glu ttf-font

Note: autoconf 2.13 is required for SpiderMonkey; the autoconf project did not preserve backwards compatibility after version 2.13, and changing the Firefox build to work with a newer version is not considered a good use of developers' time.

Cross-compilation for Android:

Basically, pre-installed Android tools are needed. See wiki for details

The Rust compiler

Servo builds its own copy of Rust, so there is no need to provide a Rust compiler. If you'd like to know the snapshot revision of Rust which we use, see ./rust-snapshot-hash.

Building

Servo cannot be built in-tree; you must create a directory in which to run configure and make and place the build artifacts.

git clone https://github.com/servo/servo.git
cd servo
./mach build
./mach run tests/html/about-mozilla.html

Building for Android target

git clone https://github.com/servo/servo.git
cd servo
ANDROID_TOOLCHAIN=/path/to/toolchain ANDROID_NDK=/path/to/ndk PATH=$PATH:/path/to/toolchain/bin ./mach build --target arm-linux-androideabi
cd ports/android
ANDROID_NDK=/path/to/ndk ANDROID_SDK=/path/to/sdk make
ANDROID_SDK=/path/to/sdk make install

Running

Commandline Arguments

  • -p INTERVAL turns on the profiler and dumps info to the console every INTERVAL seconds
  • -s SIZE sets the tile size for rendering; defaults to 512
  • -z disables all graphical output; useful for running JS / layout tests

Keyboard Shortcuts

  • Ctrl-L opens a dialog to browse to a new URL (Mac only currently)
  • Ctrl-- zooms out
  • Ctrl-= zooms in
  • Backspace goes backwards in the history
  • Shift-Backspace goes forwards in the history
  • Esc exits servo

Developing

There are lots of mach commands you can use. You can list them with ./mach --help.