futuresdr 0.0.41

An Experimental Async SDR Runtime for Heterogeneous Architectures.
Documentation
# Introduction

FutureSDR is a software-defined radio (SDR) runtime written in Rust with a
focus on portability, performance, and developer ergonomics.

## Main Features

- **Platform support:** FutureSDR runs on Linux, Windows, macOS, Android, and on the
  web. Support for both native and browser targets allows you to reuse the same
  signal-processing code across desktop, embedded, and WebAssembly deployments.
- **Accelerators:** FutureSDR integrates with accelerators through custom buffers
  that provide direct access to accelerator memory (e.g., DMA buffers, GPU
  staging buffers, machine-learning tensors). Developers can implement their own
  buffers or reuse existing ones for Xilinx Zynq DMA, Vulkan GPU, and
  [Burn]https://burn.dev, a Rust machine-learning framework.
- **Custom Schedulers:** FutureSDR uses an async runtime that schedules
  data-processing workloads as user-space tasks. This architecture lets you plug
  in different scheduling strategies to match your latency and throughput goals.

## Core Concepts

While FutureSDR’s implementation differs from other SDR frameworks, the core
abstractions remain familiar. It supports *Blocks* that implement stream-based
or message-based data processing. These blocks can be combined into a
*Flowgraph* and launched on a *Runtime* that is driven by a *Scheduler*.

## Documentation Structure

**User Documentation** explains how to:

- Use an existing FutureSDR application (an example or a third-party implementation).
- Interface a FutureSDR application through the built-in or a custom web interface.
- Interface a FutureSDR application through the REST API (e.g., Curl or a custom Python script).


**Application Development** explains how to:

- Create FutureSDR applications using existing blocks.
- Interact with running flowgraphs through Rust code.
- Integrate FutureSDR in a broader application, potentially with custom GUIs.


**SDR Development** explains how to:

- Implement custom blocks for specific technologies or custom integrations.
- Extend FutureSDR with custom buffers or custom schedulers.