890 lines
21 KiB
TOML
890 lines
21 KiB
TOML
#cargo-features = ["profile-rustflags"]
|
|
|
|
[workspace]
|
|
resolver = "2"
|
|
members = ["src/*"]
|
|
default-members = ["src/*"]
|
|
|
|
[workspace.package]
|
|
authors = [
|
|
"strawberry <strawberry@puppygock.gay>",
|
|
"timokoesters <timo@koesters.xyz>",
|
|
]
|
|
categories = ["network-programming"]
|
|
description = "a very cool fork of Conduit, a Matrix homeserver written in Rust"
|
|
edition = "2021"
|
|
homepage = "https://conduwuit.puppyirl.gay/"
|
|
keywords = ["chat", "matrix", "server", "uwu"]
|
|
license = "Apache-2.0"
|
|
# See also `rust-toolchain.toml`
|
|
readme = "README.md"
|
|
repository = "https://github.com/girlbossceo/conduwuit"
|
|
rust-version = "1.81.0"
|
|
version = "0.4.7"
|
|
|
|
[workspace.metadata.crane]
|
|
name = "conduit"
|
|
|
|
[workspace.dependencies.arrayvec]
|
|
version = "0.7.4"
|
|
|
|
[workspace.dependencies.const-str]
|
|
version = "0.5.7"
|
|
|
|
[workspace.dependencies.ctor]
|
|
version = "0.2.8"
|
|
|
|
[workspace.dependencies.cargo_toml]
|
|
version = "0.20"
|
|
default-features = false
|
|
features = ["features"]
|
|
|
|
[workspace.dependencies.toml]
|
|
version = "0.8.14"
|
|
default-features = false
|
|
features = ["parse"]
|
|
|
|
[workspace.dependencies.sanitize-filename]
|
|
version = "0.5.0"
|
|
|
|
[workspace.dependencies.jsonwebtoken]
|
|
version = "9.3.0"
|
|
|
|
[workspace.dependencies.base64]
|
|
version = "0.22.1"
|
|
|
|
# used for TURN server authentication
|
|
[workspace.dependencies.hmac]
|
|
version = "0.12.1"
|
|
|
|
[workspace.dependencies.sha-1]
|
|
version = "0.10.1"
|
|
|
|
# used for checking if an IP is in specific subnets / CIDR ranges easier
|
|
[workspace.dependencies.ipaddress]
|
|
version = "0.1.3"
|
|
|
|
[workspace.dependencies.rand]
|
|
version = "0.8.5"
|
|
|
|
# Used for the http request / response body type for Ruma endpoints used with reqwest
|
|
[workspace.dependencies.bytes]
|
|
version = "1.7.2"
|
|
|
|
[workspace.dependencies.http-body-util]
|
|
version = "0.1.1"
|
|
|
|
[workspace.dependencies.http]
|
|
version = "1.1.0"
|
|
|
|
[workspace.dependencies.regex]
|
|
version = "1.10.6"
|
|
|
|
[workspace.dependencies.axum]
|
|
version = "0.7.5"
|
|
default-features = false
|
|
features = [
|
|
"form",
|
|
"http1",
|
|
"http2",
|
|
"json",
|
|
"matched-path",
|
|
"tokio",
|
|
"tracing",
|
|
]
|
|
|
|
[workspace.dependencies.axum-extra]
|
|
version = "0.9.3"
|
|
default-features = false
|
|
features = ["typed-header", "tracing"]
|
|
|
|
[workspace.dependencies.axum-server]
|
|
version = "0.7.1"
|
|
default-features = false
|
|
features = ["tls-rustls"]
|
|
|
|
# to listen on both HTTP and HTTPS if listening on TLS dierctly from conduwuit for complement or sytest
|
|
[workspace.dependencies.axum-server-dual-protocol]
|
|
version = "0.7"
|
|
|
|
[workspace.dependencies.axum-client-ip]
|
|
version = "0.6.0"
|
|
|
|
[workspace.dependencies.tower]
|
|
version = "0.5.1"
|
|
default-features = false
|
|
features = ["util"]
|
|
|
|
[workspace.dependencies.tower-http]
|
|
version = "0.6.0"
|
|
default-features = false
|
|
features = [
|
|
"add-extension",
|
|
"cors",
|
|
"sensitive-headers",
|
|
"set-header",
|
|
"trace",
|
|
"util",
|
|
"catch-panic",
|
|
]
|
|
|
|
[workspace.dependencies.rustls]
|
|
version = "0.23.13"
|
|
|
|
[workspace.dependencies.reqwest]
|
|
version = "0.12.8"
|
|
default-features = false
|
|
features = [
|
|
"rustls-tls-native-roots",
|
|
"socks",
|
|
"hickory-dns",
|
|
"http2",
|
|
]
|
|
|
|
[workspace.dependencies.serde]
|
|
version = "1.0.209"
|
|
default-features = false
|
|
features = ["rc"]
|
|
|
|
[workspace.dependencies.serde_json]
|
|
version = "1.0.124"
|
|
default-features = false
|
|
features = ["raw_value"]
|
|
|
|
# Used for appservice registration files
|
|
[workspace.dependencies.serde_yaml]
|
|
version = "0.9.34"
|
|
|
|
# Used to load forbidden room/user regex from config
|
|
[workspace.dependencies.serde_regex]
|
|
version = "1.1.0"
|
|
|
|
# Used for ruma wrapper
|
|
[workspace.dependencies.serde_html_form]
|
|
version = "0.2.6"
|
|
|
|
# Used for password hashing
|
|
[workspace.dependencies.argon2]
|
|
version = "0.5.3"
|
|
features = ["alloc", "rand"]
|
|
default-features = false
|
|
|
|
# Used to generate thumbnails for images
|
|
[workspace.dependencies.image]
|
|
version = "0.25.1"
|
|
default-features = false
|
|
features = [
|
|
"jpeg",
|
|
"png",
|
|
"gif",
|
|
"webp",
|
|
]
|
|
|
|
# logging
|
|
[workspace.dependencies.log]
|
|
version = "0.4.21"
|
|
default-features = false
|
|
[workspace.dependencies.tracing]
|
|
version = "0.1.40"
|
|
default-features = false
|
|
[workspace.dependencies.tracing-subscriber]
|
|
version = "0.3.18"
|
|
features = ["env-filter"]
|
|
[workspace.dependencies.tracing-core]
|
|
version = "0.1.32"
|
|
|
|
# for URL previews
|
|
[workspace.dependencies.webpage]
|
|
version = "2.0.1"
|
|
default-features = false
|
|
|
|
# used for conduit's CLI and admin room command parsing
|
|
[workspace.dependencies.clap]
|
|
version = "4.5.15"
|
|
default-features = false
|
|
features = [
|
|
"std",
|
|
"derive",
|
|
"help",
|
|
"usage",
|
|
"error-context",
|
|
"string",
|
|
]
|
|
|
|
[workspace.dependencies.futures-util]
|
|
version = "0.3.30"
|
|
default-features = false
|
|
|
|
[workspace.dependencies.tokio]
|
|
version = "1.40.0"
|
|
default-features = false
|
|
features = [
|
|
"fs",
|
|
"net",
|
|
"macros",
|
|
"sync",
|
|
"signal",
|
|
"time",
|
|
"rt-multi-thread",
|
|
"io-util",
|
|
]
|
|
|
|
[workspace.dependencies.tokio-metrics]
|
|
version = "0.3.1"
|
|
|
|
[workspace.dependencies.libloading]
|
|
version = "0.8.5"
|
|
|
|
# Validating urls in config, was already a transitive dependency
|
|
[workspace.dependencies.url]
|
|
version = "2.5.0"
|
|
default-features = false
|
|
features = ["serde"]
|
|
|
|
# standard date and time tools
|
|
[workspace.dependencies.chrono]
|
|
version = "0.4.38"
|
|
features = ["alloc", "std"]
|
|
default-features = false
|
|
|
|
[workspace.dependencies.hyper]
|
|
version = "1.4.1"
|
|
default-features = false
|
|
features = [
|
|
"server",
|
|
"http1",
|
|
"http2",
|
|
]
|
|
|
|
[workspace.dependencies.hyper-util]
|
|
# 0.1.9 causes DNS issues
|
|
version = "=0.1.8"
|
|
default-features = false
|
|
features = [
|
|
"client",
|
|
"server-auto",
|
|
"server-graceful",
|
|
"service",
|
|
"tokio",
|
|
]
|
|
|
|
# to support multiple variations of setting a config option
|
|
[workspace.dependencies.either]
|
|
version = "1.11.0"
|
|
default-features = false
|
|
features = ["serde"]
|
|
|
|
# Used for reading the configuration from conduwuit.toml & environment variables
|
|
[workspace.dependencies.figment]
|
|
version = "0.10.18"
|
|
default-features = false
|
|
features = ["env", "toml"]
|
|
|
|
[workspace.dependencies.hickory-resolver]
|
|
version = "0.24.1"
|
|
default-features = false
|
|
|
|
# Used for conduit::Error type
|
|
[workspace.dependencies.thiserror]
|
|
version = "1.0.63"
|
|
|
|
# Used when hashing the state
|
|
[workspace.dependencies.ring]
|
|
version = "0.17.8"
|
|
|
|
# Used to make working with iterators easier, was already a transitive depdendency
|
|
[workspace.dependencies.itertools]
|
|
version = "0.13.0"
|
|
|
|
# to parse user-friendly time durations in admin commands
|
|
#TODO: overlaps chrono?
|
|
[workspace.dependencies.cyborgtime]
|
|
version = "2.1.1"
|
|
|
|
# used to replace the channels of the tokio runtime
|
|
[workspace.dependencies.loole]
|
|
version = "0.3.1"
|
|
|
|
[workspace.dependencies.async-trait]
|
|
version = "0.1.81"
|
|
|
|
[workspace.dependencies.lru-cache]
|
|
version = "0.1.2"
|
|
|
|
# Used for matrix spec type definitions and helpers
|
|
[workspace.dependencies.ruma]
|
|
git = "https://github.com/girlbossceo/ruwuma"
|
|
#branch = "conduwuit-changes"
|
|
rev = "b6f82a72b6c0899d8ac8e53206d375c2c6f0a2ad"
|
|
features = [
|
|
"compat",
|
|
"rand",
|
|
"appservice-api-c",
|
|
"client-api",
|
|
"federation-api",
|
|
"markdown",
|
|
"push-gateway-api-c",
|
|
"state-res",
|
|
"server-util",
|
|
"unstable-exhaustive-types",
|
|
"ring-compat",
|
|
"identifiers-validation",
|
|
"unstable-unspecified",
|
|
"unstable-msc2448",
|
|
"unstable-msc2666",
|
|
"unstable-msc2867",
|
|
"unstable-msc2870",
|
|
"unstable-msc3026",
|
|
"unstable-msc3061",
|
|
"unstable-msc3266",
|
|
"unstable-msc3381", # polls
|
|
"unstable-msc3489", # beacon / live location
|
|
"unstable-msc3575",
|
|
"unstable-msc4121",
|
|
"unstable-msc4125",
|
|
"unstable-msc4186",
|
|
"unstable-extensible-events",
|
|
]
|
|
|
|
[workspace.dependencies.rust-rocksdb]
|
|
path = "deps/rust-rocksdb"
|
|
package = "rust-rocksdb-uwu"
|
|
features = [
|
|
"multi-threaded-cf",
|
|
"mt_static",
|
|
"lz4",
|
|
"zstd",
|
|
"zlib",
|
|
"bzip2",
|
|
]
|
|
|
|
# optional SHA256 media keys feature
|
|
[workspace.dependencies.sha2]
|
|
version = "0.10.8"
|
|
|
|
# optional opentelemetry, performance measurements, flamegraphs, etc for performance measurements and monitoring
|
|
[workspace.dependencies.opentelemetry]
|
|
version = "0.21.0"
|
|
|
|
[workspace.dependencies.tracing-flame]
|
|
version = "0.2.0"
|
|
|
|
[workspace.dependencies.tracing-opentelemetry]
|
|
version = "0.22.0"
|
|
|
|
[workspace.dependencies.opentelemetry_sdk]
|
|
version = "0.21.2"
|
|
features = ["rt-tokio"]
|
|
|
|
[workspace.dependencies.opentelemetry-jaeger]
|
|
version = "0.20.0"
|
|
features = ["rt-tokio"]
|
|
|
|
# optional sentry metrics for crash/panic reporting
|
|
[workspace.dependencies.sentry]
|
|
version = "0.34.0"
|
|
default-features = false
|
|
features = [
|
|
"backtrace",
|
|
"contexts",
|
|
"debug-images",
|
|
"panic",
|
|
"rustls",
|
|
"tower",
|
|
"tower-http",
|
|
"tracing",
|
|
"reqwest",
|
|
"log",
|
|
]
|
|
|
|
[workspace.dependencies.sentry-tracing]
|
|
version = "0.34.0"
|
|
[workspace.dependencies.sentry-tower]
|
|
version = "0.34.0"
|
|
|
|
# jemalloc usage
|
|
[workspace.dependencies.tikv-jemalloc-sys]
|
|
git = "https://github.com/girlbossceo/jemallocator"
|
|
rev = "c32af15f3b440ae5e46c3404f78b19093bbd5294"
|
|
default-features = false
|
|
features = ["unprefixed_malloc_on_supported_platforms"]
|
|
[workspace.dependencies.tikv-jemallocator]
|
|
git = "https://github.com/girlbossceo/jemallocator"
|
|
rev = "c32af15f3b440ae5e46c3404f78b19093bbd5294"
|
|
default-features = false
|
|
features = ["unprefixed_malloc_on_supported_platforms"]
|
|
[workspace.dependencies.tikv-jemalloc-ctl]
|
|
git = "https://github.com/girlbossceo/jemallocator"
|
|
rev = "c32af15f3b440ae5e46c3404f78b19093bbd5294"
|
|
default-features = false
|
|
features = ["use_std"]
|
|
|
|
[workspace.dependencies.console-subscriber]
|
|
version = "0.4"
|
|
|
|
[workspace.dependencies.nix]
|
|
version = "0.29.0"
|
|
default-features = false
|
|
features = ["resource"]
|
|
|
|
[workspace.dependencies.sd-notify]
|
|
version = "0.4.1"
|
|
|
|
[workspace.dependencies.hardened_malloc-rs]
|
|
version = "0.1.2"
|
|
default-features = false
|
|
features = [
|
|
"static",
|
|
"gcc",
|
|
"light",
|
|
]
|
|
|
|
[workspace.dependencies.rustyline-async]
|
|
version = "0.4.3"
|
|
default-features = false
|
|
|
|
[workspace.dependencies.termimad]
|
|
version = "0.30.0"
|
|
default-features = false
|
|
|
|
[workspace.dependencies.checked_ops]
|
|
version = "0.1"
|
|
|
|
[workspace.dependencies.syn]
|
|
version = "2.0.76"
|
|
default-features = false
|
|
features = ["full", "extra-traits"]
|
|
|
|
[workspace.dependencies.quote]
|
|
version = "1.0.36"
|
|
|
|
[workspace.dependencies.proc-macro2]
|
|
version = "1.0.86"
|
|
|
|
|
|
#
|
|
# Patches
|
|
#
|
|
|
|
# backport of [https://github.com/tokio-rs/tracing/pull/2956] to the 0.1.x branch of tracing.
|
|
# we can switch back to upstream if #2956 is merged and backported in the upstream repo.
|
|
# https://github.com/girlbossceo/tracing/commit/b348dca742af641c47bc390261f60711c2af573c
|
|
[patch.crates-io.tracing-subscriber]
|
|
git = "https://github.com/girlbossceo/tracing"
|
|
rev = "4d78a14a5e03f539b8c6b475aefa08bb14e4de91"
|
|
[patch.crates-io.tracing]
|
|
git = "https://github.com/girlbossceo/tracing"
|
|
rev = "4d78a14a5e03f539b8c6b475aefa08bb14e4de91"
|
|
[patch.crates-io.tracing-core]
|
|
git = "https://github.com/girlbossceo/tracing"
|
|
rev = "4d78a14a5e03f539b8c6b475aefa08bb14e4de91"
|
|
[patch.crates-io.tracing-log]
|
|
git = "https://github.com/girlbossceo/tracing"
|
|
rev = "4d78a14a5e03f539b8c6b475aefa08bb14e4de91"
|
|
|
|
# adds a tab completion callback: https://github.com/girlbossceo/rustyline-async/commit/de26100b0db03e419a3d8e1dd26895d170d1fe50
|
|
# adds event for CTRL+\: https://github.com/girlbossceo/rustyline-async/commit/67d8c49aeac03a5ef4e818f663eaa94dd7bf339b
|
|
[patch.crates-io.rustyline-async]
|
|
git = "https://github.com/girlbossceo/rustyline-async"
|
|
rev = "9654cc84e19241f6e19021eb8e677892656f5071"
|
|
|
|
#
|
|
# Our crates
|
|
#
|
|
|
|
[workspace.dependencies.conduit-router]
|
|
package = "conduit_router"
|
|
path = "src/router"
|
|
default-features = false
|
|
|
|
[workspace.dependencies.conduit-admin]
|
|
package = "conduit_admin"
|
|
path = "src/admin"
|
|
default-features = false
|
|
|
|
[workspace.dependencies.conduit-api]
|
|
package = "conduit_api"
|
|
path = "src/api"
|
|
default-features = false
|
|
|
|
[workspace.dependencies.conduit-service]
|
|
package = "conduit_service"
|
|
path = "src/service"
|
|
default-features = false
|
|
|
|
[workspace.dependencies.conduit-database]
|
|
package = "conduit_database"
|
|
path = "src/database"
|
|
default-features = false
|
|
|
|
[workspace.dependencies.conduit-core]
|
|
package = "conduit_core"
|
|
path = "src/core"
|
|
default-features = false
|
|
|
|
[workspace.dependencies.conduit-macros]
|
|
package = "conduit_macros"
|
|
path = "src/macros"
|
|
default-features = false
|
|
|
|
###############################################################################
|
|
#
|
|
# Release profiles
|
|
#
|
|
|
|
[profile.release]
|
|
strip = "symbols"
|
|
lto = "thin"
|
|
|
|
# release profile with debug symbols
|
|
[profile.release-debuginfo]
|
|
inherits = "release"
|
|
debug = "full"
|
|
strip = "none"
|
|
|
|
[profile.release-high-perf]
|
|
inherits = "release"
|
|
lto = "fat"
|
|
codegen-units = 1
|
|
panic = "abort"
|
|
|
|
# do not use without profile-rustflags enabled
|
|
[profile.release-max-perf]
|
|
inherits = "release"
|
|
strip = "symbols"
|
|
lto = "fat"
|
|
#rustflags = [
|
|
# '-Ctarget-cpu=native',
|
|
# '-Ztune-cpu=native',
|
|
# '-Ctarget-feature=+crt-static',
|
|
# '-Crelocation-model=static',
|
|
# '-Ztls-model=local-exec',
|
|
# '-Zinline-in-all-cgus=true',
|
|
# '-Zinline-mir=true',
|
|
# '-Zmir-opt-level=3',
|
|
# '-Clink-arg=-fuse-ld=gold',
|
|
# '-Clink-arg=-Wl,--threads',
|
|
# '-Clink-arg=-Wl,--gc-sections',
|
|
# '-Clink-arg=-luring',
|
|
# '-Clink-arg=-lstdc++',
|
|
# '-Clink-arg=-lc',
|
|
# '-Ztime-passes',
|
|
# '-Ztime-llvm-passes',
|
|
#]
|
|
|
|
[profile.release-max-perf.build-override]
|
|
inherits = "release-max-perf"
|
|
opt-level = 0
|
|
codegen-units = 32
|
|
#rustflags = [
|
|
# '-Crelocation-model=pic',
|
|
# '-Ctarget-feature=-crt-static',
|
|
# '-Clink-arg=-Wl,--no-gc-sections',
|
|
#]
|
|
|
|
[profile.release-max-perf.package.conduit_macros]
|
|
inherits = "release-max-perf.build-override"
|
|
#rustflags = [
|
|
# '-Crelocation-model=pic',
|
|
# '-Ctarget-feature=-crt-static',
|
|
#]
|
|
|
|
[profile.bench]
|
|
inherits = "release"
|
|
#rustflags = [
|
|
# "-Cremark=all",
|
|
# '-Ztime-passes',
|
|
# '-Ztime-llvm-passes',
|
|
#]
|
|
|
|
###############################################################################
|
|
#
|
|
# Developer profile
|
|
#
|
|
|
|
# To enable hot-reloading:
|
|
# 1. Uncomment all of the rustflags here.
|
|
# 2. Uncomment crate-type=dylib in src/*/Cargo.toml and deps/rust-rocksdb/Cargo.toml
|
|
#
|
|
# opt-level, mir-opt-level, validate-mir are not known to interfere with reloading
|
|
# and can be raised if build times are tolerable.
|
|
|
|
[profile.dev]
|
|
debug = "full"
|
|
opt-level = 0
|
|
panic = "unwind"
|
|
debug-assertions = true
|
|
incremental = true
|
|
codegen-units = 64
|
|
#rustflags = [
|
|
# '--cfg', 'conduit_mods',
|
|
# '-Ztime-passes',
|
|
# '-Zmir-opt-level=0',
|
|
# '-Zvalidate-mir=false',
|
|
# '-Ztls-model=global-dynamic',
|
|
# '-Cprefer-dynamic=true',
|
|
# '-Zstaticlib-prefer-dynamic=true',
|
|
# '-Zstaticlib-allow-rdylib-deps=true',
|
|
# '-Zpacked-bundled-libs=false',
|
|
# '-Zplt=true',
|
|
# '-Crpath=true',
|
|
# '-Clink-arg=-Wl,--as-needed',
|
|
# '-Clink-arg=-Wl,--allow-shlib-undefined',
|
|
# '-Clink-arg=-Wl,-z,keep-text-section-prefix',
|
|
# '-Clink-arg=-Wl,-z,lazy',
|
|
#]
|
|
|
|
[profile.dev.package.conduit_core]
|
|
inherits = "dev"
|
|
incremental = false
|
|
#rustflags = [
|
|
# '--cfg', 'conduit_mods',
|
|
# '-Ztime-passes',
|
|
# '-Zmir-opt-level=0',
|
|
# '-Ztls-model=initial-exec',
|
|
# '-Cprefer-dynamic=true',
|
|
# '-Zstaticlib-prefer-dynamic=true',
|
|
# '-Zstaticlib-allow-rdylib-deps=true',
|
|
# '-Zpacked-bundled-libs=false',
|
|
# '-Zplt=true',
|
|
# '-Clink-arg=-Wl,--as-needed',
|
|
# '-Clink-arg=-Wl,--allow-shlib-undefined',
|
|
# '-Clink-arg=-Wl,-z,lazy',
|
|
# '-Clink-arg=-Wl,-z,unique',
|
|
# '-Clink-arg=-Wl,-z,nodlopen',
|
|
# '-Clink-arg=-Wl,-z,nodelete',
|
|
#]
|
|
|
|
[profile.dev.package.conduit]
|
|
inherits = "dev"
|
|
incremental = false
|
|
#rustflags = [
|
|
# '--cfg', 'conduit_mods',
|
|
# '-Ztime-passes',
|
|
# '-Zmir-opt-level=0',
|
|
# '-Zvalidate-mir=false',
|
|
# '-Ztls-model=global-dynamic',
|
|
# '-Cprefer-dynamic=true',
|
|
# '-Zexport-executable-symbols=true',
|
|
# '-Zplt=true',
|
|
# '-Crpath=true',
|
|
# '-Clink-arg=-Wl,--as-needed',
|
|
# '-Clink-arg=-Wl,--allow-shlib-undefined',
|
|
# '-Clink-arg=-Wl,--export-dynamic',
|
|
# '-Clink-arg=-Wl,-z,lazy',
|
|
#]
|
|
|
|
[profile.dev.package.rust-rocksdb-uwu]
|
|
inherits = "dev"
|
|
debug = 'limited'
|
|
incremental = false
|
|
codegen-units = 1
|
|
opt-level = 'z'
|
|
#rustflags = [
|
|
# '--cfg', 'conduit_mods',
|
|
# '-Ztls-model=initial-exec',
|
|
# '-Cprefer-dynamic=true',
|
|
# '-Zstaticlib-prefer-dynamic=true',
|
|
# '-Zstaticlib-allow-rdylib-deps=true',
|
|
# '-Zpacked-bundled-libs=true',
|
|
# '-Zplt=true',
|
|
# '-Clink-arg=-Wl,--no-as-needed',
|
|
# '-Clink-arg=-Wl,--allow-shlib-undefined',
|
|
# '-Clink-arg=-Wl,-z,lazy',
|
|
# '-Clink-arg=-Wl,-z,nodlopen',
|
|
# '-Clink-arg=-Wl,-z,nodelete',
|
|
#]
|
|
|
|
[profile.dev.package.'*']
|
|
inherits = "dev"
|
|
debug = 'limited'
|
|
incremental = false
|
|
codegen-units = 1
|
|
opt-level = 'z'
|
|
#rustflags = [
|
|
# '--cfg', 'conduit_mods',
|
|
# '-Ztls-model=global-dynamic',
|
|
# '-Cprefer-dynamic=true',
|
|
# '-Zstaticlib-prefer-dynamic=true',
|
|
# '-Zstaticlib-allow-rdylib-deps=true',
|
|
# '-Zpacked-bundled-libs=true',
|
|
# '-Zplt=true',
|
|
# '-Clink-arg=-Wl,--as-needed',
|
|
# '-Clink-arg=-Wl,-z,lazy',
|
|
# '-Clink-arg=-Wl,-z,nodelete',
|
|
#]
|
|
|
|
# primarily used for CI
|
|
[profile.test]
|
|
inherits = "dev"
|
|
codegen-units = 16
|
|
incremental = false
|
|
|
|
[profile.test.package.'*']
|
|
inherits = "dev"
|
|
debug = 0
|
|
codegen-units = 16
|
|
incremental = false
|
|
|
|
###############################################################################
|
|
#
|
|
# Linting
|
|
#
|
|
|
|
[workspace.lints.rust]
|
|
absolute-paths-not-starting-with-crate = "warn"
|
|
#box-pointers = "warn"
|
|
deprecated-in-future = "warn"
|
|
elided-lifetimes-in-paths = "warn"
|
|
explicit-outlives-requirements = "warn"
|
|
ffi-unwind-calls = "warn"
|
|
keyword-idents = "warn"
|
|
macro-use-extern-crate = "warn"
|
|
meta-variable-misuse = "warn"
|
|
missing-abi = "warn"
|
|
#missing-copy-implementations = "warn" # TODO
|
|
#missing-debug-implementations = "warn" # TODO
|
|
non-ascii-idents = "warn"
|
|
rust-2021-incompatible-closure-captures = "warn"
|
|
rust-2021-incompatible-or-patterns = "warn"
|
|
rust-2021-prefixes-incompatible-syntax = "warn"
|
|
rust-2021-prelude-collisions = "warn"
|
|
single-use-lifetimes = "warn"
|
|
trivial-casts = "warn"
|
|
trivial-numeric-casts = "warn"
|
|
unit-bindings = "warn"
|
|
#unnameable-types = "warn" # TODO
|
|
unreachable-pub = "warn"
|
|
unsafe-op-in-unsafe-fn = "warn"
|
|
unstable-features = "warn"
|
|
unused-extern-crates = "warn"
|
|
unused-import-braces = "warn"
|
|
unused-lifetimes = "warn"
|
|
unused-macro-rules = "warn"
|
|
unused-qualifications = "warn"
|
|
#unused-results = "warn" # TODO
|
|
|
|
## some sadness
|
|
let_underscore_drop = "allow"
|
|
missing_docs = "allow"
|
|
# cfgs cannot be limited to expected cfgs or their de facto non-transitive/opt-in use-case e.g.
|
|
# tokio_unstable will warn.
|
|
unexpected_cfgs = "allow"
|
|
# this seems to suggest broken code and is not working correctly
|
|
unused_braces = "allow"
|
|
# buggy, but worth checking on occasionally
|
|
unused_crate_dependencies = "allow"
|
|
unsafe_code = "allow"
|
|
variant_size_differences = "allow"
|
|
|
|
#######################################
|
|
#
|
|
# Clippy lints
|
|
#
|
|
|
|
[workspace.lints.clippy]
|
|
|
|
###################
|
|
cargo = { level = "warn", priority = -1 }
|
|
|
|
## some sadness
|
|
multiple_crate_versions = { level = "allow", priority = 1 }
|
|
|
|
###################
|
|
complexity = { level = "warn", priority = -1 }
|
|
|
|
###################
|
|
correctness = { level = "warn", priority = -1 }
|
|
|
|
###################
|
|
nursery = { level = "warn", priority = -1 }
|
|
|
|
## some sadness
|
|
missing_const_for_fn = { level = "allow", priority = 1 } # TODO
|
|
option_if_let_else = { level = "allow", priority = 1 } # TODO
|
|
redundant_pub_crate = { level = "allow", priority = 1 } # TODO
|
|
significant_drop_in_scrutinee = { level = "allow", priority = 1 } # TODO
|
|
significant_drop_tightening = { level = "allow", priority = 1 } # TODO
|
|
|
|
###################
|
|
pedantic = { level = "warn", priority = -1 }
|
|
|
|
## some sadness
|
|
doc_markdown = { level = "allow", priority = 1 }
|
|
enum_glob_use = { level = "allow", priority = 1 }
|
|
if_not_else = { level = "allow", priority = 1 }
|
|
if_then_some_else_none = { level = "allow", priority = 1 }
|
|
inline_always = { level = "allow", priority = 1 }
|
|
missing_docs_in_private_items = { level = "allow", priority = 1 }
|
|
missing_errors_doc = { level = "allow", priority = 1 }
|
|
missing_panics_doc = { level = "allow", priority = 1 }
|
|
module_name_repetitions = { level = "allow", priority = 1 }
|
|
no_effect_underscore_binding = { level = "allow", priority = 1 }
|
|
similar_names = { level = "allow", priority = 1 }
|
|
struct_field_names = { level = "allow", priority = 1 }
|
|
unnecessary_wraps = { level = "allow", priority = 1 }
|
|
unused_async = { level = "allow", priority = 1 }
|
|
|
|
###################
|
|
perf = { level = "warn", priority = -1 }
|
|
|
|
###################
|
|
#restriction = "warn"
|
|
|
|
#allow_attributes = "warn" # UNSTABLE
|
|
arithmetic_side_effects = "warn"
|
|
as_conversions = "warn"
|
|
as_underscore = "warn"
|
|
assertions_on_result_states = "warn"
|
|
dbg_macro = "warn"
|
|
default_union_representation = "warn"
|
|
deref_by_slicing = "warn"
|
|
empty_drop = "warn"
|
|
empty_structs_with_brackets = "warn"
|
|
exit = "warn"
|
|
filetype_is_file = "warn"
|
|
float_cmp_const = "warn"
|
|
fn_to_numeric_cast_any = "warn"
|
|
format_push_string = "warn"
|
|
get_unwrap = "warn"
|
|
impl_trait_in_params = "warn"
|
|
let_underscore_untyped = "warn"
|
|
lossy_float_literal = "warn"
|
|
mem_forget = "warn"
|
|
missing_assert_message = "warn"
|
|
mutex_atomic = "warn"
|
|
pub_without_shorthand = "warn"
|
|
rc_buffer = "warn"
|
|
rc_mutex = "warn"
|
|
redundant_type_annotations = "warn"
|
|
rest_pat_in_fully_bound_structs = "warn"
|
|
semicolon_outside_block = "warn"
|
|
str_to_string = "warn"
|
|
string_lit_chars_any = "warn"
|
|
string_slice = "warn"
|
|
string_to_string = "warn"
|
|
suspicious_xor_used_as_pow = "warn"
|
|
tests_outside_test_module = "warn"
|
|
try_err = "warn"
|
|
undocumented_unsafe_blocks = "warn"
|
|
unnecessary_safety_comment = "warn"
|
|
unnecessary_safety_doc = "warn"
|
|
unnecessary_self_imports = "warn"
|
|
unneeded_field_pattern = "warn"
|
|
unseparated_literal_suffix = "warn"
|
|
#unwrap_used = "warn" # TODO
|
|
verbose_file_reads = "warn"
|
|
|
|
###################
|
|
style = { level = "warn", priority = -1 }
|
|
|
|
## some sadness
|
|
# trivial assertions are quite alright
|
|
assertions_on_constants = { level = "allow", priority = 1 }
|
|
module_inception = { level = "allow", priority = 1 }
|
|
|
|
###################
|
|
suspicious = { level = "warn", priority = -1 }
|
|
|
|
## some sadness
|
|
let_underscore_future = { level = "allow", priority = 1 }
|