GNU Radio 4 is not simply GNU Radio 3.10 with a new interface. It is a major redesign of the runtime, block model, scheduler, type system, execution architecture, and developer APIs underneath GNU Radio flowgraphs.
The familiar idea remains: connect reusable signal-processing blocks into a graph and execute that graph. What changes is how those blocks are defined, connected, scheduled, optimized, inspected, and deployed.
GNU Radio 4 introduces a modern C++23 foundation, strongly typed ports, modular schedulers, explicit graph lifecycle, reflection, plugin discovery, SIMD-oriented processing, compile-time block composition, lock-free data movement, recursive graphs, improved support for heterogeneous compute, and a cleaner separation between the signal-processing graph and the runtime responsible for executing it.
There is also an important release-status detail. GNU Radio announced GNU Radio 4 Release Candidate 1 in March 2026, but as of August 7, 2026 the official GR4 repository still describes GNU Radio 4 as being in a maturing state approaching its first stable release. GNU Radio 3.x therefore remains the stable choice for production deployments that depend on the existing ecosystem.
This guide explains GNU Radio 4 architecture, the new scheduler model, block APIs, processOne and processBulk, strongly typed ports, std::expected, reflection, compile-time block merging, SIMD, SoapySDR, WebAssembly, and what has changed compared with GNU Radio 3.10.
Browse software-defined radio hardware, HackRF SDR hardware, bladeRF SDR hardware, USRP SDR hardware, and request a formal SDR lab quote from SDRstore.eu.
| Area | GNU Radio 3.10 | GNU Radio 4 |
|---|---|---|
| Core architecture | Mature 3.x runtime architecture | Clean redesigned runtime and block architecture |
| C++ baseline | C++17-era architecture | Modern C++23 |
| Scheduler | Runtime scheduling behavior largely defined by GNU Radio itself | Modular and application-selectable scheduling architecture |
| Block API | Inheritance-heavy block types and work functions | Modern strongly typed blocks with simplified processing APIs |
| Ports | Stream and message interfaces based on established 3.x abstractions | Ports are strongly typed, first-class constructs |
| Error handling | Traditional return values, exceptions, and runtime errors | Explicit composable errors using std::expected in key APIs |
| Metadata | Separate YAML, bindings, runtime information, and GRC metadata | Built-in reflection can expose parameters, ports, constraints, and metadata |
| Performance | Highly optimized but constrained by established runtime architecture | SIMD-first design, lock-free buffers, block merging, compile-time composition |
| Feedback graphs | More constrained streaming graph model | Recursive directed graphs and feedback are architectural features |
| Accelerators | Custom buffers introduced groundwork for GPU/FPGA integration | Architecture designed explicitly for heterogeneous execution |
| Licensing | GNU Radio core under GPLv3 | GR4 core/runtime under MIT; individual block libraries may use other compatible licensing |
| Current status | Stable production series | Approaching first stable release as of August 2026 |
The biggest conceptual change is this: GNU Radio 3.x mostly gives you a signal-processing graph running on GNU Radio's established runtime. GNU Radio 4 makes the execution strategy itself a configurable part of the system.
Not as of August 7, 2026.
GNU Radio announced the first GR4 release candidate on March 22, 2026. At that point, the project said the architecture was stable, the execution model was well defined, and major API-breaking changes were no longer expected.
However, the current official gnuradio/gnuradio4 repository still describes GR4 as a maturing pre-stable release and says GNU Radio 3.x remains the current stable release series.
.grc projects can simply be opened and run unchanged.GNU Radio 3.x has been extremely successful, but its architecture reflects design decisions made when general-purpose CPU execution was the dominant target and modern C++ language features, heterogeneous acceleration, WebAssembly, large multi-core systems, and modern deployment architectures did not look the way they do today.
GNU Radio 3.10 introduced important improvements, including:
But some limitations could not be removed cleanly without changing the fundamental runtime and block APIs.
GNU Radio 4 therefore started with a much more fundamental question:
If GNU Radio were designed today for modern CPUs, SIMD, GPUs, accelerators, embedded systems, large research facilities, web environments, and production DSP applications, what should the runtime look like?
A useful way to understand GR4 is to separate the system into several layers:
The signal-processing graph answers what should happen. The scheduler and runtime answer how it should execute.
The basic GNU Radio programming model has not disappeared. Developers still build applications from reusable signal-processing blocks.
A block may represent:
What changed is the amount of boilerplate required to define many blocks and how strongly the framework understands their inputs, outputs, settings, and processing behavior.
One of the clearest examples of the GR4 design is the simplified processing API.
A simple block can conceptually look like this:
template
struct MultiplyConst : gr::Block in;
gr::PortOut out;
T gain = T{1};
GR_MAKE_REFLECTABLE(MultiplyConst, in, out, gain);
constexpr T processOne(T value) const noexcept {
return value * gain;
}
}; The developer describes the operation. The framework can handle much of the surrounding work such as:
This is different from the traditional GNU Radio 3.x model where block writers often deal directly with forecast logic, scheduler-driven work calls, input/output item arrays, and explicit produced/consumed counts depending on block type.
GNU Radio 4 supports different processing styles because different algorithms have different requirements.
processOne is useful when one output value can be calculated naturally from one or a small fixed number of input values.
Examples include:
The framework can then decide how many samples to process at once and may take advantage of SIMD.
Bulk-processing APIs are useful when an algorithm naturally operates on a span or batch of samples.
Examples include:
GR4 developer tutorials discuss both ordinary spans and consumable/produceable span interfaces for advanced bulk-processing blocks.
Type safety is much more central in GNU Radio 4.
A port can explicitly carry a type such as:
gr::PortIn
gr::PortOut or:
gr::PortIn This provides several advantages:
GR4 is not limited to traditional scalar numeric stream types. Its architecture is intended to support structured and application-specific data as first-class types.
The scheduler is one of the most important architectural changes in GNU Radio 4.
A scheduler decides:
GNU Radio 3.x provides a mature scheduler tightly integrated with the runtime. The long-established thread-per-block style works well for many traditional streaming SDR applications.
But one scheduler strategy is not ideal for every application.
A radio receiver may prioritize throughput. A feedback controller may prioritize deterministic latency. A GPU pipeline may prefer large batches. A many-core CPU may prefer work stealing. An embedded system may prioritize memory footprint.
GR4 turns scheduling into a modular part of the architecture.
The graph defines the DSP system. A scheduler can then choose the execution strategy appropriate for that system.
Different schedulers can optimize for different goals.
| Goal | Possible scheduling strategy |
|---|---|
| Minimum latency | Small work chunks, prioritized execution, CPU affinity |
| Maximum throughput | Larger blocks of samples and efficient parallel execution |
| Real-time control | Deterministic priorities and dedicated execution resources |
| Many-core CPU | Shared queues, per-core queues, or work stealing |
| GPU | Larger transfers and GPU-specific scheduling domains |
| Embedded system | Minimal runtime and carefully constrained resources |
| Batch DSP | Large work units optimized for aggregate throughput |
This is why the scheduler change matters beyond benchmarks. It makes execution policy an architectural choice rather than a hidden assumption.
GNU Radio 4 includes a simple scheduler useful for straightforward graphs and examples.
It can operate as a single-threaded scheduler, running normal blocks in one thread apart from dedicated I/O behavior.
It can also be configured for multithreaded operation, including behavior similar to the traditional one-thread-per-block model familiar to GNU Radio 3.10 users.
This is useful because GR4 does not force every application into an exotic new scheduler. A simple application can still use a simple execution strategy.
GNU Radio 4 separates graph construction from graph execution more clearly.
The general model is:
This explicit lifecycle makes GR4 easier to integrate into:
GR4's connection API intentionally exposes errors instead of hiding them behind implicit graph-building semantics.
A runtime-style connection may conceptually use:
graph.connect(source, "out", sink, "in"); A compile-time C++ connection can identify ports at compile time:
graph.connect<"out", "in">(source, sink); Connection operations can return std::expected, allowing errors to be handled explicitly.
This is important for:
GR4 makes greater use of modern C++ error-handling patterns such as std::expected.
Instead of an operation simply failing somewhere deep in runtime execution, graph construction and other APIs can return either:
This is particularly useful for software that generates or modifies flowgraphs dynamically.
It also makes APIs easier to compose in robust production software.
Reflection is one of the less obvious but potentially most important GR4 features.
Block information can be exposed programmatically, including:
This gives external tools a reliable machine-readable description of a block.
It can support:
Instead of maintaining separate definitions for a block's C++ implementation, GUI representation, and external metadata, more information can be derived from the block itself.
GNU Radio 4 can build with a runtime block registry enabled.
The official repository currently exposes the CMake option:
-DGR_ENABLE_BLOCK_REGISTRY=ON The registry helps applications discover blocks dynamically.
It is especially useful for:
GR4 can also be built with the runtime registry disabled for more static deployments.
One of GR4's most technically interesting features is compile-time block composition.
Normally, a DSP graph contains separate blocks connected through buffers:
source → multiply → divide → add → sink Each runtime boundary may introduce:
GR4 can merge suitable blocks into a compile-time composition.
The compiler can then optimize a larger DSP pipeline as one unit.
The GR4 block-merging API supports multiple forms of composition.
Input
→ Block A
→ Block B
→ Output The compiler can treat compatible stages as a merged processing chain.
Feedback-oriented composition is useful for algorithms such as:
Parallel paths can be split, processed independently, and recombined.
This can be useful in:
Traditional streaming DSP frameworks are easiest to optimize when data flows forward from source to sink.
Feedback systems are harder because downstream results influence earlier processing.
GR4 explicitly supports recursive directed graphs and feedback-oriented composition, making it more natural for:
This reflects GR4's development background at FAIR/GSI, where deterministic high-performance feedback processing is an important requirement.
GNU Radio has long benefited from VOLK and SIMD-optimized kernels. GR4 pushes vectorized processing deeper into the architecture.
Instead of SIMD being only an optimization inside individual library functions, GR4 can use block structure and processing APIs to help determine efficient vector widths.
This can improve:
The project also includes SIMD-aware FFT work intended to integrate naturally with fused and compile-time DSP pipelines.
At high sample rates, arithmetic is not always the bottleneck. Moving samples between blocks can consume significant memory bandwidth and CPU time.
GR4's runtime is designed around efficient data movement, including lock-free buffer approaches.
This matters when processing:
The goal is to reduce unnecessary copies and synchronization overhead.
GNU Radio 3.10 already introduced custom buffers to improve accelerator integration.
GR4 goes further by designing the runtime and scheduling model around heterogeneous execution from the start.
Future and application-specific schedulers can make decisions such as:
This is important for advanced SDR research involving:
GR4 includes SoapySDR integration as an important hardware abstraction path.
SoapySDR allows one DSP application to communicate with multiple hardware families through a common interface where drivers exist.
This can simplify development with hardware such as:
The benefit is architectural separation:
DSP application
↓
GNU Radio 4 block
↓
SoapySDR
↓
Hardware-specific driver
↓
SDR device This makes it easier to swap a physical radio for another device, a recorded dataset, or a simulated source during development.
USRP hardware remains extremely important for GNU Radio research, but users should distinguish between the mature 3.10 UHD ecosystem and developing GR4 hardware integrations.
If a project depends today on:
GNU Radio 3.10 remains the safer production choice until the required GR4 blocks and interfaces are confirmed for your exact workflow.
Read the USRP B210 for srsRAN and OpenAirInterface research guide.
GNU Radio 4 is also being designed to run DSP pipelines through WebAssembly.
This enables use cases that were historically unusual for GNU Radio:
A user may eventually be able to open a web application and run substantial GR4-based DSP without installing a complete traditional GNU Radio environment locally.
GNU Radio Companion is one of the reasons GNU Radio became accessible to such a large community.
GR4 intends to preserve graphical flowgraph development, but users should not assume that the existing GNU Radio 3.10 GRC environment and block library are simply the GR4 frontend.
As GR4 approaches stable release, graphical interfaces and tooling are still being developed and improved.
.grc files.GNU Radio 3.x users often think of GNU Radio as a Python application controlling C++ DSP blocks.
GR4's architecture puts much stronger emphasis on modern C++ because C++23 features are central to:
Python remains important for prototyping, orchestration, teaching, and user-facing workflows, but developers who want to understand the core GR4 architecture should be comfortable reading modern C++.
GNU Radio 3.x core is distributed under GPLv3.
GNU Radio 4's core runtime is MIT licensed.
The project says individual block libraries can still use other licensing, including GPLv3 where appropriate.
A permissive core license can make GR4 easier to integrate into:
This does not mean every GR4 component automatically has the same license. Developers still need to check the license of the individual block library and other dependencies they use.
| Developer task | GNU Radio 3.10 | GNU Radio 4 |
|---|---|---|
| Define simple DSP block | Traditional GNU Radio block inheritance and work API | Compact typed block, often with processOne |
| Bulk algorithm | general_work/work and buffer arrays | Bulk-processing/span-oriented interfaces |
| Connect blocks | Runtime graph connection | Runtime or compile-time typed connection APIs |
| Handle graph errors | Established 3.x error model | Explicit std::expected-style results in key APIs |
| Expose metadata | YAML, bindings, classes, GRC definitions | Reflection-driven metadata and registry model |
| Optimize chain | Optimize individual blocks, VOLK, buffers, scheduler parameters | Can additionally merge suitable block chains at compile time |
| Choose scheduler | Mostly established GNU Radio runtime behavior | Scheduler becomes selectable and extensible |
Do not assume direct compatibility.
GNU Radio 4 is a new implementation with different core APIs and runtime concepts. Existing GNU Radio 3.10 flowgraphs, Python applications, and out-of-tree modules may require migration or replacement.
For an important production system, keep the 3.10 implementation operational while developing and validating the GR4 version separately.
Existing GNU Radio 3.x out-of-tree modules are one of the largest migration considerations.
An OOT module containing custom C++ or Python blocks cannot generally be expected to compile unchanged against GR4.
The migration strategy should be:
processOne or bulk processing as appropriate.Despite the major architecture rewrite, GNU Radio's fundamental purpose remains recognizable.
You still:
A student who understands sampling, filters, FFTs, modulation, flowgraphs, complex I/Q data, and SDR hardware in GNU Radio 3.10 is not starting from zero in GR4.
The DSP knowledge transfers. The architecture and APIs change.
GR4's SIMD, block-merging, and lower-overhead runtime architecture can benefit applications processing large sample streams.
Flexible schedulers and feedback-oriented architecture are valuable for deterministic control and low-latency DSP.
Researchers can experiment with custom schedulers, new hardware backends, structured types, and heterogeneous compute.
The explicit lifecycle, reflection system, modular runtime, and permissive core license make GR4 interesting for managed production software.
The repository includes an embedded-oriented build option designed to reduce runtime features and code size.
WebAssembly opens a new path for interactive DSP and teaching tools.
Stay with 3.10 when:
There is no technical benefit in migrating a stable production flowgraph simply because the version number is newer.
Start testing GR4 now when:
GNU Radio 4 currently targets modern development toolchains.
The official repository lists requirements including modern CMake and current C++ compilers, with C++23 as the language baseline.
A basic source build follows this pattern:
git clone https://github.com/gnuradio/gnuradio4.git
cd gnuradio4
cmake -B build -S . \
-DCMAKE_BUILD_TYPE=RelWithAssert \
-DGR_ENABLE_BLOCK_REGISTRY=ON
cmake --build build -- -j$(nproc) Because GR4 has not yet reached its first stable release, users should check the current repository requirements before copying build commands into automated production environments.
| Option | Purpose |
|---|---|
GR_ENABLE_BLOCK_REGISTRY | Enable runtime block discovery and registry features. |
EMBEDDED | Reduce code size and runtime features for constrained deployments. |
WARNINGS_AS_ERRORS | Treat compiler warnings as build failures. |
TIMETRACE | Enable compiler timing analysis. |
ADDRESS_SANITIZER | Build with memory-error detection. |
UB_SANITIZER | Detect undefined behavior. |
THREAD_SANITIZER | Help diagnose threading problems, with significant performance overhead. |
You do not need the most expensive SDR to learn GR4 architecture.
| Hardware | Best GR4 use | Notes |
|---|---|---|
| RTL-SDR | Receive-only experimentation | Low-cost option where the required Soapy hardware support is available. |
| HackRF Pro | Wideband GNU Radio experiments | Useful for receiving and controlled transmit projects. |
| PLUTO+ / AD936x hardware | Digital communications experiments | Check current GR4 driver integration for the exact board. |
| bladeRF 2.0 micro | MIMO, FPGA, and advanced SDR development | Strong research platform with Soapy integration possibilities. |
| USRP B210 | Research and MIMO | GNU Radio 3.10 remains the safer route for mature UHD workflows today. |
| USRP X310 / N310 | Advanced research labs | Evaluate GR4 hardware support against existing UHD/RFNoC requirements. |
Read: Best SDR for GNU Radio Projects: Student, Hobbyist, Lab, and Research Setups.
HackRF Pro is useful for learning GNU Radio because it is flexible, wideband, and widely supported by existing SDR software.
For current production-style HackRF workflows, GNU Radio 3.10 remains mature. For GR4 experimentation, SoapySDR provides an important hardware-abstraction path.
Read the HackRF Pro Setup Guide: Firmware, Drivers, GNU Radio, SDR++, and First Signal.
bladeRF is especially interesting for GR4 because its 2×2 MIMO hardware, USB 3.0 interface, and FPGA make it relevant to the heterogeneous-processing direction of the new architecture.
Potential research areas include:
Read the bladeRF 2.0 micro Setup Guide.
Universities should not immediately replace every GNU Radio 3.10 workstation with GR4.
A better strategy is a staged lab.
This lets students learn mature GNU Radio concepts while researchers prepare for the GR4 ecosystem.
GR4's architecture is particularly interesting for future wireless research because modern PHY processing can require:
A modular scheduler and explicit heterogeneous-compute architecture can make these workloads easier to optimize than forcing every graph through one universal scheduling strategy.
This does not mean GR4 replaces srsRAN, OpenAirInterface, or specialized PHY frameworks. It means GR4 can become a stronger platform for custom DSP, instrumentation, prototyping, and research components around them.
processOne where appropriate.No. GR4 is a separate architectural redesign of the runtime and block model.
No. GNU Radio 3.x remains the stable production series as GR4 approaches its first stable release.
No. Expect migration work and verify the availability of every block and hardware interface.
Performance is only part of the redesign. Scheduler flexibility, reflection, stronger typing, explicit graph lifecycle, heterogeneous execution, and deployment flexibility are equally important.
The core architecture uses advanced modern C++, but the project intends to remain useful to graphical, Python, educational, and application-level users as its tooling matures.
No. Scheduler choice depends on the workload. A low-latency scheduler, high-throughput scheduler, and accelerator scheduler may make different trade-offs.
No. Dynamic graphs, plugins, runtime reconfiguration, and separately schedulable blocks remain useful. Compile-time composition is another optimization option, not a requirement for every graph.
Best for: students learning flowgraphs, FFTs, filtering, demodulation, and the transition from GR3 to GR4.
Best for: developers writing GR4 blocks, experimenting with SoapySDR, and learning scheduler behavior.
Best for: MIMO, SIMD, scheduler experiments, FPGA-oriented development, and advanced DSP research.
Best for: MIMO, private 5G research, RF fingerprinting, wireless communications, real-time DSP, and long-term GNU Radio development.
A GNU Radio 4 development environment is required to evaluate the next-generation GNU Radio runtime, modern block APIs, modular scheduling, SIMD execution, reflection, heterogeneous computing, and migration of existing GNU Radio 3.10 research software.
HackRF Pro is required as a wideband SDR platform for GNU Radio 4 hardware-integration testing, SoapySDR development, spectrum experiments, receive validation, and controlled signal-processing research.
bladeRF 2.0 micro is required for GNU Radio 4 research involving 2×2 MIMO, high-rate streaming, FPGA-oriented workflows, scheduler evaluation, custom waveform development, and heterogeneous signal-processing experiments.
USRP hardware is required to maintain mature GNU Radio 3.10/UHD research workflows while evaluating migration toward GNU Radio 4 for advanced MIMO, timing, synchronization, and next-generation DSP architectures.
Universities, RF laboratories, telecom research teams, cybersecurity groups, wireless product developers, and public-sector research organizations can request a formal quotation directly from SDRstore.eu.
Use the Add to Quote button on product pages or the document icon on product cards. Add HackRF Pro, RTL-SDR, PLUTO+, bladeRF, USRP B210, X310 or N310, antennas, synchronization hardware, filters, attenuators, dummy loads, TinySA, NanoVNA, cables, adapters, and project requirements to one quote request.
A quote request is useful when you need:
Read the SDRstore.eu quote-request guide.
GNU Radio 4 should be understood as a new foundation, not as a routine upgrade from GNU Radio 3.10.
The biggest changes are architectural: modern C++23, strongly typed ports, simpler block processing APIs, modular schedulers, explicit graph lifecycle, reflection, plugin discovery, lock-free data movement, SIMD-oriented execution, recursive graphs, compile-time block composition, heterogeneous-compute support, SoapySDR integration, and WebAssembly deployment.
For production systems and mature teaching environments, GNU Radio 3.10 remains the safer choice today. For developers, research labs, universities, and organizations planning multi-year SDR systems, now is a good time to evaluate GR4, port custom blocks, benchmark workloads, and identify hardware-integration gaps before the first stable GNU Radio 4 release.
The most sensible migration strategy is not “replace 3.10.” Keep the stable environment working, build GR4 separately, feed both implementations the same test data, validate outputs, benchmark latency and throughput, and migrate only when the new system meets your functional and operational requirements.
Not yet as of August 7, 2026. GNU Radio announced GR4 Release Candidate 1 in March 2026, but the official repository still describes GR4 as approaching its first stable release and recommends GNU Radio 3.x for users requiring the current stable platform.
The biggest change is the architecture. GNU Radio 4 redesigns the runtime, scheduler, block API, data types, graph lifecycle, reflection system, and execution model rather than simply adding features to the GNU Radio 3.x runtime.
Scheduling becomes modular and configurable. Applications can use or develop schedulers optimized for latency, throughput, parallelism, CPU resources, accelerators, or other application-specific requirements.
processOne is a simplified block-processing API for operations that naturally transform individual samples. The framework can manage surrounding buffering, scheduling, and SIMD execution.
Bulk-processing interfaces allow blocks to operate efficiently on spans or groups of samples. They are useful for FFTs, framing, variable-rate processing, packet processing, and algorithms requiring explicit input and output handling.
Yes. The current official GNU Radio 4 repository uses modern C++23 as its language baseline, allowing GR4 to make extensive use of templates, concepts, compile-time programming, std::expected, and other modern C++ features.
Do not assume direct compatibility. GNU Radio 4 uses a different runtime and developer architecture, so existing blocks, GRC flowgraphs, Python code, and out-of-tree modules may need migration.
Graphical development remains part of the GNU Radio 4 direction, but GR4 tooling is still maturing. GNU Radio 3.10 remains the safer choice for mature GRC-based teaching and production workflows today.
Yes. SoapySDR integration is part of the GR4 architecture and provides a common hardware-abstraction path for many SDR devices with compatible Soapy drivers.
GR4 is designed to reduce runtime overhead and improve SIMD, buffering, scheduling, and compile-time optimization. Some workloads can benefit substantially, but actual performance depends on the graph, scheduler, hardware, compiler, block implementation, and whether compile-time composition is appropriate.
A staged approach is better. Keep GNU Radio 3.10 for mature classroom exercises while creating separate GNU Radio 4 development systems for advanced block development, scheduler experiments, SIMD work, and future course material.
Yes. Use the Add to Quote button on product pages or the document icon on product cards. Add HackRF Pro, RTL-SDR, PLUTO+, bladeRF, USRP hardware, antennas, timing equipment, filters, attenuators, dummy loads, test instruments, and project notes so the complete research setup can be quoted together.
No posts found
Write a review