Luigit
repositories / smith

smith

There are many coding harnesses - but this one is fast

owned by admin

Cargo.toml

Raw
[workspace]
members = [
    "smith",
    "smith-core",
    "smith-ai",
    "smith-ui",
    "smith-tui",
    "smith-rpc",
    "smith-harness",
    "smith-cli",
    "smith-alloc",
    "smith-bench",
    "plugins/echo",
    "xtask",
]
resolver = "3"

# Bare cargo commands operate on host crates; wasm guest crates build
# only under their target (`cargo x check`, `smith plugin build`).
default-members = [
    "smith",
    "smith-core",
    "smith-ai",
    "smith-ui",
    "smith-tui",
    "smith-rpc",
    "smith-harness",
    "smith-cli",
    "smith-alloc",
    "smith-bench",
    "xtask",
]

[workspace.package]
edition = "2024"
version = "0.1.0"
license = "Apache-2.0"

# Dependency tiers — law in .system/RULES.md (Dependencies); concrete map lives here.
# vocabulary: ecosystem IR, sanctioned once, facade-exempt.
# engines: one owning crate each, app vocabulary at boundaries, one stack per concern.
# leaf: small utilities, direct use.
# dev: tests and benches only.
# build tools (cargo-machete, cargo-deny, cargo-audit, wasm-tools):
#   xtask-installed --locked, never crate deps.

[workspace.dependencies]
# vocabulary
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["preserve_order"] }
futures = "0.3"
thiserror = "2"
tracing = "0.1"
url = "2"

# engines
ureq = { version = "~3.4", default-features = false, features = [
    "rustls",
] } # smith-harness, http stack; tilde pin: the chunk-gap timeout uses ureq::unversioned
ciborium = "0.2" # smith-core, cbor session codec
wasmtime = { version = "49", default-features = false, features = [
    "runtime",
    "component-model",
    "cranelift",
    "demangle",
] } # smith-harness, wasm plugin engine
tracing-subscriber = { version = "0.3", features = ["env-filter"] } # smith-cli, log output
similar = "2" # diff
ignore = "0.4" # search stack
grep = "0.4" # search stack
grep-regex = "0.1" # search stack
grep-searcher = "0.1" # search stack
oauth2 = "4" # smith-ai, oauth flows
zstd = "0.13" # compression
zip = { version = "2", default-features = false, features = ["deflate"] } # archives
tar = "0.4" # archives
flate2 = "1" # archives
jsonschema = "0.28" # smith-ai, catalog validation
sha2 = "0.10" # checksums
ratatui = "0.29" # smith-tui, terminal stack (widgets)
crossterm = "0.28" # smith-tui, terminal stack (backend)
unicode-width = "0.2" # smith-tui, terminal stack
unicode-segmentation = "1" # smith-tui, terminal stack
syntastica = { version = "0.6", default-features = false, features = [
    "runtime-c2rust",
] } # smith-tui, highlighting
syntastica-parsers = "0.6" # smith-tui, highlighting
# wasmtime arrives with the wasm plugin law; owner smith-harness.

# leaf utilities
uuid = { version = "1", features = ["v7", "serde"] }
dirs = "7"
fs2 = "0.4"
nix = { version = "0.31", features = ["signal"] } # unix, smith-core process handling
clap = { version = "4", features = ["derive", "env"] }
clap_complete = "4"
fuzzy-matcher = "0.3"

# dev
insta = "1"
archunit = "0.0.1"
assert_cmd = "2"
predicates = "3"
proptest = "1"
criterion = "0.8"
gungraun = "0.19" # smith-bench, callgrind instruction budgets; runner installed by xtask

# Mutation-testing profile: lean debug build, many rebuilds.
[profile.mutants]
inherits = "test"
debug = "none"
strip = "debuginfo"

[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1
strip = "symbols"
panic = "abort"

# Benches keep symbols: callgrind attributes instructions to functions.
[profile.bench]
inherits = "release"
debug = "line-tables-only"
strip = false

[profile.release.package."*"]
opt-level = 3