# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
rust-version = "1.85"
name = "freenet"
version = "0.2.94"
build = "build.rs"
publish = true
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Freenet core software"
readme = "README.md"
license-file = "LICENSE.md"
repository = "https://github.com/freenet/freenet-core"
resolver = "2"

[package.metadata.freenet]
min-compatible-version = "0.2.64"

[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/freenet-{ target }.tar.gz"
pkg-fmt = "tgz"
bin-dir = "freenet"

[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
pkg-url = "{ repo }/releases/download/v{ version }/freenet-{ target }.zip"
pkg-fmt = "zip"
bin-dir = "freenet.exe"

[features]
bench = []
bench_full = []
console-subscriber = ["dep:console-subscriber"]
default = [
    "redb",
    "trace",
    "websocket",
    "wasmtime-backend",
]
jemalloc-prof = [
    "tikv-jemallocator/profiling",
    "dep:tikv-jemalloc-ctl",
]
nightly_tests = []
simulation_tests = []
sqlite = ["sqlx"]
test-network = ["dep:freenet-test-network"]
testing = [
    "freenet-stdlib/testing",
    "parking_lot/deadlock_detection",
]
trace = [
    "tracing-subscriber",
    "tracing-appender",
]
trace-ot = [
    "opentelemetry-jaeger",
    "trace",
    "tracing-opentelemetry",
    "opentelemetry-otlp",
]
wasmtime-backend = ["dep:wasmtime"]
websocket = ["axum/ws"]

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

[[bin]]
name = "freenet"
path = "src/bin/freenet.rs"

[[example]]
name = "analyze_event_logs"
path = "examples/analyze_event_logs.rs"

[[test]]
name = "binstall_metadata"
path = "tests/binstall_metadata.rs"

[[test]]
name = "concurrent_streams_regression"
path = "tests/concurrent_streams_regression.rs"

[[test]]
name = "connection_cap"
path = "tests/connection_cap.rs"

[[test]]
name = "connectivity"
path = "tests/connectivity.rs"

[[test]]
name = "cross_compile_feature_split"
path = "tests/cross_compile_feature_split.rs"

[[test]]
name = "diagnose_connectivity"
path = "tests/diagnose_connectivity.rs"

[[test]]
name = "edge_case_state_sizes"
path = "tests/edge_case_state_sizes.rs"

[[test]]
name = "error_notification"
path = "tests/error_notification.rs"

[[test]]
name = "fdev_publish_e2e"
path = "tests/fdev_publish_e2e.rs"

[[test]]
name = "gateway_inbound_identity"
path = "tests/gateway_inbound_identity.rs"

[[test]]
name = "hosted_mode_export"
path = "tests/hosted_mode_export.rs"

[[test]]
name = "hosted_mode_import"
path = "tests/hosted_mode_import.rs"

[[test]]
name = "hosted_mode_isolation"
path = "tests/hosted_mode_isolation.rs"

[[test]]
name = "hosted_mode_migrate"
path = "tests/hosted_mode_migrate.rs"

[[test]]
name = "in_process_restart"
path = "tests/in_process_restart.rs"

[[test]]
name = "isolated_node_regression"
path = "tests/isolated_node_regression.rs"

[[test]]
name = "large_network"
path = "tests/large_network.rs"

[[test]]
name = "manual_network_test"
path = "tests/manual_network_test.rs"

[[test]]
name = "nat_subscription"
path = "tests/nat_subscription.rs"

[[test]]
name = "operations"
path = "tests/operations.rs"

[[test]]
name = "operations_before_join"
path = "tests/operations_before_join.rs"

[[test]]
name = "persistence_roundtrip"
path = "tests/persistence_roundtrip.rs"

[[test]]
name = "playwright_shell"
path = "tests/playwright_shell.rs"

[[test]]
name = "redb_migration"
path = "tests/redb_migration.rs"

[[test]]
name = "river_smoke"
path = "tests/river_smoke.rs"

[[test]]
name = "simulation_integration"
path = "tests/simulation_integration.rs"

[[test]]
name = "simulation_smoke"
path = "tests/simulation_smoke.rs"

[[test]]
name = "state_verification"
path = "tests/state_verification.rs"

[[test]]
name = "streaming_e2e"
path = "tests/streaming_e2e.rs"

[[test]]
name = "test_macro_example"
path = "tests/test_macro_example.rs"

[[test]]
name = "test_network_integration"
path = "tests/test_network_integration.rs"

[[test]]
name = "token_expiration"
path = "tests/token_expiration.rs"

[[test]]
name = "twenty_peer_validation"
path = "tests/twenty_peer_validation.rs"

[[bench]]
name = "transport_ci"
path = "benches/transport_ci.rs"
harness = false
required-features = ["bench"]

[[bench]]
name = "transport_extended"
path = "benches/transport_extended.rs"
harness = false
required-features = ["bench"]

[[bench]]
name = "transport_full"
path = "benches/transport_full.rs"
harness = false
required-features = [
    "bench",
    "bench_full",
]

[[bench]]
name = "transport_ledbat"
path = "benches/transport_ledbat.rs"
harness = false
required-features = ["bench"]

[[bench]]
name = "transport_manual"
path = "benches/transport_manual.rs"
required-features = ["bench"]

[dependencies.aes-gcm]
version = "0.10"

[dependencies.ahash]
version = "0.8"

[dependencies.anyhow]
version = "1"

[dependencies.argon2]
version = "0.5"
features = ["zeroize"]

[dependencies.axum]
version = "0.8"
features = [
    "http1",
    "matched-path",
    "query",
    "tower-log",
    "ws",
    "json",
]
default-features = false

[dependencies.bincode]
version = "1"

[dependencies.blake3]
version = "1"
features = [
    "std",
    "traits-preview",
]

[dependencies.boot-time]
version = "0.1.3"

[dependencies.bs58]
version = "0.5"

[dependencies.byteorder]
version = "1"

[dependencies.bytes]
version = "1"
features = ["serde"]

[dependencies.chacha20poly1305]
version = "0.10"

[dependencies.chrono]
version = "0.4"
default-features = true

[dependencies.ciborium]
version = "0.2"

[dependencies.clap]
version = "4"
features = [
    "derive",
    "env",
]

[dependencies.console-subscriber]
version = "0.5.0"
optional = true

[dependencies.cookie]
version = "0.18"

[dependencies.ctrlc]
version = "3"
features = ["termination"]

[dependencies.dashmap]
version = "6.2"

[dependencies.delegate]
version = "0.13"

[dependencies.directories]
version = "6"

[dependencies.dirs]
version = "6"

[dependencies.ed25519-dalek]
version = "2"

[dependencies.either]
version = "1"
features = ["serde"]

[dependencies.event-listener]
version = "5"

[dependencies.flatbuffers]
version = "25.9"

[dependencies.flate2]
version = "1"

[dependencies.freenet-stdlib]
version = "0.8.2"
features = ["net"]

[dependencies.freenet-test-network]
version = "0.1.22"
optional = true

[dependencies.futures]
version = "0.3"

[dependencies.headers]
version = "0.4"

[dependencies.hex]
version = "0.4"

[dependencies.hickory-resolver]
version = "0.26"
features = [
    "tokio",
    "system-config",
    "tls-ring",
]
default-features = false

[dependencies.hkdf]
version = "0.13"

[dependencies.hostname]
version = "0.4"

[dependencies.ipnet]
version = "2"
features = ["serde"]

[dependencies.keyring]
version = "3.6"
features = [
    "apple-native",
    "windows-native",
]
default-features = false

[dependencies.lru]
version = "0.18.0"

[dependencies.moka]
version = "0.12"
features = ["sync"]

[dependencies.notify]
version = "8"

[dependencies.opentelemetry]
version = "0.32"

[dependencies.opentelemetry-jaeger]
version = "0.22"
features = [
    "collector_client",
    "isahc",
    "rt-tokio",
]
optional = true

[dependencies.opentelemetry-otlp]
version = "0.32.0"
optional = true

[dependencies.opentelemetry_sdk]
version = "0.32"
features = ["rt-tokio"]
optional = true

[dependencies.parking_lot]
version = "0.12"

[dependencies.pav_regression]
version = "0.7.0"

[dependencies.pin-project]
version = "1"

[dependencies.rand]
version = "0.9"
features = ["small_rng"]

[dependencies.redb]
version = "4"
optional = true

[dependencies.renegade-ml]
version = "0.3.3"

[dependencies.reqwest]
version = "0.12"
features = [
    "json",
    "stream",
    "rustls-tls",
]
default-features = false

[dependencies.rpassword]
version = "7"

[dependencies.semver]
version = "1"
features = ["serde"]

[dependencies.serde]
version = "1"
features = [
    "derive",
    "derive",
    "rc",
]

[dependencies.serde_json]
version = "1"

[dependencies.serde_with]
version = "3"

[dependencies.sha2]
version = "0.11"

[dependencies.socket2]
version = "0.6"

[dependencies.sqlx]
version = "0.9"
features = [
    "runtime-tokio",
    "tls-rustls-ring",
    "sqlite",
    "runtime-tokio",
    "tls-rustls-ring",
    "sqlite",
]
optional = true
default-features = false

[dependencies.tar]
version = "0.4"

[dependencies.tempfile]
version = "3"

[dependencies.thiserror]
version = "2"

[dependencies.tokio]
version = "1"
features = [
    "full",
    "fs",
    "macros",
    "rt-multi-thread",
    "signal",
    "sync",
    "process",
    "tracing",
    "time",
    "test-util",
]

[dependencies.tokio-stream]
version = "0.1.18"
features = ["sync"]

[dependencies.tokio-tungstenite]
version = "0.27.0"

[dependencies.tokio-util]
version = "0.7"
features = ["rt"]

[dependencies.toml]
version = "1.0"

[dependencies.tower-http]
version = "0.7"
features = [
    "fs",
    "trace",
]

[dependencies.tracing]
version = "0.1"
features = ["release_max_level_info"]

[dependencies.tracing-appender]
version = "0.2"
optional = true

[dependencies.tracing-core]
version = "0.1"

[dependencies.tracing-opentelemetry]
version = "0.33.0"
optional = true

[dependencies.tracing-subscriber]
version = "0.3"
features = ["json"]
optional = true

[dependencies.turmoil]
version = "0.7"

[dependencies.ulid]
version = "1.1"
features = ["serde"]

[dependencies.wasmparser]
version = "0.252"

[dependencies.wasmtime]
version = "46"
features = [
    "anyhow",
    "async",
    "backtrace",
    "cache",
    "cranelift",
    "compile-time-builtins",
    "component-model",
    "component-model-async",
    "coredump",
    "debug",
    "debug-builtins",
    "demangle",
    "addr2line",
    "gc",
    "gc-drc",
    "gc-null",
    "parallel-compilation",
    "pooling-allocator",
    "profiling",
    "runtime",
    "std",
    "threads",
    "wat",
]
optional = true
default-features = false

[dependencies.x25519-dalek]
version = "3"
features = ["static_secrets"]

[dependencies.xz2]
version = "0.1"

[dependencies.zeroize]
version = "1.8"
features = [
    "derive",
    "serde",
]

[dev-dependencies.arbitrary]
version = "1"
features = ["derive"]

[dev-dependencies.chrono]
version = "0.4"
features = ["arbitrary"]
default-features = true

[dev-dependencies.criterion]
version = "0.8"
features = ["async_tokio"]

[dev-dependencies.freenet-stdlib]
version = "0.8.2"
features = [
    "net",
    "testing",
]

[dev-dependencies.httptest]
version = "0.16"

[dev-dependencies.libc]
version = "0.2"

[dev-dependencies.parking_lot]
version = "0.12"
features = ["deadlock_detection"]

[dev-dependencies.proptest]
version = "1"

[dev-dependencies.redb]
version = "4"

[dev-dependencies.regex]
version = "1"

[dev-dependencies.rstest]
version = "0.26"

[dev-dependencies.serial_test]
version = "3"

[dev-dependencies.statrs]
version = "0.18"

[dev-dependencies.tempfile]
version = "3"

[dev-dependencies.test-log]
version = "0.2"

[dev-dependencies.testresult]
version = "0.4"

[dev-dependencies.tokio-tungstenite]
version = "0.27.0"

[dev-dependencies.tower]
version = "0.5"
features = ["util"]

[dev-dependencies.url]
version = "2"

[dev-dependencies.which]
version = "8.0"

[build-dependencies.chrono]
version = "0.4"
default-features = true

[target.'cfg(all(target_os = "linux", target_env = "gnu"))'.dependencies.tikv-jemalloc-ctl]
version = "0.6"
features = ["stats"]
optional = true

[target.'cfg(all(target_os = "linux", target_env = "gnu"))'.dependencies.tikv-jemallocator]
version = "0.6"
features = ["unprefixed_malloc_on_supported_platforms"]

[target.'cfg(target_os = "macos")'.dependencies.muda]
version = "0.19"

[target.'cfg(target_os = "macos")'.dependencies.tao]
version = "0.35"
features = ["rwh_06"]
default-features = false

[target.'cfg(target_os = "macos")'.dependencies.tray-icon]
version = "0.24"

[target."cfg(unix)".dependencies.libc]
version = "0.2"

[target."cfg(windows)".dependencies.muda]
version = "0.19"

[target."cfg(windows)".dependencies.serde]
version = "1"
features = ["derive"]

[target."cfg(windows)".dependencies.tao]
version = "0.35"
features = ["rwh_06"]
default-features = false

[target."cfg(windows)".dependencies.tray-icon]
version = "0.24"

[target."cfg(windows)".dependencies.winapi]
version = "0.3"
features = [
    "shellapi",
    "sysinfoapi",
    "wincon",
    "winuser",
]

[target."cfg(windows)".dependencies.winreg]
version = "0.56"

[target."cfg(windows)".dependencies.wry]
version = "0.55"
features = ["os-webview"]
default-features = false

[target."cfg(windows)".dependencies.zip]
version = "8"
features = [
    "deflate",
    "time",
]
default-features = false

[target."cfg(windows)".build-dependencies.winres]
version = "0.1"

[lints.clippy]
let_underscore_must_use = "deny"
undocumented_unsafe_blocks = "deny"
wildcard_enum_match_arm = "warn"

[lints.rust]
unsafe_op_in_unsafe_fn = "deny"
unused_must_use = "deny"
