Repository navigation
Replies: 3 comments 2 replies
|
Downstream Packaging & Toolchain Constraints (cibuildwheel & CUDA) Apple Clang Limitation: Xcode's Apple Clang historically lags behind upstream LLVM in C++23 header implementations. macOS wheel builds on GitHub Actions runners should be verified before locking in C++23 as a strict requirement.
Recommended Architecture: We should use thin layout-wrapped types backed by standard C++23 types when feature-guarded, fallback-aliased to NumPy-compatible structures otherwise: C++ namespace awkward::types { #if defined(STDCPP_FLOAT128_T)
Concepts & Constrainable Kernels (C++20/C++23): Greatly simplifies meta-programming when dispatching index-types (int32 vs int64) and array payloads, drastically reducing SFINAE bloat and improving compiler error diagnostics. Explicit Object Parameters / Deduplicating this (C++23): Simplifies CRTP patterns in index/layout visitors and reduces template boilerplate across array transformation nodes. Bottom Line: Moving to C++23 makes complete sense for and monadic error handling. I propose bumping our cibuildwheel images to manylinux_2_28 and implementing feature-flagged wrappers around to guarantee NumPy C-ABI layout parity across all platform variants. |
|
Reference #4467 that implements C++23 migration. |
|
Hey ianna, awesome to see this moving forward into a PR so quickly! Glad the fallback wrapper pattern and moving cibuildwheel to manylinux_2_28 worked out smoothly for the implementation. Let me know if you need any extra eyes on testing the extended-precision layout behavior. |
Uh oh!
There was an error while loading. Please reload this page.
Hi everyone,
Following up on our roadmap to drop Python 3.10 support, we have an ideal window to upgrade our core kernel baseline (
awkward-cpp) from C++17 to a newer standard.Given our project's technical direction -- specifically implementing layout support for
float16andcomplex256while expanding our use of Pythoncuda.computeand Numba-MLIR -- I propose migrating our backend baseline to C++20 or C++23.Why C++23 perfectly fits our CUDA & Numba-MLIR Ecosystem
<stdfloat>. This standardizes types likestd::float16_tandstd::float128_t, allowing us to natively build true 256-bit complex numbers (std::complex<std::float128_t>) that align with NumPy arrays without writing custom struct hacks.Questions for the Maintainers
cibuildwheeltargets to support C++23?<stdfloat>types, or should we still write unified type wrappers to guarantee cross-platform layout compatibility with NumPy?I'd love to hear the team's thoughts on coordinating this language upgrade with our evolving GPU backend!
All reactions