[workspace]
resolver = "2"
members = ["htmlshell"]
# Copied from the main Cargo.toml to allow
# workspace inheritance from component/ crates.
[workspace.package]
version = "0.1.0"
edition = "2024"
authors = ["The Servo Project Developers"]
license = "MPL-2.0"
publish = false
rust-version = "1.86.0"
[workspace.dependencies]
accesskit = { version = "0.21.1", features = ["serde"] }
accountable-refcell = "0.2.2"
aes = "0.8.4"
aes-gcm = "0.10.3"
aes-kw = { version = "0.2.1", features = ["alloc"] }
app_units = "0.7"
arboard = "3"
argon2 = { version = "0.5", features = ["alloc"] }
arrayvec = "0.7"
async-tungstenite = { version = "0.32", features = ["tokio-rustls-webpki-roots"] }
atomic_refcell = "0.1.13"
aws-lc-rs = { version = "1.15", default-features = false, features = ["aws-lc-sys"] }
background_hang_monitor_api = { path = "source/components/shared/background_hang_monitor" }
backtrace = "0.3"
base = { path = "source/components/shared/base" }
base64 = "0.22.1"
base64ct = { version = "1.8", features = ["alloc"] }
# bincode 1.3.3 is the last known good version of bincode 1.
# The crate was declared finished and won't receive further updates by the author.
# Since the git history was rewritten by the author, any bump of this crate should
# be reviewed carefully by doing a manual diff based on the crates.io version,
# before doing **any** bump to this dependency to rule out a supply chain attack.
bincode = "=1.3.3"
bitflags = "2.10"
bluetooth_traits = { path = "source/components/shared/bluetooth" }
brotli = "8.0.2"
bytemuck = "1"
byteorder = "1.5"
canvas_traits = { path = "source/components/shared/canvas" }
cbc = "0.1.2"
cfg-if = "1.0.4"
chacha20poly1305 = "0.10"
chardetng = "0.1"
chrono = { version = "0.4", features = ["serde"] }
cipher = { version = "0.4.4", features = ["alloc"] }
constellation_traits = { path = "source/components/shared/constellation" }
content-security-policy = { version = "0.6.0", features = ["serde"] }
cookie = { package = "cookie", version = "0.18" }
crossbeam-channel = "0.5"
cssparser = { version = "0.36", features = ["serde"] }
ctr = "0.9.2"
data-url = "0.3"
der = { version = "0.7", features = ["alloc", "derive"] }
devtools_traits = { path = "source/components/shared/devtools" }
digest = "0.10"
dpi = "0.1"
dwrote = "0.11.5"
ecdsa = "0.16"
elliptic-curve = "0.13"
embedder_traits = { path = "source/components/shared/embedder" }
encoding_rs = { version = "0.8", features = ["serde"] }
env_logger = "0.11"
euclid = "0.22"
flate2 = "1.1"
fonts_traits = { path = "source/components/shared/fonts" }
freetype-sys = "0.20"
gleam = "0.15"
glib = "0.21"
glib-sys = "0.21"
glow = "0.16.0"
gstreamer = { version = "0.24", features = ["v1_18"] }
gstreamer-app = "0.24"
gstreamer-audio = "0.24"
gstreamer-base = "0.24"
gstreamer-gl = "0.24"
gstreamer-gl-egl = "0.24"
gstreamer-gl-sys = "0.24"
gstreamer-gl-wayland = "0.24"
gstreamer-gl-x11 = "0.24"
gstreamer-play = "0.24"
gstreamer-sdp = "0.24"
gstreamer-sys = "0.24"
gstreamer-video = "0.24"
gstreamer-webrtc = { version = "0.24", features = ["v1_18"] }
harfbuzz-sys = "0.6.1"
headers = "0.4"
hitrace = "0.1.6"
hkdf = "0.12"
html5ever = "0.38"
http = "1.4"
http-body-util = "0.1"
hyper = "1.8"
hyper-rustls = { version = "0.27", default-features = false, features = ["http1", "http2", "logging", "tls12", "webpki-tokio"] }
hyper-util = { version = "0.1", features = ["client-legacy", "http2", "tokio", "client-proxy"] }
hyper_serde = { path = "source/components/hyper_serde" }
icu_locid = "1.5.0"
icu_segmenter = "1.5.0"
image = { version = "0.25", default-features = false, features = ["avif", "rayon", "bmp", "gif", "ico", "jpeg", "png", "webp"] }
imsz = "0.4"
indexmap = { version = "2.11.4", features = ["std"] }
ipc-channel = "0.20.2"
itertools = "0.14"
js = { package = "mozjs", version = "=0.14.8", default-features = false, features = ["libz-sys", "intl"] }
keyboard-types = { version = "0.8.3", features = ["serde", "webdriver"] }
kurbo = { version = "0.12", features = ["euclid"] }
layout_api = { path = "source/components/shared/layout" }
libc = "0.2"
log = "0.4.29"
mach2 = "0.6"
malloc_size_of = { package = "servo_malloc_size_of", path = "source/components/malloc_size_of" }
malloc_size_of_derive = "0.1"
markup5ever = "0.38"
memmap2 = "0.9.9"
mime = "0.3.13"
mime-multipart-hyper1 = "0.10.0"
mime_guess = "2.0.5"
ml-dsa = "0.0.4"
ml-kem = { version = "0.2", features = ["deterministic"] }
mozangle = "0.5.3"
net_traits = { path = "source/components/shared/net" }
nix = "0.30"
nom = "8.0.0"
nom-rfc8288 = "0.4.0"
num-bigint-dig = "0.8"
num-derive = "0.4.2"
num-traits = "0.2"
num_cpus = "1.17.0"
ocb3 = "0.1.0"
objc2 = "0.6.3"
objc2-core-foundation = "0.3.2"
objc2-core-graphics = "0.3.2"
objc2-core-text = "0.3.2"
openxr = "0.20"
paint_api = { path = "source/components/shared/paint" }
p256 = { version = "0.13", features = ["ecdh"] }
p384 = { version = "0.13", features = ["ecdh"] }
p521 = { version = "0.13", features = ["ecdh"] }
parking_lot = { version = "0.12", features = ["serde"] }
peniko = "0.5"
percent-encoding = "2.3"
pkcs8 = { version = "0.10", features = ["rand_core"] }
postcard = { version = "1.1.3", default-features = false, features = ["use-std"] }
proc-macro2 = "1"
profile_traits = { path = "source/components/shared/profile" }
quote = "1"
rand = "0.9"
raw-window-handle = "0.6"
rayon = "1"
read-fonts = "0.35.0"
regex = "1.12"
resvg = "0.45.0"
rsa = { version = "0.9.10", features = ["sha1", "sha2"] }
rustc-hash = "2.1.1"
rustls = { version = "0.23", default-features = false, features = ["logging", "std", "tls12"] }
rustls-pki-types = "1.14"
rustls-platform-verifier = "0.6.2"
script_traits = { path = "source/components/shared/script" }
sea-query = { version = "1.0.0-rc.30", default-features = false, features = ["backend-sqlite", "derive"] }
sea-query-rusqlite = { version = "0.8.0-rc.15" }
sec1 = "0.7"
selectors = { git = "https://github.com/servo/stylo", rev = "3b46f3ef27eb14ca276b4bf3ff041a6c43d93827" }
serde = "1.0.228"
serde_bytes = "0.11"
serde_core = "1.0.226"
serde_json = "1.0"
servo-media = { path = "source/components/media/servo-media" }
servo-media-dummy = { path = "source/components/media/backends/dummy" }
servo-media-gstreamer = { path = "source/components/media/backends/gstreamer" }
servo-tracing = { path = "source/components/servo_tracing" }
servo_arc = { git = "https://github.com/servo/stylo", rev = "3b46f3ef27eb14ca276b4bf3ff041a6c43d93827" }
sha1 = "0.10"
sha2 = "0.10"
sha3 = "0.10"
skrifa = "0.37.0"
smallvec = { version = "1.15", features = ["serde", "union"] }
storage_traits = { path = "source/components/shared/storage" }
string_cache = "0.9"
strum = { version = "0.27", features = ["derive"] }
stylo = { git = "https://github.com/servo/stylo", rev = "3b46f3ef27eb14ca276b4bf3ff041a6c43d93827" }
stylo_atoms = { git = "https://github.com/servo/stylo", rev = "3b46f3ef27eb14ca276b4bf3ff041a6c43d93827" }
stylo_config = { git = "https://github.com/servo/stylo", rev = "3b46f3ef27eb14ca276b4bf3ff041a6c43d93827" }
stylo_dom = { git = "https://github.com/servo/stylo", rev = "3b46f3ef27eb14ca276b4bf3ff041a6c43d93827" }
stylo_malloc_size_of = { git = "https://github.com/servo/stylo", rev = "3b46f3ef27eb14ca276b4bf3ff041a6c43d93827" }
stylo_traits = { git = "https://github.com/servo/stylo", rev = "3b46f3ef27eb14ca276b4bf3ff041a6c43d93827" }
surfman = { version = "0.11.0", features = ["chains"] }
syn = { version = "2", default-features = false, features = ["clone-impls", "derive", "parsing"] }
synstructure = "0.13"
taffy = { version = "0.9.2", default-features = false, features = ["calc", "detailed_layout_info", "grid", "std"] }
tendril = { version = "0.5", features = ["encoding_rs"] }
tikv-jemalloc-sys = "0.6.1"
tikv-jemallocator = "0.6.1"
time = { package = "time", version = "0.3", features = ["large-dates", "local-offset", "serde"] }
tokio = "1"
tokio-rustls = { version = "0.26", default-features = false, features = ["logging"] }
tokio-stream = "0.1"
tokio-util = { version = "0.7.18", default-features = false }
tower = { version = "0.5", default-features = false, features = ["util"] }
tracing = "0.1.44"
tracing-perfetto = "0.1.5"
tracing-subscriber = "0.3.22"
tungstenite = "0.28"
unicode-bidi = "0.3.18"
unicode-properties = { version = "0.1.4", features = ["emoji"] }
unicode-script = "0.5"
unicode-segmentation = "1.12.0"
url = "2.5"
urlpattern = "0.3"
utf-8 = "0.7"
uuid = { version = "1.20.0", features = ["v4", "v5"] }
vello = "0.6"
vello_cpu = "0.0.4"
webdriver = "0.53.0"
webgpu_traits = { path = "source/components/shared/webgpu" }
webpki-roots = "1.0"
webrender = { version = "0.68", features = ["capture"] }
webrender_api = "0.68"
webxr-api = { path = "source/components/shared/webxr" }
wgpu-core = "26"
wgpu-types = "26"
winapi = "0.3"
windows-sys = "0.61"
winit = "0.30.12"
wio = "0.2"
wr_malloc_size_of = "0.2.2"
x25519-dalek = { version = "2.0.1", features = ["static_secrets"] }
xi-unicode = "0.3.0"
xml5ever = "0.38"
xpath = { path = "source/components/xpath" }
# RSA key generation could be very slow without compilation
# optimizations, in development mode. Without optimizations, WPT might
# consider RSA key generation tests fail due to timeout.
# Building with higher optimization levels can speed up the key
# generation process to avoid false negative result in those tests.
# More details:
[profile.dev.package.num-bigint-dig]
opt-level = 3
# Force tikv-jemalloc-sys to build with at least -O1.
# This can help with build environments that force _FORTIFY_SOURCE, such as Nix.
# More details:
[profile.dev.package.tikv-jemalloc-sys]
opt-level = 1
[profile.release]
opt-level = 3
debug-assertions = true
[profile.production]
inherits = "release"
debug-assertions = false
lto = true
codegen-units = 1
opt-level = "s"
[profile.production-stripped]
inherits = "production"
strip = true
[profile.profiling]
inherits = "release"
debug-assertions = false
debug = true
lto = "thin"
codegen-units = 1