mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-05-04 22:15:44 -04:00
I have to disable LTO every time I'm building any final binary using the SDK, because otherwise, the builds can take easily more than 10 minutes to complete, killing iteration times, and making it almost impractical to use the programs (benchmarks, or multiverse). I think it should be the decision of the final embedder to enable or disable LTO, and that for the purpose of our own binaries hosted in the SDK repository, we don't need the absolute best performance (or, for the sake of benchmarking, we can tweak the profiling profile).
186 lines
6.6 KiB
TOML
186 lines
6.6 KiB
TOML
[workspace]
|
|
members = [
|
|
"benchmarks",
|
|
"bindings/matrix-sdk-crypto-ffi",
|
|
"bindings/matrix-sdk-ffi",
|
|
"crates/*",
|
|
"testing/*",
|
|
"examples/*",
|
|
"labs/*",
|
|
"uniffi-bindgen",
|
|
"xtask",
|
|
]
|
|
exclude = [
|
|
"testing/data",
|
|
]
|
|
# xtask, testing and the bindings should only be built when invoked explicitly.
|
|
default-members = ["benchmarks", "crates/*", "labs/*"]
|
|
resolver = "2"
|
|
|
|
[workspace.package]
|
|
rust-version = "1.85"
|
|
|
|
[workspace.dependencies]
|
|
anyhow = "1.0.95"
|
|
aquamarine = "0.6.0"
|
|
assert-json-diff = "2.0.2"
|
|
assert_matches = "1.5.0"
|
|
assert_matches2 = "0.1.2"
|
|
async-rx = "0.1.3"
|
|
async-stream = "0.3.5"
|
|
async-trait = "0.1.85"
|
|
as_variant = "1.2.0"
|
|
base64 = "0.22.1"
|
|
byteorder = "1.5.0"
|
|
chrono = "0.4.39"
|
|
eyeball = { git = "https://github.com/jplatte/eyeball", branch = "main", features = ["tracing"] }
|
|
eyeball-im = { git = "https://github.com/jplatte/eyeball", branch = "main", features = ["tracing"] }
|
|
eyeball-im-util = { git = "https://github.com/jplatte/eyeball", branch = "main" }
|
|
futures-core = "0.3.31"
|
|
futures-executor = "0.3.31"
|
|
futures-util = "0.3.31"
|
|
getrandom = { version = "0.2.15", default-features = false }
|
|
gloo-timers = "0.3.0"
|
|
growable-bloom-filter = "2.1.1"
|
|
hkdf = "0.12.4"
|
|
hmac = "0.12.1"
|
|
http = "1.2.0"
|
|
imbl = "4.0.1"
|
|
indexmap = "2.7.1"
|
|
insta = { version = "1.42.1", features = ["json", "redactions"] }
|
|
itertools = "0.14.0"
|
|
js-sys = "0.3.69"
|
|
mime = "0.3.17"
|
|
once_cell = "1.20.2"
|
|
pbkdf2 = { version = "0.12.2" }
|
|
pin-project-lite = "0.2.16"
|
|
proptest = { version = "1.6.0", default-features = false, features = ["std"] }
|
|
rand = "0.8.5"
|
|
reqwest = { version = "0.12.12", default-features = false }
|
|
rmp-serde = "1.3.0"
|
|
# Be careful to use commits from the https://github.com/ruma/ruma/tree/ruma-0.12
|
|
# branch until a proper release with breaking changes happens.
|
|
ruma = { git = "https://github.com/ruma/ruma", rev = "7755c7cbc580f8d8aea30d78cc1a6850b1a6fd39", features = [
|
|
"client-api-c",
|
|
"compat-upload-signatures",
|
|
"compat-user-id",
|
|
"compat-arbitrary-length-ids",
|
|
"compat-tag-info",
|
|
"compat-encrypted-stickers",
|
|
"unstable-msc3401",
|
|
"unstable-msc3266",
|
|
"unstable-msc3488",
|
|
"unstable-msc3489",
|
|
"unstable-msc4075",
|
|
"unstable-msc4140",
|
|
"unstable-msc4171",
|
|
] }
|
|
ruma-common = { git = "https://github.com/ruma/ruma", rev = "7755c7cbc580f8d8aea30d78cc1a6850b1a6fd39" }
|
|
serde = "1.0.217"
|
|
serde_html_form = "0.2.7"
|
|
serde_json = "1.0.138"
|
|
sha2 = "0.10.8"
|
|
similar-asserts = "1.6.1"
|
|
stream_assert = "0.1.1"
|
|
tempfile = "3.16.0"
|
|
thiserror = "2.0.11"
|
|
tokio = { version = "1.43.0", default-features = false, features = ["sync"] }
|
|
tokio-stream = "0.1.17"
|
|
tracing = { version = "0.1.40", default-features = false, features = ["std"] }
|
|
tracing-core = "0.1.32"
|
|
tracing-subscriber = "0.3.18"
|
|
unicode-normalization = "0.1.24"
|
|
uniffi = { version = "0.28.0" }
|
|
uniffi_bindgen = { version = "0.28.0" }
|
|
url = "2.5.4"
|
|
uuid = "1.12.1"
|
|
vodozemac = { version = "0.9.0", features = ["insecure-pk-encryption"] }
|
|
wasm-bindgen = "0.2.84"
|
|
wasm-bindgen-test = "0.3.33"
|
|
web-sys = "0.3.69"
|
|
wiremock = "0.6.2"
|
|
zeroize = "1.8.1"
|
|
|
|
matrix-sdk = { path = "crates/matrix-sdk", version = "0.10.0", default-features = false }
|
|
matrix-sdk-base = { path = "crates/matrix-sdk-base", version = "0.10.0" }
|
|
matrix-sdk-common = { path = "crates/matrix-sdk-common", version = "0.10.0" }
|
|
matrix-sdk-crypto = { path = "crates/matrix-sdk-crypto", version = "0.10.0" }
|
|
matrix-sdk-ffi-macros = { path = "bindings/matrix-sdk-ffi-macros", version = "0.7.0" }
|
|
matrix-sdk-indexeddb = { path = "crates/matrix-sdk-indexeddb", version = "0.10.0", default-features = false }
|
|
matrix-sdk-qrcode = { path = "crates/matrix-sdk-qrcode", version = "0.10.0" }
|
|
matrix-sdk-sqlite = { path = "crates/matrix-sdk-sqlite", version = "0.10.0", default-features = false }
|
|
matrix-sdk-store-encryption = { path = "crates/matrix-sdk-store-encryption", version = "0.10.0" }
|
|
matrix-sdk-test = { path = "testing/matrix-sdk-test", version = "0.10.0" }
|
|
matrix-sdk-ui = { path = "crates/matrix-sdk-ui", version = "0.10.0", default-features = false }
|
|
|
|
# Default development profile; default for most Cargo commands, otherwise
|
|
# selected with `--debug`
|
|
[profile.dev]
|
|
# Saves a lot of disk space. If symbols are needed, use the dbg profile.
|
|
debug = 0
|
|
|
|
[profile.dev.package]
|
|
# Optimize quote even in debug mode. Speeds up proc-macros enough to account
|
|
# for the extra time of optimizing it for a clean build of matrix-sdk-ffi.
|
|
quote = { opt-level = 2 }
|
|
sha2 = { opt-level = 2 }
|
|
# faster runs for insta.rs snapshot testing
|
|
insta.opt-level = 3
|
|
similar.opt-level = 3
|
|
|
|
# Custom profile with full debugging info, use `--profile dbg` to select
|
|
[profile.dbg]
|
|
inherits = "dev"
|
|
debug = 2
|
|
|
|
# Custom profile for use in (debug) builds of the binding crates, use
|
|
# `--profile reldbg` to select
|
|
[profile.reldbg]
|
|
inherits = "dbg"
|
|
opt-level = 3
|
|
|
|
[profile.profiling]
|
|
inherits = "release"
|
|
# LTO is too slow to compile.
|
|
lto = false
|
|
# Get symbol names for profiling purposes.
|
|
debug = true
|
|
|
|
[patch.crates-io]
|
|
async-compat = { git = "https://github.com/jplatte/async-compat", rev = "16dc8597ec09a6102d58d4e7b67714a35dd0ecb8" }
|
|
const_panic = { git = "https://github.com/jplatte/const_panic", rev = "9024a4cb3eac45c1d2d980f17aaee287b17be498" }
|
|
# Needed to fix rotation log issue on Android (https://github.com/tokio-rs/tracing/issues/2937)
|
|
tracing = { git = "https://github.com/element-hq/tracing.git", rev = "ca9431f74d37c9d3b5e6a9f35b2c706711dab7dd" }
|
|
tracing-core = { git = "https://github.com/element-hq/tracing.git", rev = "ca9431f74d37c9d3b5e6a9f35b2c706711dab7dd" }
|
|
tracing-subscriber = { git = "https://github.com/element-hq/tracing.git", rev = "ca9431f74d37c9d3b5e6a9f35b2c706711dab7dd" }
|
|
tracing-appender = { git = "https://github.com/element-hq/tracing.git", rev = "ca9431f74d37c9d3b5e6a9f35b2c706711dab7dd" }
|
|
paranoid-android = { git = "https://github.com/element-hq/paranoid-android.git", rev = "69388ac5b4afeed7be4401c70ce17f6d9a2cf19b" }
|
|
|
|
[workspace.lints.rust]
|
|
rust_2018_idioms = "warn"
|
|
semicolon_in_expressions_from_macros = "warn"
|
|
unexpected_cfgs = { level = "warn", check-cfg = [
|
|
'cfg(tarpaulin_include)', # Used by tarpaulin (code coverage)
|
|
'cfg(ruma_unstable_exhaustive_types)', # Used by Ruma's EventContent derive macro
|
|
] }
|
|
unused_extern_crates = "warn"
|
|
unused_import_braces = "warn"
|
|
unused_qualifications = "warn"
|
|
trivial_casts = "warn"
|
|
trivial_numeric_casts = "warn"
|
|
|
|
[workspace.lints.clippy]
|
|
assigning_clones = "allow"
|
|
box_default = "allow"
|
|
cloned_instead_of_copied = "warn"
|
|
dbg_macro = "warn"
|
|
inefficient_to_string = "warn"
|
|
macro_use_imports = "warn"
|
|
mut_mut = "warn"
|
|
needless_borrow = "warn"
|
|
nonstandard_macro_braces = "warn"
|
|
str_to_string = "warn"
|
|
todo = "warn"
|
|
unused_async = "warn"
|
|
redundant_clone = "warn"
|