gecko-dev/servo
Patrick Walton cf773ab0f2 servo: Merge #1424 - Harden layout (from pcwalton:harden-layout); r=pcwalton
This changeset gets rid of the `FooView` phantom type in favor of a more brute force approach that just whitelists methods that layout is allowed to call. The set is surprisingly small now that layout isn't going to the DOM for much.

If this approach turns out not to scale, we can do something fancier, but I'd rather just have it be safe and secure first and then refactor later for programmer happiness.

r? @kmcallister

Source-Repo: https://github.com/servo/servo
Source-Revision: 824c7ac613ebb80bb432ff6425c5e25c642b6afb
2013-12-17 18:16:05 -08:00
..
bld servo: Merge #594 - Added mozharness config files (from jsyeo:add-MH-configs); r=metajack 2013-07-18 07:22:20 -07:00
mk servo: Merge #1377 - Add support for non-UTF8 CSS stylesheets, with rust-encoding (from SimonSapin:encoding); r=kmcallister 2013-12-17 09:04:28 -08:00
src servo: Merge #1424 - Harden layout (from pcwalton:harden-layout); r=pcwalton 2013-12-17 18:16:05 -08:00
.gitignore servo: Merge #1070 - Replace test_bindings.html with various content tests (from kmcallister:test-bindings); r=jdm 2013-10-16 03:01:11 -07:00
configure servo: Merge #1377 - Add support for non-UTF8 CSS stylesheets, with rust-encoding (from SimonSapin:encoding); r=kmcallister 2013-12-17 09:04:28 -08:00
CONTRIBUTING.md servo: Merge #1043 - Misc small bug fixes (from kmcallister:misc); r=larsbergstrom 2013-10-14 08:28:11 -07:00
Info.plist servo: Build an app bundle on OS X 2012-04-23 17:43:45 -07:00
LICENSE servo: Add license 2013-04-03 18:37:29 -07:00
Makefile.backup servo: Merge #1294 - Move backup related stuff to its own Makefile (from metajack:isolate-backup); r=larsbergstrom 2013-11-20 11:28:16 -08:00
Makefile.in servo: Merge #1294 - Move backup related stuff to its own Makefile (from metajack:isolate-backup); r=larsbergstrom 2013-11-20 11:28:16 -08:00
README.md servo: Merge #1092 - Add a headless mode for tests (from kmcallister:headless); r=metajack 2013-10-22 13:52:14 -07: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

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 \
    xorg-dev msttcorefonts

On Debian-based Linuxes (cross-compilation for Android):

sudo apt-get install autoconf2.13 curl libtool ia32-libs

And it needs pre-installed Android tools. See wiki for details

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

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/mozilla/servo.git
cd servo
mkdir -p build && cd build
../configure
make && make check
./servo ../src/test/html/about-mozilla.html

###Building for Android target

git clone https://github.com/mozilla/servo.git
cd servo
mkdir -p build && cd build
../configure --target-triples=arm-linux-androideabi --android-cross-path=<Android toolchain path> --android-ndk-path=<Android NDK path> --android-sdk-path=<Android SDK path>
make

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 make targets you can use:

  • make clean - cleans Servo and its dependencies, but not Rust
  • make clean-rust - cleans Rust
  • make clean-servo - only cleans Servo itself (code in src/components
  • make clean-DEP - cleans the dependency DEP. e.g. make clean-rust-opengles
  • make bindings - generate the Rust WebIDL bindings
  • make DEP - builds only the specified dependency. e.g. make rust-opengles
  • make check-DEP - build and run tests for specified dependency