Speakers
Description
GNU Radio 3's Python API, while functional, leaves much to be desired for developer ergonomics. Block properties are sparsely documented in Python, forcing developers to cross-reference C++ headers to understand block inputs, outputs, and parameters. This friction-heavy workflow undermines productivity and discourages adoption.
With the arrival of GNU Radio 4, our team saw an opportunity to close this gap from the start. Rather than replicate GR3's ad hoc binding situation, we developed a code generation script that automatically discovers block metadata from GR4's C++ core and emits nanobind-backed Python data classes for every block in the standard library. The result is a Python API where block parameters, port types, and configuration options are first-class, introspectable objects fully visible to language servers and linters.
This talk walks through the design of the discovery script, the nanobind binding strategy, the tradeoffs encountered generating bindings at scale, and the developer experience improvements that motivated the work. We will demonstrate flowgraph authoring in Python with full LSP support, autocomplete, and type checking, capabilities that were effectively unavailable in GR3 and are now table stakes for modern RF development workflows.
| Talk Length | 15 Minutes |
|---|---|
| Acknowledge | Acknowledge In-Person |