0.4.0 - This version is safe to use because it has no known security vulnerabilities at this time. Find out if your coding project uses this component and get notified of any reported security vulnerabilities with Meterian-X Open Source Security Platform
Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.
Apache-2.0 - Apache License 2.0High-Performance CSS Style Engine
Stylo is a high-performance, browser-grade CSS style engine written in Rust that powers Servo and Firefox. This repo contains Servo’s downstream version of Stylo. The upstream version lives in mozilla-central with the rest of the Gecko/Firefox codebase.
Coordination of Stylo development happens:
The branches are as follows:
[!WARNING] This repo syncs from upstream by creating a new branch and then rebasing our changes on top of it. This means that
git pull
will not work across syncs (you will need to usegit fetch
,git reset
andgit rebase
).
More information on the syncing process is available in SYNCING.md
A guide to the crates contained within this repo
These crates are largely implementation details of Stylo, although you may need to use some of them directly if you use Stylo.
Directory | Crate | Notes |
---|---|---|
style | The main Stylo crate containing the entire CSS engine | |
style_traits | Types and traits which allow other code to interoperate with Stylo without depending on the main crate directly. | |
stylo_dom | Similar to stylo_traits (but much smaller) | |
stylo_atoms | Atoms for CSS and HTML event related strings | |
stylo_config | Configuration for Stylo. Can be used to set runtime preferences (enabling/disabling properties, etc) | |
stylo_static_prefs | Static configuration for Stylo. Config be overridden by patching in a replacement crate. | |
style_derive | Internal derive macro for stylo crate |
These crates form part of Stylo but are also be useful standalone.
Directory | Crate | Notes |
---|---|---|
selectors | CSS Selector matching | |
servo_arc | A variant on std::Arc
|
You may also be interested in the cssparser
crate which lives in the servo/rust-cssparser repo.
Low-level crates which could technically be used standalone but are unlikely to be generally useful in practice.
Assuming your local servo
and stylo
directories are siblings, you can build servo
against stylo
by adding the following to servo/Cargo.toml
:
[patch."https://github.com/servo/stylo"]
selectors = { path = "../stylo/selectors" }
servo_arc = { path = "../stylo/servo_arc" }
stylo_atoms = { path = "../stylo/stylo_atoms" }
stylo = { path = "../stylo/style" }
stylo_config = { path = "../stylo/stylo_config" }
stylo_dom = { path = "../stylo/stylo_dom" }
stylo_malloc_size_of = { path = "../stylo/malloc_size_of" }
stylo_traits = { path = "../stylo/style_traits" }
Stylo is licensed under MPL 2.0