holochain 0.7.0-dev.21

Holochain, a framework for distributed applications
Documentation
[package]
name = "holochain"
version = "0.7.0-dev.21"
description = "Holochain, a framework for distributed applications"
license = "CAL-1.0"
repository = "https://github.com/holochain/holochain"
documentation = "https://docs.rs/holochain"
authors = ["Holochain Core Dev Team <devcore@holochain.org>"]
edition = "2021"

# reminder - do not use workspace deps
[dependencies]
anyhow = "1.0"
async-trait = "0.1"
base64 = "0.22"
cfg-if = "1.0"
chrono = { version = "0.4.22", default-features = false, features = [
  "clock",
  "std",
  "oldtime",
  "serde",
] }
derive_more = { version = "2.0", features = ["display", "index"] }
either = "1.5.0"
futures = "0.3"
getrandom = "0.3"
holo_hash = { version = "^0.7.0-dev.8", path = "../holo_hash", features = [
  "full",
] }
holochain_cascade = { version = "^0.7.0-dev.21", default-features = false, path = "../holochain_cascade" }
holochain_conductor_api = { version = "^0.7.0-dev.20", path = "../holochain_conductor_api", default-features = false }
holochain_data = { version = "^0.7.0-dev.10", path = "../holochain_data", features = [
  "sqlite-encrypted",
] }
holochain_keystore = { version = "^0.7.0-dev.12", path = "../holochain_keystore", default-features = false }
holochain_p2p = { version = "^0.7.0-dev.21", default-features = false, path = "../holochain_p2p" }
holochain_sqlite = { version = "^0.7.0-dev.16", path = "../holochain_sqlite" }
holochain_serialized_bytes = "=0.0.56"
holochain_state = { version = "^0.7.0-dev.21", path = "../holochain_state" }
holochain_types = { version = "^0.7.0-dev.20", path = "../holochain_types" }
holochain_util = { version = "^0.7.0-dev.1", path = "../holochain_util" }
holochain_wasmer_host = { version = "=0.0.101", default-features = false, features = [
  "error_as_host",
] }
holochain_websocket = { version = "^0.7.0-dev.20", path = "../holochain_websocket" }
holochain_zome_types = { version = "^0.7.0-dev.12", path = "../holochain_zome_types", features = [
  "full",
] }
holochain_nonce = { version = "^0.7.0-dev.1", path = "../holochain_nonce" }
holochain_secure_primitive = { version = "^0.7.0-dev.1", path = "../holochain_secure_primitive" }
holochain_conductor_config = { version = "^0.7.0-dev.20", path = "../holochain_conductor_config", default-features = false }
holochain_timestamp = { version = "^0.7.0-dev.0", path = "../timestamp" }
human-panic = "2.0"
itertools = { version = "0.14" }
kitsune2_api = "0.4.0-dev.6"
kitsune2_core = "0.4.0-dev.6"
mockall = "0.13"
mr_bundle = { version = "^0.7.0-dev.1", path = "../mr_bundle", features = [
  "fs",
] }
must_future = "0.1.1"
nanoid = "0.4"
holochain_trace = { version = "^0.7.0-dev.1", path = "../holochain_trace" }
holochain_metrics = { version = "^0.7.0-dev.6", path = "../holochain_metrics" }
lair_keystore_api = "=0.6.3"
once_cell = "1.4.1"
one_err = "0.0.8"
parking_lot = "0.12"
rand = "0.9"
rand-utf8 = "0.0.2"
rusqlite = { version = "0.37" }
# Used to set a crypto provider for TLS connections.
rustls = "0.23.25"
serde = { version = "1.0", features = ["derive"] }
serde_bytes = "0.11.12"
serde_json = { version = "1.0", features = ["preserve_order"] }
serde_yaml = "0.9"
serde_with = { version = "3.12.0", features = ["json"] }
shrinkwraprs = "0.3.0"
sodoken = "0.1.0"
clap = "4.0"
strum = "0.27"
subtle-encoding = "0.5"
tempfile = "3.3"
thiserror = "2.0"
tokio = { version = "1.36.0", features = ["full"] }
tokio-stream = { version = "0.1", features = ["sync", "net"] }
task-motel = "0.1.0"
tracing = "0.1"
tracing-futures = "0.2.5"
tracing-subscriber = "0.3.16"
url2 = "0.0.6"
uuid = { version = "1.8", features = ["serde", "v4"] }
opentelemetry = "0.31"
indexmap = { version = "2.6.0", features = ["serde"] }
wasmer = { version = "6.0.1", default-features = false }
wasmer-middlewares = { version = "6.0.1", optional = true, default-features = false }

# Dependencies for test_utils / other optional deps
fixt = { version = "^0.7.0-dev.0", path = "../fixt", optional = true }
diff = { version = "0.1", optional = true }
hdk = { version = "^0.7.0-dev.13", path = "../hdk", optional = true }
matches = { version = "0.1.8", optional = true }
holochain_wasm_test_utils = { version = "^0.7.0-dev.21", path = "../test_utils/wasm", optional = true }
holochain_test_wasm_common = { version = "^0.7.0-dev.13", path = "../test_utils/wasm_common", optional = true }
unwrap_to = { version = "0.1.0", optional = true }
kitsune2_bootstrap_srv = { version = "0.4.0-dev.6", default-features = false, optional = true }
schemars = "0.9"

[target.'cfg(unix)'.dependencies]
sd-notify = "0.4"

