--- title: Mentor Meeting #1 – 16 May 2025 description: Notes from the first sync with Josh Morman and a quick primer on GNU Radio 3.x → 4.0 changes date: 2025-05-16 description: First catch-up with mentor Josh Morman and a quick GR 3.x → 4.0 primer layout: post --- # 🎯 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 / PortOut` | 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 `AddConst` block** with a matching GoogleTest suite, exercising both scalar and SIMD paths. Stay tuned!