Summary
This PR addresses breaking changes introduced by the transition to newer C++ standards (C++20/23) that caused build failures on legacy Linux environments. It also formalises the deprecation path for Linux Kernel 5 as the ecosystem migrates toward Kernel 6.
Problem
The recent transition to newer C++ standards introduced changes in binary layout and language constraints incompatible with legacy headers. Furthermore:
Legacy Mismatch: Older kernels (Kernel 5.x) were released as far back as 2019. These versions are increasingly incompatible with modern C++ toolchains and the latest glibc requirements.
Compilation Errors: Issues occurred when linking modern C++ binaries against legacy kernel headers.
Ecosystem Shift: The Ubuntu ecosystem has largely migrated to Kernel 6.x (starting with Ubuntu 22.04.3+ and Ubuntu 24.04).
Solution
This PR implements compatibility patches while setting the stage for Kernel 6:
Refactored Code: Cleaned up sections utilising deprecated behaviours in the new C++ standard.
Build Scripts: Updated to ensure binary compatibility with older interfaces where strictly necessary.
Shims: Applied shims to bridge the gap between new C++ features and legacy system calls.
Impact & Migration Path
Once merged, this restores support for older distributions, but users should note the following:
Deprecation of Kernel 5: Support for Kernel 5 is being phased out. Kernel 5.x dates back several years and is being superseded by the more robust Kernel 6 architecture.
Ubuntu 22.04 Users: If you are running Ubuntu 22.04 and encounter issues, please ensure you are on version 22.04.3 or later. These versions utilise the Hardware Enablement (HWE) stack, which provides Kernel 6.x.
Future Support: Our development focus is moving toward Kernel 6 to align with Ubuntu 24.04 LTS standards, ensuring long-term stability and performance.
Full Changelog: v0.4.18...v0.8.3