[dev-dependencies]
holochain = { path = ".", default-features = false, features = [
  "test_utils",
  "slow_tests",
] }
holochain_state = { version = "^0.7.0-dev.21", path = "../holochain_state", features = [
  "test_utils",
] }

anyhow = "1.0"
assert_cmd = "2"
criterion = { version = "0.6", features = ["async_tokio"] }
ed25519-dalek = { version = "2", features = ["rand_core"] }
lair_keystore = "0.6.3"
pretty_assertions = "1.4"
test-case = "3.3"
tokio = { version = "1.36.0", features = ["full", "test-util"] }
tokio-tungstenite = "0.27"
predicates = "3.1"
assert2 = "0.3.15"
kitsune2_test_utils = "0.4.0-dev.6"
rand_dalek = { version = "0.8", package = "rand" }

[build-dependencies]
hdk = { version = "^0.7.0-dev.13", path = "../hdk" }
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0.51" }
chrono = { version = "0.4.6", features = ["serde"] }
hostname = "0.4"
lair_keystore = { version = "0.6.3", default-features = false, features = [
  "rusqlite-bundled-sqlcipher-vendored-openssl",
] }

[[bench]]
name = "bench"
harness = false

[[bench]]
name = "consistency"
harness = false

[lib]
name = "holochain"
path = "src/lib.rs"

[[bin]]
name = "holochain"
path = "src/bin/holochain/main.rs"

[lints]
workspace = true

[features]
default = ["sqlite-encrypted", "schema", "wasmer_sys", "transport-iroh"]

# Exposes additional functionality only needed for integration tests.
# This feature should be turned off for production builds.
test_utils = [
  "dep:fixt",
  "dep:diff",
  "hdk/test_utils",
  "holochain_sqlite/test_utils",
  "holochain_state/test_utils",
  "holochain_types/test_utils",
  "holochain_zome_types/test_utils",
  "holochain_cascade/test_utils",
  "holochain_conductor_api/test-utils",
  "holochain_p2p/test_utils",
  "dep:matches",
  "dep:holochain_test_wasm_common",
  "dep:holochain_wasm_test_utils",
  "dep:unwrap_to",
  "dep:kitsune2_bootstrap_srv",
  "holo_hash/fixturators",
]

fuzzing = []

# Wasm ribosome tests take > 60 seconds - let's only run them in CI
slow_tests = []

# What's slower than slow? We may choose to not run these tests in CI to speed things up.
glacial_tests = []

# Includes the wasm build script, which we don't need when not building wasms
build_wasms = ["holochain_wasm_test_utils/build"]
only_check_wasms = ["holochain_wasm_test_utils/only_check"]

# Enable schema generation for kitsune2 related types in the conductor config
schema = ["holochain_conductor_api/schema"]

# Enables at-rest encryption of the SQLite database.
# Incompatible with "sqlite".
sqlite-encrypted = [
  "rusqlite/bundled-sqlcipher-vendored-openssl",
  "holochain_keystore/sqlite-encrypted",
  "holo_hash/sqlite-encrypted",
  "holochain_cascade/sqlite-encrypted",
  "holochain_conductor_api/sqlite-encrypted",
  "holochain_p2p/sqlite-encrypted",
  "holochain_sqlite/sqlite-encrypted",
  "holochain_state/sqlite-encrypted",
  "holochain_types/sqlite-encrypted",
  "holochain_zome_types/sqlite-encrypted",
  "holochain_data/sqlite-encrypted",
]

# Compile SQLite from source rather than depending on a library.
# Incompatible with "sqlite-encrypted"
sqlite = [
  "rusqlite/bundled",
  "holo_hash/sqlite",
  "holochain_cascade/sqlite",
  "holochain_conductor_api/sqlite",
  "holochain_keystore/sqlite",
  "holochain_p2p/sqlite",
  "holochain_sqlite/sqlite",
  "holochain_state/sqlite",
  "holochain_types/sqlite",
  "holochain_zome_types/sqlite",
]

transport-iroh = [
  "holochain_p2p/transport-iroh",
  "holochain_cascade/transport-iroh",
]

transport-tx5-backend-go-pion = [
  "holochain_p2p/transport-tx5-backend-go-pion",
  "holochain_cascade/transport-tx5-backend-go-pion",
]

# Extremely verbose wasm memory read/write logging
wasmer_debug_memory = ["holochain_wasmer_host/debug_memory"]

# Enable wasm compiler
# Incompatible with "wasmer_wamr"
wasmer_sys = [
  "dep:wasmer-middlewares",
  "wasmer/default",
  "holochain_wasmer_host/wasmer_sys_dev",
]

# Enable wasm interpreter (experimental)
# Incompatible with "wasmer_sys"
wasmer_wamr = ["wasmer/wamr", "holochain_wasmer_host/wasmer_wamr"]

# Enable the unstable migration feature
unstable-migration = [
  "holochain_types/unstable-migration",
  "holochain_conductor_api/unstable-migration",
]

# Enable sharding for networks. This is currently considered an unstable feature
# and with the feature disabled you will only be able to configure nodes that have
# a full or empty arc.
unstable-sharding = []

sweettest = ["test_utils", "sqlite"]

# Enables tracing instrumentation
# (we experience segfaults in some tests if there is too much instrumentation)
instrument = []

unstable-functions = [
  "holochain_zome_types/unstable-functions",
  "holochain_wasm_test_utils/unstable-functions",
  "hdk/unstable-functions",
]

unstable-countersigning = [
  "hdk/unstable-countersigning",
  "holochain_zome_types/unstable-countersigning",
  "holochain_conductor_api/unstable-countersigning",
]