blob: b01a02725b908e5b50b934f536c5f5d1f6d7a37a [file] [log] [blame]
[workspace]
members = [
"submerge/crdt",
"submerge/crdt/fuzz",
"submerge/distributed_time",
"submerge/distributed_time/fuzz",
"submerge/submerge",
"submerge/submerge/fuzz",
"submerge/submerge_java",
"submerge/submerge_internal_proto",
"build_scripts",
]
default-members = ["build_scripts"]
resolver = "2"
[workspace.lints.rust]
unsafe_code = "deny"
missing_docs = "deny"
trivial_casts = "deny"
trivial_numeric_casts = "deny"
unused_extern_crates = "deny"
unused_import_braces = "deny"
unused_results = "deny"
unexpected_cfgs = { level = "warn", check-cfg = ["cfg(fuzzing)", "cfg(rust_analyzer)"] }
unsafe_op_in_unsafe_fn = "forbid"
[workspace.lints.clippy]
cast_possible_truncation = "warn"
cast_possible_wrap = "warn"
cast_precision_loss = "warn"
cast_sign_loss = "warn"
indexing_slicing = "deny"
missing_safety_doc = "deny" # This should really be "forbid", but some macros are not compatible
multiple_unsafe_ops_per_block = "deny"
panic = "deny"
undocumented_unsafe_blocks = "deny" # This should really be "forbid", but some macros are not compatible
unnecessary_safety_comment = "deny"
unnecessary_safety_doc = "deny"
unwrap_used = "deny"
[workspace.package]
version = "0.1.0"
edition = "2021"
publish = false
license = "Apache-2.0"
[workspace.dependencies]
# Dependencies from this repo
cmd_runner = { path = "../common/cmd_runner" }
crdt = { path = "submerge/crdt" }
distributed_time = { path = "submerge/distributed_time" }
handle_map = { path = "../common/handle_map" }
pourover = { path = "../common/pourover" }
submerge = { path = "submerge/submerge" }
submerge_internal_proto = { path = "submerge/submerge_internal_proto" }
# Dependencies from crates.io
anyhow = "1.0.86"
arbitrary = { version = "1.3.2", features = ["derive"] }
arrayvec = "0.7.4"
bincode = "1.3.3"
clap = { version = "4.5.13", features = ["derive"] }
derive_fuzztest = "0.1.3"
derive-where = "1.2.7"
env_logger = "0.11.7"
hex = "0.4.3"
itertools = "0.13.0"
jni = "0.21.1"
lazy_static = "1.5.0"
libfuzzer-sys = "0.4"
log = "0.4.21"
num-traits = "0.2.17"
protobuf = "3.7.2"
protobuf-codegen = "3.7.2"
serde = { version = "1.0.193", features = ["serde_derive"] }
serde_json = "1.0.117"
thiserror = "1.0.61"
xshell = "0.2.6"
[profile.test]
# speed up test execution
opt-level = 3
[profile.bench]
# Use LTO to allow cross-crate inlining.
# fat vs thin: thin compiles a lot faster, and doesn't seem any slower.
lto = "thin"
# build profile optimized for size
[profile.release-min-size]
inherits = "release"
panic = "abort"
codegen-units = 1
lto = true
# z optimizes for size
opt-level = "z"
strip = true