75 releases (14 breaking)

Uses new Rust 2024

0.15.1 Nov 30, 2025
0.14.2 May 19, 2025
0.12.0 Mar 3, 2025
0.6.1 Dec 7, 2024
0.4.1 Nov 14, 2023

#196 in Audio


Used in sparslog

MIT and maybe LGPL-3.0-only

1MB
11K SLoC

Rust Radio

A library for digital signals processing in the spirit of GNU Radio.

Differences from GNU Radio

Pro

  • Written in Rust instead of C++ & Python.
    • Easier to get things right than C++.
    • More performant than Python (and possibly more performant than C++).
    • Easier to ship as a built binary.
  • Type safe streams.

Con

  • GNU Radio is obviously way more mature.
  • GNU Radio has a very nice UI for iterating on graphs.

Missing stuff before declaring 1.0

  • A clear strategy for optional output streams.
    • Is the current Option-based solution good enough for 1.0?
  • SymbolSync block at least have the right API.
  • AsRef<Path> vs Into<PathBuf>?
  • What exactly is the purpose of BlockEOF?
  • Should produce() take Into<Vec<Tag>>? Less copying.
  • Block structs have needless trait bounds, just to be passed to generated impl sections.
  • Should Pending return a time estimate?
  • Or better yet: The graph should do some fancy heuristic to hone in on the perfect time when to call again.
    • Great for hardware like audio, SDRs.
    • Max ceiling for e.g. TCP streams.
    • Maybe both. Strobe could do with being able to just say.
  • At least one example of dynamically updating parameters.

Dependencies

~8–44MB
~656K SLoC