Mentor Meeting
🎯 Kick-off call – 16 May 2025
Project: GSoC 2025 – “Expanding the GNU Radio 4.0 Block Set”
Mentor: Josh Morman • Student: Krish Gupta
What we agreed on
| # | Decision |
|---|---|
| 1 | work() → processBulk() is the new normal. All ports I migrate must follow the 4.0 API and be SIMD-friendly from the outset. |
| 2 | GCC 14 is our reference compiler (brings full C++23 plus std::format). CI will still test Clang ≥ 17, but optimisation happens on GCC. |
| 3 | I’ll develop in a separate incubator repo inside the GNU Radio workspace (gr4-incubator, or whatever name Ralph prefers). Only when everything is green will we open one polished PR against the main 4.0 tree. |
| 4 | Unit tests first. Aim for ~95 % coverage and make sure scalar and SIMD code paths run in CI (-march=native -O3 -ftree-vectorize). |
| 5 | Licensing: — Brand-new code starts as MIT (Josh will drop a LICENSE.txt).— Anything lifted from GR 3.x stays GPL-3.0-or-later. We can later re-license to LGPL if every copyright holder consents. — Tiny snippets (≪ 10 LOC) can remain MIT with attribution. |
Quick GR 3 → 4 cheat-sheet
| Area | 3.x | 4.0 | Win for us |
|---|---|---|---|
| Block API | sync_block::work() |
Block<>::processBulk() / processOne() |
simpler kernels, fewer virtual calls |
| Ports | hard-coded (multiply_const_ff) |
PortIn<T> / PortOut<T> |
one template covers every numeric type |
| SIMD | manual intrinsics | auto with std::simd |
free vectorisation |
| Reflection | none; hand-written YAML | GR_MAKE_REFLECTABLE |
GUI & Python glue generate themselves |
| Registration | factory + GRC YAML | GR_REGISTER_BLOCK |
zero boilerplate |
| Build | CMake + Boost | Meson, no Boost core | faster compile, easier cross-compile |
Next up
- Josh will scaffold the incubator repo and drop in the MIT licence.
- I’ll prototype a tiny
AddConstblock with a matching GoogleTest suite, exercising both scalar and SIMD paths.
Stay tuned!