[workspace] resolver = "3" members = ["crates/*", "crates/*/fuzz", "task/*"] default-members = ["crates/*"] [workspace.package] # explicitly set a dummy version so nix build tasks using the workspace don't need to each set it version = "0.0.0" authors = ["Tommi Virtanen "] license = "Apache-2.0" homepage = "https://kantodb.com" repository = "https://git.kantodb.com/kantodb/kantodb" edition = "2024" rust-version = "1.85.0" [workspace.dependencies] anyhow = "1.0.89" arbitrary = { version = "1.4.1", features = [ "derive", ] } # sync major version against [`libfuzzer-sys`] re-export or fuzzing will break. arbitrary-arrow = { version = "0.1.0", path = "crates/arbitrary-arrow" } arrow = "54.2.0" async-trait = "0.1.83" clap = { version = "4.5.19", features = ["derive", "env"] } dashmap = "6.1.0" datafusion = "46.0.1" duplicate = "2.0.0" futures = "0.3.30" futures-lite = "2.3.0" gat-lending-iterator = "0.1.6" hex = "0.4.3" ignore = "0.4.23" indexmap = "2.7.0" # sync major version against [`rkyv`] feature `indexmap-2` kanto = { version = "0.1.0", path = "crates/kanto" } kanto-backend-rocksdb = { version = "0.1.0", path = "crates/backend-rocksdb" } kanto-index-format-v1 = { version = "0.1.0", path = "crates/index-format-v1" } kanto-key-format-v1 = { version = "0.1.0", path = "crates/key-format-v1" } kanto-meta-format-v1 = { version = "0.1.0", path = "crates/meta-format-v1" } kanto-protocol-postgres = { version = "0.1.0", path = "crates/protocol-postgres" } kanto-record-format-v1 = { version = "0.1.0", path = "crates/record-format-v1" } kanto-testutil = { version = "0.1.0", path = "crates/testutil" } kanto-tunables = { version = "0.1.0", path = "crates/tunables" } libc = "0.2.153" libfuzzer-sys = "0.4.9" librocksdb-sys = { version = "0.17.1", features = ["lz4", "static", "zstd"] } libtest-mimic = "0.8.1" maybe-tracing = { version = "0.1.0", path = "crates/maybe-tracing" } parking_lot = "0.12.3" paste = "1.0.15" pgwire = "0.28.0" regex = "1.10.6" rkyv = { version = "0.8.10", features = ["unaligned", "indexmap-2"] } rkyv_util = { version = "0.1.0-alpha.1" } rocky = { version = "0.1.0", path = "crates/rocky" } smallvec = { version = "1.13.2", features = ["union"] } sqllogictest = "0.28.0" tempfile = "3.10.1" test-log = { version = "0.2.16", default-features = false, features = [ "trace", ] } thiserror = "2.0.6" tokio = { version = "1.40.0", features = ["macros", "rt-multi-thread"] } tracing = "0.1.40" tracing-subscriber = { version = "0.3.18", default-features = false, features = [ "env-filter", "fmt", "json", ] } tree-sitter = "0.23.0" tree-sitter-md = { version = "0.3.2", features = ["parser"] } tree-sitter-rust = "0.23.0" unindent = "0.2.3" walkdir = "2.5.0" [workspace.lints.rust] absolute_paths_not_starting_with_crate = "warn" ambiguous_negative_literals = "warn" closure_returning_async_block = "warn" dead_code = "warn" deprecated_safe_2024 = "deny" elided_lifetimes_in_paths = "warn" explicit_outlives_requirements = "warn" future_incompatible = { level = "warn", priority = -1 } if_let_rescope = "warn" impl_trait_redundant_captures = "warn" keyword_idents_2024 = "warn" let_underscore_drop = "warn" macro_use_extern_crate = "deny" meta_variable_misuse = "warn" missing_abi = "deny" missing_copy_implementations = "allow" # TODO switch this to warn #urgency/low missing_debug_implementations = "allow" # TODO switch this to warn #urgency/low missing_docs = "warn" missing_unsafe_on_extern = "deny" non_ascii_idents = "forbid" redundant_imports = "warn" redundant_lifetimes = "warn" rust_2018_idioms = { level = "warn", priority = -1 } trivial_casts = "warn" trivial_numeric_casts = "warn" unexpected_cfgs = { level = "allow", check-cfg = ["cfg(kani)"] } unit_bindings = "warn" unnameable_types = "warn" unreachable_pub = "warn" unsafe_attr_outside_unsafe = "deny" unsafe_code = "deny" unsafe_op_in_unsafe_fn = "deny" unused_crate_dependencies = "allow" # TODO false positives for packages with bin/lib/integration tests; desirable because this catches things `cargo-shear` does not #waiting #ecosystem/rust #severity/low #urgency/low unused_extern_crates = "warn" unused_import_braces = "warn" unused_lifetimes = "warn" unused_macro_rules = "warn" unused_qualifications = "warn" unused_results = "warn" variant_size_differences = "warn" [workspace.lints.clippy] all = { level = "warn", priority = -2 } allow_attributes = "warn" arithmetic_side_effects = "warn" as_conversions = "warn" as_underscore = "warn" assertions_on_result_states = "deny" cargo = { level = "warn", priority = -1 } cast_lossless = "warn" cast_possible_truncation = "warn" cfg_not_test = "warn" complexity = { level = "warn", priority = -1 } dbg_macro = "warn" default_numeric_fallback = "warn" disallowed_script_idents = "deny" else_if_without_else = "warn" empty_drop = "deny" empty_enum_variants_with_brackets = "warn" empty_structs_with_brackets = "warn" error_impl_error = "warn" exhaustive_enums = "warn" exhaustive_structs = "warn" exit = "deny" expect_used = "allow" # TODO switch this to warn field_scoped_visibility_modifiers = "allow" # TODO switch this to warn #urgency/medium float_cmp_const = "warn" fn_to_numeric_cast_any = "deny" format_push_string = "warn" host_endian_bytes = "deny" if_not_else = "allow" if_then_some_else_none = "warn" indexing_slicing = "warn" infinite_loop = "warn" integer_division = "warn" iter_over_hash_type = "warn" large_include_file = "warn" let_underscore_must_use = "warn" let_underscore_untyped = "warn" lossy_float_literal = "deny" manual_is_power_of_two = "warn" map_err_ignore = "warn" map_unwrap_or = "allow" match_like_matches_macro = "allow" mem_forget = "deny" missing_asserts_for_indexing = "warn" missing_const_for_fn = "warn" missing_errors_doc = "allow" # TODO write docstrings, remove this #urgency/medium missing_inline_in_public_items = "allow" # TODO consider warn #urgency/low #performance missing_panics_doc = "allow" # TODO write docstrings, remove this #urgency/medium mixed_read_write_in_expression = "deny" module_name_repetitions = "warn" modulo_arithmetic = "warn" multiple_crate_versions = "allow" # TODO i wish there was a way to fix this #urgency/low multiple_unsafe_ops_per_block = "deny" mutex_atomic = "warn" non_ascii_literal = "deny" non_zero_suggestions = "warn" panic = "warn" panic_in_result_fn = "warn" # note, this allows `debug_assert` but not `assert` partial_pub_fields = "warn" pathbuf_init_then_push = "warn" pedantic = { level = "warn", priority = -1 } perf = { level = "warn", priority = -1 } print_stderr = "warn" print_stdout = "warn" pub_without_shorthand = "warn" rc_buffer = "warn" rc_mutex = "deny" redundant_type_annotations = "warn" ref_patterns = "warn" renamed_function_params = "warn" rest_pat_in_fully_bound_structs = "warn" same_name_method = "deny" semicolon_inside_block = "warn" separated_literal_suffix = "warn" set_contains_or_insert = "warn" significant_drop_in_scrutinee = "warn" similar_names = "allow" # too eager str_to_string = "warn" string_add = "warn" string_lit_chars_any = "warn" string_slice = "warn" string_to_string = "warn" style = { level = "warn", priority = -1 } suspicious = { level = "warn", priority = -1 } suspicious_xor_used_as_pow = "warn" tests_outside_test_module = "allow" # TODO to switch this to warn #waiting #urgency/low #severity/low todo = "warn" try_err = "warn" undocumented_unsafe_blocks = "allow" # TODO write safety docs, switch this to warn #urgency/low unimplemented = "warn" unnecessary_safety_comment = "warn" unnecessary_safety_doc = "warn" unnecessary_self_imports = "deny" unreachable = "deny" unused_result_ok = "warn" unused_trait_names = "warn" unwrap_in_result = "warn" unwrap_used = "warn" use_debug = "warn" verbose_file_reads = "warn" wildcard_imports = "warn" [workspace.metadata.spellcheck] config = "cargo-spellcheck.toml" [workspace.metadata.crane] name = "kantodb" [profile.release] lto = true