mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-02-08 14:42:14 -05:00
It allows having way smaller binaries while still being able to have proper backtraces: `reldbg` is great for iOS because it allows inline debugging using LLDB in Xcode, but it produces enormous binaries, while for Android we can't use that properly and we'd only be interested in having symbolicated backtraces, which this profile achieves with binaries an order of magnitude smaller.
234 lines
8.1 KiB
TOML
234 lines
8.1 KiB
TOML
[workspace]
|
|
members = [
|
|
"benchmarks",
|
|
"bindings/matrix-sdk-crypto-ffi",
|
|
"bindings/matrix-sdk-ffi",
|
|
"crates/*",
|
|
"examples/*",
|
|
"labs/*",
|
|
"testing/*",
|
|
"uniffi-bindgen",
|
|
"xtask",
|
|
]
|
|
exclude = ["testing/data"]
|
|
# xtask, testing and the bindings should only be built when invoked explicitly.
|
|
default-members = ["benchmarks", "crates/*", "labs/*"]
|
|
resolver = "3"
|
|
|
|
[workspace.package]
|
|
rust-version = "1.88"
|
|
|
|
[workspace.dependencies]
|
|
anyhow = "1.0.100"
|
|
aquamarine = "0.6.0"
|
|
as_variant = "1.3.0"
|
|
assert-json-diff = "2.0.2"
|
|
assert_matches = "1.5.0"
|
|
assert_matches2 = "0.1.2"
|
|
async_cell = "0.2.3"
|
|
async-compat = "0.2.5"
|
|
async-once-cell = "0.5.4"
|
|
async-rx = "0.1.3"
|
|
# Bumping this to 0.3.6 produces a test failure because the semantic between the
|
|
# versions changed subtly: https://github.com/matrix-org/matrix-rust-sdk/issues/4599
|
|
async-stream = "0.3.6"
|
|
async-trait = "0.1.89"
|
|
base64 = "0.22.1"
|
|
bitflags = "2.10.0"
|
|
byteorder = "1.5.0"
|
|
cfg-if = "1.0.4"
|
|
clap = "4.5.53"
|
|
chrono = "0.4.42"
|
|
dirs = "6.0.0"
|
|
eyeball = { version = "0.8.8", features = ["tracing"] }
|
|
eyeball-im = { version = "0.8.0", features = ["tracing"] }
|
|
eyeball-im-util = "0.10.0"
|
|
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.3.1"
|
|
imbl = "6.1.0"
|
|
indexed_db_futures = { version = "0.7.0", package = "matrix_indexed_db_futures" }
|
|
indexmap = "2.12.1"
|
|
insta = { version = "1.44.1", features = ["json", "redactions"] }
|
|
itertools = "0.14.0"
|
|
js-sys = "0.3.82"
|
|
mime = "0.3.17"
|
|
oauth2 = { version = "5.0.0", default-features = false, features = ["reqwest", "timing-resistant-secret-traits"] }
|
|
once_cell = "1.21.3"
|
|
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"
|
|
regex = "1.12.2"
|
|
reqwest = { version = "0.12.24", default-features = false }
|
|
rmp-serde = "1.3.0"
|
|
ruma = { git = "https://github.com/ruma/ruma", rev = "d4f29e2a70dbfb0bd4fdb839ca4629794644ba97", features = [
|
|
"client-api-c",
|
|
"compat-upload-signatures",
|
|
"compat-arbitrary-length-ids",
|
|
"compat-tag-info",
|
|
"compat-encrypted-stickers",
|
|
"compat-lax-room-create-deser",
|
|
"compat-lax-room-topic-deser",
|
|
"unstable-msc3230",
|
|
"unstable-msc3401",
|
|
"unstable-msc3488",
|
|
"unstable-msc3489",
|
|
"unstable-msc4075",
|
|
"unstable-msc4140",
|
|
"unstable-msc4143",
|
|
"unstable-msc4171",
|
|
"unstable-msc4278",
|
|
"unstable-msc4286",
|
|
"unstable-msc4306",
|
|
"unstable-msc4308",
|
|
"unstable-msc4310",
|
|
] }
|
|
sentry = { version = "0.46.0", default-features = false }
|
|
sentry-tracing = "0.46.0"
|
|
serde = { version = "1.0.228", features = ["rc"] }
|
|
serde_html_form = "0.2.8"
|
|
serde_json = "1.0.145"
|
|
sha2 = "0.10.9"
|
|
similar-asserts = "1.7.0"
|
|
stream_assert = "0.1.1"
|
|
tempfile = "3.23.0"
|
|
thiserror = "2.0.17"
|
|
tokio = { version = "1.48.0", default-features = false, features = ["sync"] }
|
|
tokio-stream = "0.1.17"
|
|
tracing = { version = "0.1.41", default-features = false, features = ["std"] }
|
|
tracing-appender = "0.2.3"
|
|
tracing-core = "0.1.34"
|
|
tracing-subscriber = "0.3.20"
|
|
unicode-normalization = "0.1.25"
|
|
uniffi = "0.31.0"
|
|
uniffi_bindgen = "0.31.0"
|
|
url = "2.5.7"
|
|
uuid = "1.18.1"
|
|
vergen-gitcl = "1.0.8"
|
|
vodozemac = { version = "0.9.0", features = ["insecure-pk-encryption"] }
|
|
wasm-bindgen = "0.2.105"
|
|
wasm-bindgen-test = "0.3.55"
|
|
web-sys = "0.3.82"
|
|
wiremock = "0.6.5"
|
|
zeroize = "1.8.2"
|
|
|
|
matrix-sdk = { path = "crates/matrix-sdk", version = "0.16.0", default-features = false }
|
|
matrix-sdk-base = { path = "crates/matrix-sdk-base", version = "0.16.0" }
|
|
matrix-sdk-common = { path = "crates/matrix-sdk-common", version = "0.16.0" }
|
|
matrix-sdk-crypto = { path = "crates/matrix-sdk-crypto", version = "0.16.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.16.0", default-features = false }
|
|
matrix-sdk-qrcode = { path = "crates/matrix-sdk-qrcode", version = "0.16.0" }
|
|
matrix-sdk-sqlite = { path = "crates/matrix-sdk-sqlite", version = "0.16.0", default-features = false }
|
|
matrix-sdk-store-encryption = { path = "crates/matrix-sdk-store-encryption", version = "0.16.0" }
|
|
matrix-sdk-test = { path = "testing/matrix-sdk-test", version = "0.16.0" }
|
|
matrix-sdk-test-utils = { path = "testing/matrix-sdk-test-utils", version = "0.16.0" }
|
|
matrix-sdk-ui = { path = "crates/matrix-sdk-ui", version = "0.16.0", default-features = false }
|
|
matrix-sdk-search = { path = "crates/matrix-sdk-search", version = "0.16.0" }
|
|
|
|
[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"
|
|
manual_let_else = "warn"
|
|
mut_mut = "warn"
|
|
needless_borrow = "warn"
|
|
nonstandard_macro_braces = "warn"
|
|
redundant_clone = "warn"
|
|
str_to_string = "warn"
|
|
todo = "warn"
|
|
unnecessary_semicolon = "warn"
|
|
unused_async = "warn"
|
|
|
|
# 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 for debug builds with full optimization and minimal debug symbols.
|
|
# This should be just enough to have proper backtraces, having way smaller binaries
|
|
# (10% of the size with full debug symbols profile, like `reldbg`).
|
|
# This profile differs from `reldbg` in not containing the debug symbols needed for
|
|
# debugging with LLDB/GDB, trading that for binary size, allowing quick iterations
|
|
# of building the bindings, installing in a real device, testing your changes, repeat.
|
|
# It's also different from `dev` in having enough debug symbols to display backtraces.
|
|
[profile.reldev]
|
|
inherits = "dev"
|
|
opt-level = 3
|
|
debug = "line-tables-only"
|
|
strip = "debuginfo"
|
|
|
|
[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.dist]
|
|
# Use release profile as a base
|
|
inherits = "release"
|
|
# Strip the minimal debug info, while still allowing us to have proper backtraces, but it will affect debuggers
|
|
strip = "debuginfo"
|
|
# Use link time optimizations
|
|
lto = true
|
|
# Use binary size optimization, since this is intended for distributed copies of the SDK
|
|
opt-level = "s"
|
|
|
|
[profile.profiling]
|
|
inherits = "release"
|
|
# LTO is too slow to compile.
|
|
lto = false
|
|
# Get symbol names for profiling purposes.
|
|
debug = true
|
|
|
|
[profile.bench]
|
|
inherits = "release"
|
|
lto = false
|
|
|
|
[patch.crates-io]
|
|
async-compat = { git = "https://github.com/element-hq/async-compat", rev = "5a27c8b290f1f1dcfc0c4ec22c464e38528aa591" }
|
|
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/tokio-rs/tracing.git", rev = "20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05" }
|
|
tracing-core = { git = "https://github.com/tokio-rs/tracing.git", rev = "20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05" }
|
|
tracing-subscriber = { git = "https://github.com/tokio-rs/tracing.git", rev = "20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05" }
|
|
tracing-appender = { git = "https://github.com/tokio-rs/tracing.git", rev = "20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05" }
|