Skip to content

[3SP] Remove macOS ARM64 support — license cleanup ahead of PR #781 merge #784

@RalphSteinhagen

Description

@RalphSteinhagen

Following the licensing transition in PR #781, we need to revert prior macOS ARM64 enablement contributions to maintain a clean license boundary at the file level rather than per-line attribution within shared files.

Background

PR #725 (commit 7405f60) and the follow-up 7a457df were contributed under MIT and the contributor has explicitly indicated they do not consent to relicensing under LGPL-3.0-or-later WITH LGPL-3.0-linking-exception. The contributions in question are concentrated on macOS ARM64 enablement plus a CI workflow.

The cleanest handling — given that license clarity at the file level is institutionally maintainable but per-line MIT/LGPL+SLE attribution within shared files is not — is to revert these contributions ahead of the LGPL+SLE merge. Several of the changes are platform-independent bug fixes that should be preserved through re-implementation with fresh authorship.

Scope

Revert the following commits and adjust dependent files as needed:

Within the revert, classify each change into one of three categories:

Category A — clean revert (macOS-only scaffolding, no preservation needed):

  • .github/workflows/ci-macos.yml (entire workflow)
  • core/include/gnuradio-4.0/PluginLoader.hpp.dylib extension handling
  • core/include/gnuradio-4.0/thread/MemoryMonitor.hppreinterpret_cast for Mach task_info()
  • core/include/gnuradio-4.0/WaitStrategy.hppsched_yield swap on macOS
  • CMake conditionals: -Wl,-dead_strip, mold/lld skip on Darwin, redundant -lc++ removal
  • CFNetwork link conditional

Category B — platform-independent bug fixes; revert and re-implement under new authorship:

  • algorithm/include/gnuradio-4.0/algorithm/rng/GaussianNoise.hpp — FMA-contraction alignment fix between bulk and per-sample paths. Verify the underlying numerical issue exists on Linux/x86_64 and re-fix cleanly.
  • core/include/gnuradio-4.0/Scheduler.hpp — claimed TOCTOU race in initBlockAdoption(). Independently verify the race exists on non-macOS platforms; if confirmed, re-fix with new authorship.
  • meta/include/gnuradio-4.0/meta/UnitTestHelper.hpp and core/test/qa_Messages.cpp — IO pool vs CPU pool routing for blocking waits. Verify whether this is a real issue on Linux test runs and re-implement if so.
  • CMakeLists.txtGR_ENABLE_HTTP=OFF was reportedly being honoured incorrectly. Confirm and re-fix.

Category C — deep platform-conditional changes; revert (loses macOS):

  • core/include/gnuradio-4.0/Sequence.hpp — Apple ARM64 hardware_*_interference_size override to 128. Apple-only. Revert; macOS support deferred.
  • core/include/gnuradio-4.0/thread/thread_pool.hpp — Mach task_threads() for thread counting and microsecond-polling fallback replacing condition_variable::wait_for on macOS. Revert; macOS support deferred.
  • core/include/gnuradio-4.0/Value.hpp and core/src/Value.cppunsigned long/signed long/signed long long via reinterpret_cast aliasing to existing int64_t/uint64_t storage with platform-conditional explicit instantiations. Revert; macOS support deferred.
  • The IsAnyOf concept addition — revert if it has no non-macOS users; keep with attribution note if reused elsewhere.

Approach

  1. Create a topic branch from main (suggest name: remove-macos-arm64-support).
  2. Attempt git revert 7a457df 7405f60 first as a starting point. If conflicts arise from subsequent refactoring, manual unwind from the original diff is acceptable.
  3. For Category B changes, separate the revert (one commit) from the re-implementation (subsequent commits with fresh authorship and clean commit messages).
  4. Verify Category B re-implementations against existing test suite; add tests where the underlying bug suggests one is missing.
  5. Run full CI on Linux x86_64, Linux ARM64, embedded (RP2350), and WASM/Emscripten targets to confirm no regression.
  6. Open as a separate PR — not part of Putting the GNU back into GNU Radio 4.0 #781 — referencing this issue. Target merge before Putting the GNU back into GNU Radio 4.0 #781's scheduled merge date (currently 11 May 2026).

Commit message guidance for the cleanup PR

For the revert commits:

Revert macOS ARM64 enablement (PRs #725, #7a457df) ahead of LGPL+SLE merge. Contributor has indicated non-consent to relicensing of MIT-era contributions under LGPL-3.0-or-later WITH LGPL-3.0-linking-exception. Reverting maintains clean license clarity at the file level. macOS support may be re-introduced subsequently under the new license terms by any willing contributor.

For the re-implementation commits, standard commit messages crediting the original observation but with fresh implementation, e.g.:

Fix FMA-contraction alignment between bulk and per-sample GaussianNoise paths

Fixes a 1-ULP numerical discrepancy between the bulk and per-sample code paths caused by inconsistent FMA contraction. The issue was originally observed on Apple ARM64 but applies to any FMA-capable target. Re-implemented with fresh authorship to maintain clean licensing under LGPL-3.0-or-later WITH LGPL-3.0-linking-exception.

Out of scope

  • Re-introducing macOS support. That is welcome as a separate future contribution from anyone willing to implement it under the new license terms, but it is not part of this cleanup task.
  • Engaging with the contributor on this PR thread. The PR-thread reply on the licensing question will be handled separately (not by the volunteer for this task).

Metadata

Metadata

Assignees

Type

Projects

Status

Finished Implementation (2)

Relationships

None yet

Development

No branches or pull requests

Issue actions