[workspace] resolver = "2" members = [ "crates/edn", "crates/core-traits", "crates/core", "crates/mino", "crates/mino/vendor/gc", "crates/mino/vendor/gc_derive", "crates/script", "crates/sqlite/*", "crates/pg/pg_mentat", "crates/pg/mentatd", "crates/duckdb", "crates/duckdb/store", # Scale-benchmark driver: a member (shares Cargo.lock) but NOT a default member. "benchmarks/scale/runner", ] default-members = [ "crates/edn", "crates/core-traits", "crates/core", "crates/mino", "crates/script", # Explicit, not `crates/sqlite/*`: that glob would pull in crates/sqlite/ext # (the SQLite loadable extension), whose `mentat/mino` feature would then be # unified into every plain root build/test. Build it with `-p mentat_sqlite_ext`. "crates/sqlite/cli", "crates/sqlite/db", "crates/sqlite/db-traits", "crates/sqlite/ffi", "crates/sqlite/mentat", "crates/sqlite/public-traits", "crates/sqlite/query-algebrizer", "crates/sqlite/query-algebrizer-traits", "crates/sqlite/query-projector", "crates/sqlite/query-projector-traits", "crates/sqlite/query-pull", "crates/sqlite/query-pull-traits", "crates/sqlite/query-sql", "crates/sqlite/sql", "crates/sqlite/sql-traits", "crates/sqlite/transaction", "crates/pg/mentatd", # DuckDB storage backend: no duckdb dependency, so it builds and tests # with the workspace. The extension (crates/duckdb) stays non-default. "crates/duckdb/store", ] # crates/sqlite/* is a glob; fixtures/ is shared test data, not a crate. exclude = ["crates/sqlite/fixtures", "crates/duckdb/store/tests-harness"] [workspace.package] version = "1.16.0" edition = "2021" # MSRV of the published (crates.io) crates. pg_mentat overrides it with 1.96 # (pgrx 0.19); rust-toolchain.toml pins the build toolchain. rust-version = "1.88" license = "Apache-2.0" repository = "https://codeberg.org/gregburd/mentat" authors = [ "Richard Newman ", "Nicholas Alexander ", "Victor Porof ", "Jordan Santell ", "Joe Walker ", "Emily Toop ", "Grisha Kruglov ", "Kit Cambridge ", "Edouard Oger ", "Thom Chiovoloni ", "Gregory Burd ", ] [workspace.dependencies] # § 1.13 — one version per shared third-party dep (higher of each pair). itertools = "0.15" ordered-float = "5.3" uuid = "1.25" chrono = "0.4.45" peg = "0.8.6" pretty = "0.12.5" indexmap = "2.14" bytes = "1.12" serde = "1.0.229" thiserror = "2.0" rusqlite = "0.40" mino-rs = { path = "crates/mino" } [workspace.lints.clippy] # Panic prevention (to be promoted to deny as code is cleaned up) unwrap_used = "allow" expect_used = "allow" panic = "allow" panic_in_result_fn = "allow" unimplemented = "deny" # Code hygiene dbg_macro = "deny" todo = "deny" print_stdout = "deny" print_stderr = "deny" # Safety await_holding_lock = "deny" large_futures = "deny" exit = "deny" mem_forget = "deny" # Temporarily allowed (pre-existing, non-safety, to be fixed incrementally) type_complexity = "allow" needless_borrow = "allow" needless_pass_by_value = "allow" redundant_closure_for_method_calls = "allow" unnecessary_wraps = "allow" manual_let_else = "allow" single_match_else = "allow" too_many_lines = "allow" too_many_arguments = "allow" get_first = "allow" collapsible_match = "allow" collapsible_else_if = "allow" single_match = "allow" cloned_ref_to_slice_refs = "allow" unnecessary_cast = "allow" collapsible_str_replace = "allow" needless_range_loop = "allow" manual_strip = "allow" unnecessary_map_or = "allow" useless_format = "allow" [profile.release] opt-level = 3 lto = "fat" codegen-units = 1 [profile.release-dev] inherits = "release" lto = "thin" codegen-units = 16