Repository navigation
refactor: remove legacy Select surface - #49
Conversation
4lmighty
left a comment
There was a problem hiding this comment.
The legacy-surface cleanup looks consistent with the canonical Select direction, but the current head does not build. randomized_indices() now uses std::iota, which is declared in <numeric>, and select.h does not include that header. CI fails during compilation in every TU that includes select.h, so this is blocking until the direct include is added.
| auto randomized_indices() -> std::vector<size_t> { | ||
| auto indices = communication_indices(std::make_index_sequence<sizeof...(Ts) + 1>()); | ||
| std::vector<size_t> indices(sizeof...(Ts) + 1); | ||
| std::iota(indices.begin(), indices.end(), 0); |
There was a problem hiding this comment.
std::iota requires <numeric>, but this header currently only includes eo/go.h and <tuple>. The Build workflow is failing with error: 'iota' is not a member of 'std' from this line. Please add #include <numeric> directly in select.h rather than relying on a transitive include.
There was a problem hiding this comment.
Fixed by including directly in select.h so std::iota no longer relies on transitive includes.
4lmighty
left a comment
There was a problem hiding this comment.
Re-reviewed the latest head (2de90c7). The previous blocker is fixed by including <numeric> directly in select.h, and I don't see any new code-level blockers in the legacy Select surface removal. Style is green; Build is still running on this head at the time of review, so from the code review side this is LGTM pending CI.
Summary
try_index()/recv<N>()CaseDefaultandprocess<N>()APIsMotivation
#45 froze the canonical Select translation shape, #47 introduced the runtime surface, and #48 migrated runtime/example call sites. This PR completes that migration so the repository has one translation-facing Select form before large-scale porting begins.
With default represented by
try_index()and ordinary C++default:, communication indices now correspond only to source communication clauses and the old position-dependent default representation is no longer part of the API.Scope
This removes legacy translation surface only. Nil channels,
recv2, and stronger exactly-one blocking arbitration remain separate follow-up work.