HPX V2.1.0 (TBD)#
Breaking changes#
The execution-policy overloads of
hpx::ranges::all_of,any_of,none_of,count,count_if,contains,equal,starts_with,ends_with,contains_subrange,is_partitioned, andlexicographical_comparenow follow P3179. Range arguments must modelstd::ranges::random_access_rangeandstd::ranges::sized_range; iterator/sentinel arguments must modelstd::random_access_iteratorandstd::sized_sentinel_for. Overloads without an execution policy retain their existing constraints. In particular, thecontainsiterator/sentinel overload requires both types to modelstd::input_iterator.The P3179-aligned overloads use standard ranges callable defaults and pass predicates and projections by value. Their concept-based constraints may produce different diagnostics than the previous iterator
static_assertchecks. Code that explicitly names HPX’s former default callable types may need to use the correspondingstd::rangescallable types.The
countandcontainstask-policy overloads store an owned copy of copyable search values in their asynchronous operation state. Noncopyable lvalues, including arrays, are borrowed and must remain valid until the returned future becomes ready, even if the future is discarded.
Supervision Module#
A peer fenced by failure detection is now removed from the registry, so
snapshot_peers()no longer lists it; its fence is kept (PR #7922). That removal no longer drops a peer that came back with a new epoch while it was being removed, which left the peer unmonitored, and the eviction a terminal lifecycle notification schedules no longer removes a peer that started a newer epoch meanwhile (Issue #7924, PR #8027).