Servo is a prototype web browser engine written in the Rust language. It is currently developed on 64-bit macOS, 64-bit Linux, 64-bit Windows, and Android.
Servo welcomes contribution from everyone. See
CONTRIBUTING.md and HACKING_QUICKSTART.md
for help getting started.
Visit the Servo Project page for news and guides.
If these instructions fail or you would like to install dependencies manually, try the manual build setup.
- Install Xcode
- Install Homebrew
- Run
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - Run
pip install virtualenv - Run
./mach bootstrap
Note: This will install the recommended version of GStreamer globally on your system.
- Run
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - Install Python and virtualenv
- Debian-like: Run
sudo apt install python3-virtualenv python3-pip - Fedora: Run
sudo dnf install python3 python3-virtualenv python3-pip python3-devel - Arch: Run
sudo pacman -S --needed python python-virtualenv python-pip - Gentoo: Run
sudo emerge dev-python/virtualenv dev-python/pip
- Debian-like: Run
- Run
./mach bootstrap
- Download and run
rustup-init.exethen follow the onscreen instructions. - Install chocolatey
- Run
choco install support\windows\chocolatey.configThis will install CMake, Git, LLVM, Ninja, NuGet, Python and the Visual Studio 2019 Build Tools. - Run
mach bootstrap-gstreamer
See also Windows Troubleshooting Tips.
Your CARGO_HOME needs to point to (or be in) the same drive as your Servo repository (See #28530).
git clone https://github.com/servo/servo
cd servoServo is built with Cargo, the Rust package manager. We also use Mozilla's Mach tools to orchestrate the build and other tasks. You can call Mach like this:
On Unix systems:
./mach [command] [arguments]
On Windows Commandline:
mach.bat [command] [arguments]
The examples below will use Unix, but the same applies to Windows.
Servo's build system uses rustup.rs to automatically download a Rust compiler.
This is a specific version of Rust Nightly determined by the
rust-toolchain file.
To build Servo in development mode. This is useful for development, but the resulting binary is very slow:
./mach build --dev
./mach run tests/html/about-mozilla.htmlFor benchmarking, performance testing, or real-world use.
Add the --release flag to create an optimized build:
./mach build --release
./mach run --release tests/html/about-mozilla.htmlIf you’re making changes to one crate that cause build errors in another crate, consider this instead of a full build:
./mach checkIt will run cargo check, which runs the analysis phase of the compiler
(and so shows build errors if any) but skips the code generation phase.
This can be a lot faster than a full build,
though of course it doesn’t produce a binary you can run.
For ARM (armv7-linux-androideabi, most phones):
./mach build --release --android
./mach package --release --androidFor x86 (typically for the emulator):
./mach build --release --target i686-linux-android
./mach package --release --target i686-linux-androidRun Servo with the command:
./servo [url] [arguments] # if you run with nightly build
./mach run [url] [arguments] # if you run with mach
# For example
./mach run https://www.google.com-p INTERVALturns on the profiler and dumps info to the console everyINTERVALseconds-s SIZEsets the tile size for painting; defaults to 512-zdisables all graphical output; useful for running JS / layout tests-Z helpdisplays useful output to debug servo
Ctrl+Lopens URL prompt (Cmd+Lon Mac)Ctrl+Rreloads current page (Cmd+Ron Mac)Ctrl+-zooms out (Cmd+-on Mac)Ctrl+=zooms in (Cmd+=on Mac)Alt+left arrowgoes backwards in the history (Cmd+left arrowon Mac)Alt+right arrowgoes forwards in the history (Cmd+right arrowon Mac)EscorCtrl+Qexits Servo (Cmd+Qon Mac)
GStreamer>=1.16gst-plugins-bad>=1.16
There are lots of mach commands you can use. You can list them with ./mach --help.
The generated documentation can be found on https://doc.servo.org/servo/index.html