[package]
edition = "2024"
rust-version = "1.89"
name = "futuresdr"
version = "0.0.41"
authors = ["FutureSDR Contributors <team@futuresdr.org>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "An Experimental Async SDR Runtime for Heterogeneous Architectures."
homepage = "https://www.futuresdr.org"
readme = "README.md"
keywords = [
"sdr",
"radio",
"runtime",
"async",
"acceleration",
]
categories = [
"asynchronous",
"concurrency",
"hardware-support",
"science",
"wasm",
]
license = "Apache-2.0"
repository = "https://github.com/futuresdr/futuresdr/"
[package.metadata.docs.rs]
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
aaronia_http = ["seify/aaronia_http"]
audio = [
"dep:cpal",
"dep:hound",
"dep:rodio",
]
burn = ["dep:burn"]
default = [
"tracing_max_level_debug",
"tracing_release_max_level_info",
]
flow_scheduler = ["dep:spin"]
hackrf = ["seify/hackrfone"]
rtlsdr = ["seify/rtlsdr"]
seify = [
"dep:seify",
"futuresdr-types/seify",
]
seify_dummy = ["seify/dummy"]
soapy = ["seify/soapy"]
tracing_max_level_debug = ["tracing/max_level_debug"]
tracing_release_max_level_info = ["tracing/release_max_level_info"]
vulkan = [
"dep:vulkano",
"dep:ouroboros",
]
wgpu = ["dep:wgpu"]
zeromq = ["dep:zmq"]
zynq = ["dep:xilinx-dma"]
[lib]
name = "futuresdr"
path = "src/lib.rs"
[[example]]
name = "ctrl-port"
path = "examples/ctrl-port.rs"
[[example]]
name = "custom-config"
path = "examples/custom-config.rs"
[[example]]
name = "local-domain"
path = "examples/local-domain.rs"
[[example]]
name = "message-passing"
path = "examples/message-passing.rs"
[[example]]
name = "minimal"
path = "examples/minimal.rs"
[[example]]
name = "minimal-dyn"
path = "examples/minimal-dyn.rs"
[[example]]
name = "mock"
path = "examples/mock.rs"
[[example]]
name = "multi"
path = "examples/multi.rs"
[[test]]
name = "apply"
path = "tests/apply.rs"
[[test]]
name = "applyintoiter"
path = "tests/applyintoiter.rs"
[[test]]
name = "bad_block"
path = "tests/bad_block.rs"
[[test]]
name = "channel_source"
path = "tests/channel_source.rs"
[[test]]
name = "combine"
path = "tests/combine.rs"
[[test]]
name = "connect_circuit"
path = "tests/connect_circuit.rs"
[[test]]
name = "connect_error"
path = "tests/connect_error.rs"
[[test]]
name = "fail"
path = "tests/fail.rs"
[[test]]
name = "filter"
path = "tests/filter.rs"
[[test]]
name = "finite_source"
path = "tests/finite_source.rs"
[[test]]
name = "fir"
path = "tests/fir.rs"
[[test]]
name = "flowgraph"
path = "tests/flowgraph.rs"
required-features = ["flow_scheduler"]
[[test]]
name = "local_buffer"
path = "tests/local_buffer.rs"
[[test]]
name = "local_domain"
path = "tests/local_domain.rs"
[[test]]
name = "local_domain_context"
path = "tests/local_domain_context.rs"
[[test]]
name = "mocker"
path = "tests/mocker.rs"
[[test]]
name = "moving_avg"
path = "tests/moving_avg.rs"
[[test]]
name = "seify"
path = "tests/seify.rs"
required-features = ["seify_dummy"]
[[test]]
name = "slab"
path = "tests/slab.rs"
[[test]]
name = "source"
path = "tests/source.rs"
[[test]]
name = "split"
path = "tests/split.rs"
[[test]]
name = "tag"
path = "tests/tag.rs"
[[test]]
name = "vulkan"
path = "tests/vulkan.rs"
required-features = ["vulkan"]
[[bench]]
name = "apply"
path = "benches/apply.rs"
harness = false
[[bench]]
name = "flowgraph"
path = "benches/flowgraph.rs"
harness = false
[[bench]]
name = "sync_vs_async"
path = "benches/sync_vs_async.rs"
harness = false
[dependencies.anyhow]
version = "1.0"
[dependencies.async-lock]
version = "3.4"
[dependencies.async-trait]
version = "0.1"
[dependencies.burn]
version = "0.20"
optional = true
default-features = false
[dependencies.config]
version = "0.15"
[dependencies.dirs]
version = "6.0"
[dependencies.dyn-clone]
version = "1.0"
[dependencies.futuredsp]
version = "0.0.10"
[dependencies.futures]
version = "0.3"
[dependencies.futuresdr-macros]
version = "0.0.10"
[dependencies.futuresdr-types]
version = "0.0.16"
[dependencies.kanal]
version = "0.1.1"
[dependencies.num-complex]
version = "0.4"
[dependencies.num-integer]
version = "0.1"
[dependencies.once_cell]
version = "1.21"
[dependencies.rustfft]
version = "6.4"
[dependencies.seify]
version = "0.18"
optional = true
default-features = false
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.slab]
version = "0.4"
[dependencies.spin]
version = "0.10"
optional = true
[dependencies.thiserror]
version = "2.0"
[dependencies.tracing]
version = "0.1"
features = ["log"]
[dependencies.web-time]
version = "1.1"
[dependencies.wgpu]
version = "29.0"
optional = true
[dev-dependencies.criterion]
version = "0.8"
features = ["html_reports"]
[dev-dependencies.float-cmp]
version = "0.10"
[dev-dependencies.rand]
version = "0.10"
[dev-dependencies.vulkano-shaders]
version = "0.35"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.async-executor]
version = "1.14"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.async-fs]
version = "2.2"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.async-io]
version = "2.6"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.async-net]
version = "2.0"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.async-task]
version = "4.7"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.async-tungstenite]
version = "0.34"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.axum]
version = "0.8"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.blocking]
version = "1.6"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.concurrent-queue]
version = "2.5"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.core_affinity]
version = "0.8"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.cpal]
version = "0.17"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.hound]
version = "3.5"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.ouroboros]
version = "0.18"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.rodio]
version = "0.22"
features = ["symphonia-all"]
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "1"
features = ["rt"]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tower-http]
version = "0.6"
features = [
"add-extension",
"cors",
"fs",
]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"fmt",
]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.vmcircbuffer]
version = "0.0.14"
features = ["generic"]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.vulkano]
version = "0.35"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.zmq]
version = "0.10"
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.async-task]
version = "4.7"
[target.'cfg(target_arch = "wasm32")'.dependencies.concurrent-queue]
version = "2.5"
[target.'cfg(target_arch = "wasm32")'.dependencies.console_error_panic_hook]
version = "0.1"
[target.'cfg(target_arch = "wasm32")'.dependencies.cpal]
version = "0.17"
features = ["wasm-bindgen"]
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.getrandom]
version = "0.4"
features = ["wasm_js"]
[target.'cfg(target_arch = "wasm32")'.dependencies.gloo-net]
version = "0.7"
features = ["websocket"]
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.gloo-timers]
version = "0.4"
features = ["futures"]
[target.'cfg(target_arch = "wasm32")'.dependencies.js-sys]
version = "0.3"
[target.'cfg(target_arch = "wasm32")'.dependencies.rodio]
version = "0.22"
optional = true
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.tracing-wasm]
version = "0.2"
[target.'cfg(target_arch = "wasm32")'.dependencies.wasm-bindgen]
version = "0.2"
[target.'cfg(target_arch = "wasm32")'.dependencies.wasm-bindgen-futures]
version = "0.4"
[target.'cfg(target_arch = "wasm32")'.dependencies.web-sys]
version = "0.3"
features = [
"Document",
"Element",
"HtmlElement",
"Navigator",
"Node",
"Usb",
"UsbConfiguration",
"UsbControlTransferParameters",
"UsbDevice",
"UsbDeviceFilter",
"UsbDeviceRequestOptions",
"UsbInTransferResult",
"UsbOutTransferResult",
"UsbRecipient",
"UsbRequestType",
"UsbTransferStatus",
"Window",
"Worker",
"WorkerGlobalScope",
"WorkerNavigator",
"WorkerOptions",
"WorkerType",
]
[target.'cfg(target_os = "android")'.dependencies.tracing-android]
version = "0.2"
[target.'cfg(target_os = "linux")'.dependencies.xilinx-dma]
version = "0.0.11"
features = ["async"]
optional = true
[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
debug = 2
panic = "abort"