Files
servo/Cargo.toml
Gae24 e0d7542d37 script: Extract ErrorInfo from pending exception stack (#43632)
When reporting an exception attempt to extract `ErrorInfo` from the
stack of the exception.

Testing: Covered by existing tests, expectations updated.

Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
2026-04-25 09:06:46 +00:00

405 lines
18 KiB
TOML

[workspace]
resolver = "2"
members = [
"components/media/examples",
"components/xpath",
"ports/servoshell",
"tests/unit/*",
]
default-members = ["ports/servoshell"]
exclude = [".cargo", "support/crown"]
[workspace.package]
version = "0.1.0"
authors = ["The Servo Project Developers"]
repository = "https://github.com/servo/servo"
# A generic description for packages that don't have a meaningful description yet.
description = "A component of the servo web-engine."
license = "MPL-2.0"
edition = "2024"
publish = false
# We have yet to decide on a policy for updating the minimum supported Rust version.
# Before increasing this, please open a discussion on Zulip explaining the reason
# why we should consider increasing our minimum supported Rust version.
# Please also note, that the **default** Rust version in rust-toolchain.toml may be
# bumped freely.
# Skip 1.90 which causes mis-compilation: https://github.com/rust-lang/rust/issues/147265
rust-version = "1.86.0"
[workspace.dependencies]
accesskit = { version = "0.24.0", 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.34", features = ["tokio-rustls-webpki-roots"] }
atomic_refcell = "0.1.14"
aws-lc-rs = { version = "1.16", default-features = false, features = ["aws-lc-sys"] }
backtrace = "0.3"
base64 = "0.22.1"
base64ct = { version = "1.8", features = ["alloc"] }
bitflags = "2.11"
brotli = "8.0.2"
bytemuck = "1"
byteorder = "1.5"
bytes = "1.0"
byte-slice-cast = "1.2.3"
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"] }
content-security-policy = { version = "0.8.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"] }
digest = "0.10"
dpi = "0.1"
dwrote = "0.11.5"
ecdsa = "0.16"
elliptic-curve = "0.13"
encoding_rs = { version = "0.8", features = ["serde"] }
env_logger = "0.11"
euclid = "0.22"
flate2 = "1.1"
freetype-sys = "0.20"
futures = { version = "0.3", default-features = false }
futures-core = { version = "0.3", default-features = false }
futures-util = { version = "0.3", default-features = false }
gleam = "0.15"
glib = "0.22"
glib-sys = "0.22"
glow = "0.17.0"
gstreamer = { version = "0.25", features = ["v1_18"] }
gstreamer-app = "0.25"
gstreamer-audio = "0.25"
gstreamer-base = "0.25"
gstreamer-gl = "0.25"
gstreamer-gl-egl = "0.25"
gstreamer-gl-sys = "0.25"
gstreamer-gl-wayland = "0.25"
gstreamer-gl-x11 = "0.25"
gstreamer-play = "0.25"
gstreamer-sdp = "0.25"
gstreamer-sys = "0.25"
gstreamer-video = "0.25"
gstreamer-webrtc = { version = "0.25", features = ["v1_18"] }
harfbuzz-sys = "0.6.1"
headers = "0.4"
hitrace = { version = "0.1.6", features = ["api-19", "tracing-rs"] }
hkdf = "0.12"
html5ever = "0.39"
http = "1.4"
http-body-util = "0.1"
hyper = "1.9"
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"] }
icu_locid = "1.5.0"
icu_properties = "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.14.0", features = ["std"] }
inventory = { version = "0.3.24" }
ipc-channel = "0.21"
itertools = "0.14"
js = { package = "mozjs", version = "=0.15.11", default-features = false, features = ["libz-sys", "intl"] }
keyboard-types = { version = "0.8.3", features = ["serde", "webdriver"] }
kurbo = { version = "0.12", features = ["euclid"] }
libc = "0.2"
lru = "0.17"
log = "0.4.29"
mach2 = "0.6"
malloc_size_of_derive = "0.1"
markup5ever = "0.39"
memmap2 = "0.9.10"
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.5"
nix = "0.30"
nom = "8.0.0"
nom-rfc8288 = "0.4.0"
num-bigint-dig = "0.8"
num-complex = "0.4.6"
num-derive = "0.4.2"
num-traits = "0.2"
num_cpus = "1.17.0"
objc2 = "0.6.4"
objc2-core-foundation = "0.3.2"
objc2-core-graphics = "0.3.2"
objc2-core-text = "0.3.2"
ocb3 = "0.1.0"
openxr = "0.20"
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"
quote = "1"
rand = "0.9"
rangemap = "1.7.1"
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.2"
rustls = { version = "0.23", default-features = false, features = ["logging", "std", "tls12"] }
rustls-pki-types = "1.14"
rustls-platform-verifier = "0.7.0"
sea-query = { version = "=1.0.0-rc.31", 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 = "a556f4cbd15fc289039261661b049a5dc845cd80" }
serde = "1.0.228"
serde_bytes = "0.11"
serde_core = "1.0.226"
serde_json = "1.0"
servo_arc = { git = "https://github.com/servo/stylo", rev = "a556f4cbd15fc289039261661b049a5dc845cd80" }
sha1 = "0.10"
sha2 = "0.10"
sha3 = "0.10"
speexdsp-resampler = "0.1.0"
skrifa = "0.37.0"
smallvec = { version = "1.15", features = ["serde", "union"] }
string_cache = "0.9"
strum = { version = "0.28", features = ["derive"] }
stylo = { git = "https://github.com/servo/stylo", rev = "a556f4cbd15fc289039261661b049a5dc845cd80" }
stylo_atoms = { git = "https://github.com/servo/stylo", rev = "a556f4cbd15fc289039261661b049a5dc845cd80" }
stylo_dom = { git = "https://github.com/servo/stylo", rev = "a556f4cbd15fc289039261661b049a5dc845cd80" }
stylo_malloc_size_of = { git = "https://github.com/servo/stylo", rev = "a556f4cbd15fc289039261661b049a5dc845cd80" }
stylo_static_prefs = { git = "https://github.com/servo/stylo", rev = "a556f4cbd15fc289039261661b049a5dc845cd80" }
stylo_traits = { git = "https://github.com/servo/stylo", rev = "a556f4cbd15fc289039261661b049a5dc845cd80" }
surfman = { version = "0.12.0", features = ["chains"] }
syn = { version = "2", default-features = false, features = ["clone-impls", "derive", "parsing"] }
synstructure = "0.13"
taffy = { version = "0.10.1", 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.23"
tungstenite = "0.29"
unicode-bidi = "0.3.18"
unicode_categories = "0.1.1"
unicode-properties = { version = "0.1.4", features = ["emoji"] }
unicode-script = "0.5"
unicode-segmentation = "1.13.2"
url = "2.5"
urlpattern = "0.3"
utf-8 = "0.7"
uuid = { version = "1.23.1", features = ["v4", "v5"] }
vello = "0.6"
vello_cpu = "0.0.4"
webdriver = { version = "0.53.0", default-features = false }
webpki-roots = "1.0"
webrender = { version = "0.68", features = ["capture"] }
webrender_api = "0.68"
web_atoms = "0.2"
wgpu-core = "26"
wgpu-types = "26"
winapi = "0.3"
windows-sys = "0.61"
winit = "0.30.13"
wio = "0.2"
wr_malloc_size_of = "0.2.2"
x25519-dalek = { version = "2.0.1", features = ["static_secrets"] }
xml5ever = "0.39"
yuv = { version = "0.8.13", features = ["rayon"] }
############################################################################################
## Workspace-local dependencies
############################################################################################
# All local path dependencies in the servo workspace, that use the workspace version, should
# be listed here, between the `Begin` and `End` comments, so that we can easily find and
# update the version requirements when bumping the workspace version.
# Begin workspace-version dependencies - Don't change this comment, we grep for it in scripts!
deny_public_fields = { package = "servo-deny-public-fields", version = "0.1.0", path = "components/deny_public_fields" }
devtools = { package = "servo-devtools", version = "0.1.0", path = "components/devtools" }
devtools_traits = { package = "servo-devtools-traits", version = "0.1.0", path = "components/shared/devtools" }
dom_struct = { package = "servo-dom-struct", version = "0.1.0", path = "components/dom_struct" }
embedder_traits = { package = "servo-embedder-traits", version = "0.1.0", path = "components/shared/embedder" }
fonts = { package = "servo-fonts", version = "0.1.0", path = "components/fonts" }
fonts_traits = { package = "servo-fonts-traits", version = "0.1.0", path = "components/shared/fonts" }
hyper_serde = { package = "servo-hyper-serde", version = "0.1.0", path = "components/hyper_serde" }
jstraceable_derive = { package = "servo-jstraceable-derive", version = "0.1.0", path = "components/jstraceable_derive" }
layout = { package = "servo-layout", version = "0.1.0", path = "components/layout" }
layout_api = { package = "servo-layout-api", version = "0.1.0", path = "components/shared/layout" }
malloc_size_of = { package = "servo-malloc-size-of", version = "0.1.0", path = "components/malloc_size_of" }
media = { package = "servo-media-thread", version = "0.1.0", path = "components/media/media-thread" }
metrics = { package = "servo-metrics", version = "0.1.0", path = "components/metrics" }
net = { package = "servo-net", version = "0.1.0", path = "components/net" }
net_traits = { package = "servo-net-traits", version = "0.1.0", path = "components/shared/net" }
paint = { package = "servo-paint", version = "0.1.0", path = "components/paint" }
paint_api = { package = "servo-paint-api", version = "0.1.0", path = "components/shared/paint" }
pixels = { package = "servo-pixels", version = "0.1.0", path = "components/pixels" }
profile = { package = "servo-profile", version = "0.1.0", path = "components/profile" }
profile_traits = { package = "servo-profile-traits", version = "0.1.0", path = "components/shared/profile" }
script = { package = "servo-script", version = "0.1.0", path = "components/script" }
script_bindings = { package = "servo-script-bindings", version = "0.1.0", path = "components/script_bindings" }
script_traits = { package = "servo-script-traits", version = "0.1.0", path = "components/shared/script" }
servo = { version = "0.1.0", path = "components/servo", default-features = false }
servo-allocator = { version = "0.1.0", path = "components/allocator" }
servo-background-hang-monitor = { version = "0.1.0", path = "components/background_hang_monitor" }
servo-background-hang-monitor-api = { version = "0.1.0", path = "components/shared/background_hang_monitor" }
servo-base = { version = "0.1.0", path = "components/shared/base" }
servo-bluetooth = { version = "0.1.0", path = "components/bluetooth" }
servo-bluetooth-traits = { version = "0.1.0", path = "components/shared/bluetooth" }
servo-canvas = { version = "0.1.0", path = "components/canvas" }
servo-canvas-traits = { version = "0.1.0", path = "components/shared/canvas" }
servo-config = { version = "0.1.0", path = "components/config" }
servo-config-macro = { version = "0.1.0", path = "components/config/macro" }
servo-constellation = { version = "0.1.0", path = "components/constellation" }
servo-constellation-traits = { version = "0.1.0", path = "components/shared/constellation" }
servo-default-resources = { version = "0.1.0", path = "components/default-resources" }
servo-geometry = { version = "0.1.0", path = "components/geometry" }
servo-media = { version = "0.1.0", path = "components/media/servo-media" }
servo-media-audio = { version = "0.1.0", path = "components/media/audio" }
servo-media-auto = { version = "0.1.0", path = "components/media/backends/auto" }
servo-media-derive = { version = "0.1.0", path = "components/media/servo-media-derive" }
servo-media-dummy = { version = "0.1.0", path = "components/media/backends/dummy" }
servo-media-gstreamer = { version = "0.1.0", path = "components/media/backends/gstreamer" }
servo-media-gstreamer-render = { version = "0.1.0", path = "components/media/backends/gstreamer/render" }
servo-media-gstreamer-render-android = { version = "0.1.0", path = "components/media/backends/gstreamer/render-android" }
servo-media-gstreamer-render-unix = { version = "0.1.0", path = "components/media/backends/gstreamer/render-unix" }
servo-media-ohos = { version = "0.1.0", path = "components/media/backends/ohos" }
servo-media-player = { version = "0.1.0", path = "components/media/player" }
servo-media-streams = { version = "0.1.0", path = "components/media/streams" }
servo-media-traits = { version = "0.1.0", path = "components/media/traits" }
servo-media-webrtc = { version = "0.1.0", path = "components/media/webrtc" }
servo-tracing = { version = "0.1.0", path = "components/servo_tracing" }
servo-url = { version = "0.1.0", path = "components/url" }
servo-wakelock = { version = "0.1.0", path = "components/wakelock" }
storage = { package = "servo-storage", version = "0.1.0", path = "components/storage" }
storage_traits = { package = "servo-storage-traits", version = "0.1.0", path = "components/shared/storage" }
timers = { package = "servo-timers", version = "0.1.0", path = "components/timers" }
webdriver_server = { package = "servo-webdriver-server", version = "0.1.0", path = "components/webdriver_server" }
webgl = { package = "servo-webgl", version = "0.1.0", path = "components/webgl", default-features = false }
webgpu = { package = "servo-webgpu", version = "0.1.0", path = "components/webgpu" }
webgpu_traits = { package = "servo-webgpu-traits", version = "0.1.0", path = "components/shared/webgpu" }
webxr = { package = "servo-webxr", version = "0.1.0", path = "components/webxr" }
webxr-api = { package = "servo-webxr-api", version = "0.1.0", path = "components/shared/webxr" }
xpath = { package = "servo-xpath", version = "0.1.0", path = "components/xpath" }
# End workspace-version dependencies - Don't change this comment, we grep for it in scripts!
# 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: <https://docs.rs/rsa/0.9.8/rsa/index.html#example>
[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: <https://github.com/tikv/jemallocator/issues/108>
[profile.dev.package.tikv-jemalloc-sys]
opt-level = 1
[profile.release]
opt-level = 3
debug-assertions = true
# Disk-space is limited in CI, so we disabled features that are not needed for code coverage.
# Locally using the default `dev` profile is perfectly fine.
[profile.coverage]
inherits = "dev"
incremental = false
debug = false
# A profile between `dev` and `release` which aims to offer a compromise between
# fast incremental rebuilds and runtime speed.
[profile.medium]
inherits = "release"
opt-level = 2
incremental = true
debug = "line-tables-only"
[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
[patch.crates-io]
# If you need to temporarily test Servo with a local fork of some upstream
# crate, add that here. Use the form:
#
# <crate> = { path = "/path/to/local/checkout" }
#
# For html5ever:
#
# html5ever = { path = "../html5ever/html5ever" }
# markup5ever = { path = "../html5ever/markup5ever" }
# web_atoms = { path = "../html5ever/web_atoms" }
# xml5ever = { path = "../html5ever/xml5ever" }
# tendril = { path = "../html5ever/tendril" }
#
# For WebRender:
#
# webrender = { path = "../webrender/webrender" }
# webrender_api = { path = "../webrender/webrender_api" }
# wr_malloc_size_of = { path = "../webrender/wr_malloc_size_of" }
#
# Or for mozjs:
#
# mozjs = { path = "../mozjs/mozjs" }
# mozjs_sys = { path = "../mozjs/mozjs-sys" }
#
# Or for CSP crate:
# content-security-policy = { path = "../rust-content-security-policy" }
#
# Or for Stylo:
#
# [patch."https://github.com/servo/stylo"]
# selectors = { path = "../stylo/selectors" }
# servo_arc = { path = "../stylo/servo_arc" }
# stylo = { path = "../stylo/style" }
# stylo_atoms = { path = "../stylo/stylo_atoms" }
# stylo_dom = { path = "../stylo/stylo_dom" }
# stylo_malloc_size_of = { path = "../stylo/malloc_size_of" }
# stylo_static_prefs = { path = "../stylo/stylo_static_prefs" }
# stylo_traits = { path = "../stylo/style_traits" }
#
# Or for another Git dependency:
#
# [patch."https://github.com/servo/<repository>"]
# <crate> = { path = "/path/to/local/checkout" }
#