combine service/users data w/ mod unit split sliding sync related out of service/users instrument database entry points remove increment crap from database interface de-wrap all database get() calls de-wrap all database insert() calls de-wrap all database remove() calls refactor database interface for async streaming add query key serializer for database implement Debug for result handle add query deserializer for database add deserialization trait for option handle start a stream utils suite de-wrap/asyncify/type-query count_one_time_keys() de-wrap/asyncify users count add admin query users command suite de-wrap/asyncify users exists de-wrap/partially asyncify user filter related asyncify/de-wrap users device/keys related asyncify/de-wrap user auth/misc related asyncify/de-wrap users blurhash asyncify/de-wrap account_data get; merge Data into Service partial asyncify/de-wrap uiaa; merge Data into Service partially asyncify/de-wrap transaction_ids get; merge Data into Service partially asyncify/de-wrap key_backups; merge Data into Service asyncify/de-wrap pusher service getters; merge Data into Service asyncify/de-wrap rooms alias getters/some iterators asyncify/de-wrap rooms directory getters/iterator partially asyncify/de-wrap rooms lazy-loading partially asyncify/de-wrap rooms metadata asyncify/dewrap rooms outlier asyncify/dewrap rooms pdu_metadata dewrap/partially asyncify rooms read receipt de-wrap rooms search service de-wrap/partially asyncify rooms user service partial de-wrap rooms state_compressor de-wrap rooms state_cache de-wrap room state et al de-wrap rooms timeline service additional users device/keys related de-wrap/asyncify sender asyncify services refactor database to TryFuture/TryStream refactor services for TryFuture/TryStream asyncify api handlers additional asyncification for admin module abstract stream related; support reverse streams additional stream conversions asyncify state-res related Signed-off-by: Jason Volk <jason@zemos.net>
898 lines
21 KiB
TOML
898 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.82.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
|
|
|
|
# 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.1"
|
|
|
|
[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.20"
|
|
default-features = false
|
|
features = [
|
|
"std",
|
|
"derive",
|
|
"help",
|
|
"usage",
|
|
"error-context",
|
|
"string",
|
|
]
|
|
|
|
[workspace.dependencies.futures]
|
|
version = "0.3.30"
|
|
default-features = false
|
|
features = ["std"]
|
|
|
|
[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.5.0"
|
|
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 = "e7db44989d68406393270d3a91815597385d3acb"
|
|
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-msc2409",
|
|
"unstable-msc2448",
|
|
"unstable-msc2666",
|
|
"unstable-msc2867",
|
|
"unstable-msc2870",
|
|
"unstable-msc3026",
|
|
"unstable-msc3061",
|
|
"unstable-msc3245",
|
|
"unstable-msc3266",
|
|
"unstable-msc3381", # polls
|
|
"unstable-msc3489", # beacon / live location
|
|
"unstable-msc3575",
|
|
"unstable-msc4075",
|
|
"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 = "d87938bfddc26377dd7fdf14bbcd345f3ab19442"
|
|
default-features = false
|
|
features = ["unprefixed_malloc_on_supported_platforms"]
|
|
[workspace.dependencies.tikv-jemallocator]
|
|
git = "https://github.com/girlbossceo/jemallocator"
|
|
rev = "d87938bfddc26377dd7fdf14bbcd345f3ab19442"
|
|
default-features = false
|
|
features = ["unprefixed_malloc_on_supported_platforms"]
|
|
[workspace.dependencies.tikv-jemalloc-ctl]
|
|
git = "https://github.com/girlbossceo/jemallocator"
|
|
rev = "d87938bfddc26377dd7fdf14bbcd345f3ab19442"
|
|
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.1"
|
|
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.89"
|
|
|
|
#
|
|
# 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"
|
|
strip = false
|
|
opt-level = 0
|
|
codegen-units = 16
|
|
incremental = false
|
|
|
|
[profile.test.package.'*']
|
|
inherits = "dev"
|
|
debug = 0
|
|
strip = false
|
|
opt-level = 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
|
|
too_long_first_doc_paragraph = { level = "allow", priority = 1 }
|
|
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 }
|
|
single_match_else = { 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 }
|