Files
mullvadvpn-app/Cargo.toml
Markus Pettersson 5b0d441bfc Bump gotatun to 0.4.1
2026-03-11 18:50:10 +01:00

191 lines
5.3 KiB
TOML

[workspace]
resolver = "2"
members = [
"android/translations-converter",
"desktop/packages/nseventforwarder",
"desktop/packages/windows-utils",
"installer-downloader",
"mullvad-api",
"mullvad-cli",
"mullvad-daemon",
"mullvad-encrypted-dns-proxy",
"mullvad-exclude",
"mullvad-fs",
"mullvad-ios",
"mullvad-jni",
"mullvad-leak-checker",
"mullvad-logging",
"mullvad-management-interface",
"mullvad-masque-proxy",
"mullvad-nsis",
"mullvad-paths",
"mullvad-problem-report",
"mullvad-relay-selector",
"mullvad-release-android",
"mullvad-setup",
"mullvad-types",
"mullvad-types/intersection-derive",
"mullvad-update",
"mullvad-update/mullvad-release",
"mullvad-version",
"talpid-core",
"talpid-dbus",
"talpid-dns",
"talpid-future",
"talpid-macos",
"talpid-net",
"talpid-platform-metadata",
"talpid-routing",
"talpid-time",
"talpid-tunnel",
"talpid-tunnel-config-client",
"talpid-windows",
"talpid-wireguard",
"tunnel-obfuscation",
"windows-installer",
"wireguard-go-rs",
]
exclude = ["ci/ios/test-router/raas"]
# Default members dictate what is built when running `cargo build` in the root directory.
# This is set to a minimal set of packages to speed up the build process and avoid building
# crates which might not compile without additional input, such as the `windows-installer` crate.
# To build or test everything, add `--workspace` to your cargo commands.
default-members = [
"mullvad-cli",
"mullvad-daemon",
"mullvad-problem-report",
"mullvad-version"
]
[workspace.package]
edition = "2024"
# Must be less than or equal to `channel` in `rust-toolchain.toml`
rust-version = "1.94.0"
repository = "https://github.com/mullvad/mullvadvpn-app/"
license = "GPL-3.0-or-later"
[workspace.dependencies]
anyhow = "1.0"
bytes = "1.11.1"
chrono = { version = "0.4.26", default-features = false }
clap = { version = "4.4.18", features = ["cargo", "derive"] }
dirs = "6.0.0"
futures = "0.3.15"
gotatun = { version = "0.4.1" }
hickory-proto = "0.25.2"
hickory-resolver = "0.25.2"
hickory-server = { version = "0.25.2", features = ["resolver"] }
hyper-util = { version = "0.1.8", features = [
"client",
"client-legacy",
"http1",
"http2",
] }
insta = { version = "1.42", features = ["yaml"] }
ipnetwork = "0.21.1"
itertools = "0.14"
log = "0.4"
netlink-packet-core = "0.8.0"
netlink-packet-route = "0.25"
netlink-proto = "0.12"
netlink-sys = "0.8.3"
nix = "0.30.1"
once_cell = "1.16"
pnet_packet = "0.35.0"
proptest = "1.9"
prost = "0.13.3"
prost-types = "0.13.3"
rand = "0.9"
reqwest = { version = "0.12.23", default-features = false, features = [
"rustls-tls"
] }
rtnetlink = "0.18"
rustls = { version = "0.23", default-features = false }
rustls-pki-types = "1.13.1"
serde = "1.0.204"
serde_json = "1.0.122"
sha2 = "0.10"
shadowsocks = "1.23.2"
socket2 = "0.5.7"
strum = { version = "0.27" }
talpid-dbus = { path = "./talpid-dbus" }
thiserror = "2.0"
tipsy = "0.6.5"
tokio = { version = "1.44" }
tokio-util = "0.7"
tonic = "0.13.1"
tonic-build = { version = "0.13.1", default-features = false }
tower = { version = "0.5.1", features = ["util"] }
tracing-appender = "0.2.4"
tracing-subscriber = { version = "0.3.22", features = ["env-filter"] }
tun = { version = "0.5.5", features = ["async"] }
vec1 = "1.12"
webpki-roots = "1.0.4"
widestring = "1.2"
windows = "0.62.2"
windows-sys = "0.61.2"
winreg = "0.55"
# We cannot use zerocopy "0.8.32" or above due to https://github.com/google/zerocopy/issues/2880
# TODO: Update the version when the issue is resolved
zerocopy = "=0.8.31"
zeroize = "1.8.2"
[workspace.lints.clippy]
allow_attributes = "warn"
as_ptr_cast_mut = "warn"
as_underscore = "warn"
borrow_as_ptr = "warn"
implicit_clone = "warn"
undocumented_unsafe_blocks = "warn"
unicode_not_nfc = "warn"
unused_async = "deny"
wildcard_dependencies = "deny"
# Keep all lints in sync with `test/Cargo.toml`
[workspace.lints.rust]
absolute_paths_not_starting_with_crate = "deny"
# Easy to read style and opinionated best practices
explicit_outlives_requirements = "warn"
macro_use_extern_crate = "deny"
missing_abi = "deny"
# Security
non_ascii_idents = "forbid"
# Deny old style Rust
rust_2018_idioms = { level = "deny", priority = -1 }
single_use_lifetimes = "warn"
# The `class!` macro in `objc` uses an unknown feature. We rely on this in 'installer-downloader'.
# The unexpected cfg warning stems from https://github.com/SSheldon/rust-objc/issues/125
# We need to ignore this until cacao migrates to another objc implementation,
# or we use another `msg_send!` macro ourselves.
unexpected_cfgs = { level = "warn", check-cfg = [
'cfg(feature, values("cargo-clippy"))'
] }
unused_lifetimes = "warn"
unused_macro_rules = "warn"
# Configuration for the helper tool https://crates.io/crates/cargo-shear
[workspace.metadata.cargo-shear]
# The way prost is only used by generated code makes it really hard for dependency
# usage checkers to see that it's not unused
ignored = ["prost"]
[profile.release]
opt-level = "s"
strip = true
lto = true
# Selectively optimize packages where we know it makes a difference
[profile.release.package]
gotatun.opt-level = 3
mullvad-masque-proxy.opt-level = 3
pqcrypto-hqc.opt-level = 3
quinn.opt-level = 3
quinn-proto.opt-level = 3
quinn-udp.opt-level = 3
ring.opt-level = 3
[profile.release-debuginfo]
inherits = "release"
debug = true
strip = false