lasprs/Cargo.toml

140 lines
3.5 KiB
TOML

[package]
name = "lasprs"
version = "0.6.3"
edition = "2021"
authors = ["J.A. de Jong <j.a.dejong@ascee.nl>"]
description = "Library for Acoustic Signal Processing (Rust edition, with optional Python bindings via pyo3)"
readme = "README.md"
repository = "https://code.ascee.nl/ascee/lasprs"
license = "MIT OR Apache-2.0"
keywords = ["dsp", "audio", "measurement", "acoustics", "filter"]
categories = ["multimedia::audio", "science", "mathematics"]
[lib]
name = "lasprs"
crate-type = ["cdylib", "rlib"]
[dependencies]
# Error handling
anyhow = "1.0.91"
# Numerics
# Optional future feature for ndarray: blas
ndarray = { version = "0.16.1", features = ["rayon"] }
# This is required for HDF5, as it apparently doesn't update anymore.
ndarray15p6 = { package = "ndarray", version = "0.15.6", features = ["rayon"] }
num = "0.4.3"
# blas-src = { version = "0.8", features = ["openblas"] }
# openblas-src = { version = "0.10", features = ["cblas", "system"] }
# Parallel iterators
rayon = "1.10.0"
# Python bindings
pyo3 = { version = "0.22.5", optional = true, features = [
"extension-module",
"anyhow",
] }
# Python bindings for Numpy arrays
numpy = { version = "0.22.0", optional = true }
# White noise etc
rand = { version = "0.8.5", features = ["small_rng"] }
rand_distr = "0.4.3"
# Cross-platform audio lib
cpal = { version = "0.15.3", optional = true }
# Nice enumerations
strum = "0.26.3"
strum_macros = "0.26.4"
# Conditional compilation enhancements
cfg-if = "1.0.0"
# Reinterpret buffers. This is a workaround for the #[feature(specialize)] not
# being available in stable rust.
reinterpret = "0.2.1"
# Faster channels for multithreaded communication
crossbeam = "0.8.4"
# Serialization
serde = { version = "1.0.193", features = ["derive"] }
toml = "0.8.19"
# Initialize array for non-copy type
array-init = "2.1.0"
# Types of a sample
dasp_sample = "0.11.0"
# Required for recording and looking into measurements
hdf5-sys = { version = "0.8.1", features = ["static"], optional = true }
hdf5 = { version = "0.8.1", optional = true }
# Useful iterator stuff
itertools = "0.13.0"
# Approximate equal stuff
approx = "0.5.1"
# For getting timestamps. Only useful when recording.
chrono = { version = "0.4.38", optional = true }
# For getting UUIDs in recording
uuid = { version = "1.10.0", features = ["v4"], optional = true }
# Command line argument parser, for CLI apps
clap = { version = "4.5.13", features = [
"derive",
"color",
"help",
"suggestions",
] }
# FFT's
realfft = "3.3.0"
# Fast Mutex
parking_lot = "0.12.3"
# Builder code
derive_builder = "0.20.0"
# Stack-allocated vectors
smallvec = "1.13.2"
# Compile time constant floating point operations
softfloat = "1.0.0"
[features]
default = ["f64", "cpal-api", "record"]
# Use this to test if everything works well in f32
# default = ["f32", "cpal-api", "record"]
# When building Python bindings of Lasprs, you should enable the feature flag
# "python-bindings". When debugging these, to safe the flag specification you
# could just uncomment the line below here and comment the one above. If only
# testing the implementations, or building the extension module, you should
# call:
# $ maturin develop -F python-bindings
# Or:
# $ maturin develop --release -F python-bindings
# For faster code
#default = ["f64", "python-bindings", "record", "cpal-api"]
pulse-api = []
cpal-api = ["dep:cpal"]
record = ["dep:hdf5-sys", "dep:hdf5", "dep:chrono", "dep:uuid"]
f64 = []
f32 = []
python-bindings = ["dep:pyo3", "dep:numpy"]
extension-module = []