HPX V1.11.0 (Jun 30, 2025)#
This release is the last version of HPX that supports C++17. Future versions of HPX will require compilation using C++20 or above.
General changes#
Added synchronous versions of all collective operations. Added global predefined communicator objects that are accessible through new APIs:
hpx::collectives::get_world_communicator()refers to all localities andhpx::collectives::get_local_communicator()refers to all threads on the calling locality. We unified the interfaces of the different communicator objects.Added
hpx::experimental::run_on_allallowing to run a given function (possibly concurrently) using a given execution policy.Added a helper object
hpx::runtime_managerthat simplifies the initialization of HPX without needing to modify themainfunction of the application.We improved the compatibility with various accelerator frameworks (SYCL, OneAPI).
Applied build system changes that allow building HPX without any prerequisites. This requires to pass
-DHPX_WITH_FETCH_HWLOC=Onand-DHPX_WITH_FETCH_BOOST=Onto the CMake configuration.We have performed a lot of code cleanup and refactoring to improve the overall code quality and decrease compile times.
Added the
hpx::containsandhpx::contains_subrangeparallel algorithms.Adapted many of HPX’ parallel algorithms to be usable with senders/receivers.
Breaking changes#
We have moved most of the APIs that were defined in the namespace
hpx::parallel::executionto the namespacehpx::execution::experimental. It was not possible to add compatibility facilities that will allow to continue using the old APIs, applications will have to be changed in order to continue functioning correctly.The CMake configuration parameter
HPX_WITH_RUN_MAIN_EVERYWHEREis now deprecated and will be removed in the future. Use the preprocessor macroHPX_HAVE_RUN_MAIN_EVERYWHEREon a target-by-target case instead.Removed the dysfunctional libfabric parcelport.
Removed features that were long deprecated (starting V1.8): -
hpx::flush,hpx::endl,hpx::async_flush,hpx::async_endl- Various enumerator types are now only available asclass enumrequiring explicit scoped use of the enumerator values - Various non-conforming overloads of parallel algorithms -hpx::for_loopand friends (now only available ashpx::experimental::for_loop)hpx::parallel::inductionis now only available ashpx::experimental::inductionhpx::parallel::reductionand friends are now only available ashpx::experimental::reductionhpx::assertion::source_locationis now only available ashpx::source_locationhpx::lcos::split_futureis now only available ashpx::split_futurehpx::lcos::waitand friends have been removed altogetherhpx::lcos::wait_anyand friends are now only available ashpx::wait_anyhpx::lcos::wait_someand friends are now only available ashpx::wait_somehpx::lcos::wait_eachand friends are now only available ashpx::wait_eachhpx::lcos::wait_alland friends are now only available ashpx::wait_allhpx::lcos::when_alland friends are now only available ashpx::when_allhpx::lcos::when_anyand friends are now only available ashpx::when_anyhpx::lcos::when_eachand friends are now only available ashpx::when_eachhpx::lcos::when_someand friends are now only available ashpx::when_somehpx::util::optionaland related facilities are now only available ashpx::optionalhpx::util::bindand related facilities are now only available ashpx::bindhpx::util::functionand friends are now only available ashpx::functionhpx::traits::is_bound_actionand related facilities are now only available ashpx::is_bound_actionhpx::traits::is_bind_expressionand related facilities are now only available ashpx::is_bind_expressionhpx::traits::is_placeholderand related facilities are now only available ashpx::is_placeholderhpx::lcos::futureand related facilities are now only available ashpx::futurehpx::memory::intrusive_ptris now only available ashpx::intrusive_ptrhpx::lcos::local::barrieris now only available ashpx::barrierhpx::lcos::barrieris now only available ashpx::distributed::barrierhpx::lcos::local::cpp20_binary_semaphoreis now only available ashpx::detail::binary_semaphorehpx::lcos::local::condition_variableand friends are now only available ashpx::condition_variablehpx::lcos::local::counting_semaphoreand friends are now only available ashpx::counting_semaphorehpx::lcos::local::cpp20_latchand is now only available ashpx::latchhpx::lcos::latchand is now only available ashpx::distributed::latchhpx::lcos::local::upgrade_lockand friends are now only available ashpx::upgrade_lockhpx::lcos::local::mutexand friends are now only available ashpx::mutexhpx::lcos::local::spinlockand friends are now only available ashpx::spinlockhpx::lcos::local::call_onceand friends are now only available ashpx::call_oncehpx::util::annotated_functionand is now only available ashpx::annotated_functionhpx::components::abstract_simple_component_baseand is now only available ashpx::components::abstract_component_basehpx::naming::id_typeand is now only available ashpx::id_type
Closed issues#
Issue #6699 - Catch lower-level runtime error
Issue #6696 - HPX master breaks with Kokkos
Issue #6691 - minimum_category doesn’t work with custom iterator categories
Issue #6681 - build break - missing ‘;’
Issue #6658 - CMake error upon building HPX manually
Issue #6648 - Asio V1.34 deprecates io_context::work
Issue #6640 - iterator_facade doesn’t work with custom iterator categories
Issue #6636 - problem with hpx::collectives::exclusive_scan
Issue #6623 - HPX serialization error with std::vector<std::vector<std::vector<float>>>
Issue #6616 - Add flux support to HPX to run on El Cap
Issue #6615 - Too many fails test after installed hpx
Issue #6605 - Partitionend vector copy constructor is broken
Issue #6586 - Bullet points in quick start/installing HPX section in documentation incorrectly rendered
Issue #6563 - Compilation issues on Grace Hopper
Issue #6544 - Errors in Public Distributed Api for all_to_all and gather_there
Issue #6519 - Option –hpx:queuing=local-priority-lifo is not configured
Issue #6501 - HPX 1.10 Failed Linking CXX executable for arm64-osx
Issue #5728 - Add optional fetch_content support for needed Boost libraries
Closed pull requests#
PR #6716 - Fixing some of the reported linker warnings
PR #6705 - Adding gcc/15 to jenkins
PR #6701 - Attempting to fix shutdown hang on exception_info
PR #6698 - Making sure .hpp.in files are not being installed
PR #6697 - Minor docs fix
PR #6695 - Adding missing ‘;’
PR #6693 - Adding llvm/19 and 20 and cmake/4 Jenkins
PR #6692 - Better implementation of minimal_category
PR #6690 - Fixing bad #include in example
PR #6689 - Fix unreachable code warning in wait_all
PR #6687 - lci pp: change default ndevices=2 and progress_type=worker; improve document
PR #6686 - lci pp: upgrade LCI autofetch target to 1.7.9
PR #6685 - Improve run_on_all implementation and tests
PR #6683 - Fix bad element comparison for reduce_by_key
PR #6682 - Add C++23 std::generator equivalence test and fix missing semicolon
PR #6680 - Add oneapi device init workaround
PR #6679 - Fix sycl deprecations
PR #6678 - Fix oneapi overloads
PR #6677 - Offer a runtime manager object
PR #6676 - Mention the HPX book
PR #6675 - Bump required version of JSON library
PR #6674 - Issue 6631
PR #6673 - Fix: FindTBB.cmake cannot find correct TBB library. #6504
PR #6672 - Update modules.rst
PR #6670 - Add base template template param to execution_policy
PR #6669 - Add execution policy support to run_on_all
PR #6667 - Making sure bound threads are rescheduled on their original core
PR #6666 - Improve documentation for reduction operations
PR #6664 - Fix CMake template when fetching Boost
PR #6663 - More run_on_all overloads
PR #6662 - Fix “unary minus operator applied to unsigned type” warning
PR #6661 - Adding simple experimental::run_on_all
PR #6659 - fix(reduce): Initialize accumulator with init instead of first element
PR #6656 - Add missing channel_communicator::get_info
PR #6652 - Adding channel-based ping-pong example
PR #6650 - Adding constructor overloads to partitioned_vector
PR #6649 - Remove the use of deprecated asio::io_context::work
PR #6645 - Fixing collectives::exclusive_scan
PR #6644 - Update result_type in set_union.hpp
PR #6643 - Update result_type in set_union.hpp
PR #6642 - Allowing to use custom iterator tags with iterator_facade
PR #6641 - Allowing for zip-iterator to refer to sequences of different length
PR #6639 - docs: Fix spelling in example dictionary
PR #6638 - Update set_union.hpp
PR #6637 - lci/mpi pp: fix the case when non-zero-copy data is larger than INT_MAX
PR #6635 - Adding simplified reduction overload
PR #6634 - Fixed issue 6634: Unqualified calls to insertion_sort
PR #6633 - Increase timeouts for CircleCI tests
PR #6630 - Fix CPUId test
PR #6628 - Link aclocal with aclocal-1.16 as hwloc asks for it
PR #6626 - Fixing MPI parcel port issue exposed by #6623
PR #6622 - Newbranch:HPX-Based Task Scheduler with CUDA-Quantum Integration & Benchmarking
PR #6621 - HPX-Based Task Scheduler with CUDA-Quantum Integration & Benchmarking
PR #6620 - new test: very big tchunk
PR #6619 - mpi pp: fix transmission chunk send
PR #6617 - Adding support for the Flux job scheduling environment
PR #6614 - Fix fallback to module mode for CMake finding Boost
PR #6613 - Fix partitioned_vector_handle_values test
PR #6612 - Fixing naming convention for pp constant
PR #6611 - Fix Hwloc fetch content
PR #6610 - Add docs for synchronous collective operations
PR #6609 - Update perftest CI reference measurements
PR #6608 - Partially support data parallel for_loop
PR #6607 - Cleaning up copy_component facility
PR #6606 - Making sure copy_component creates a new gid
PR #6600 - Fixing sync collectives
PR #6599 - Make HPX_HAVE_RUN_MAIN_EVERYWHERE application specific
PR #6598 - Adding synchronous collective operations
PR #6596 - Minor fixes and optimizations
PR #6595 - Rfa parallel
PR #6594 - Move get_stack_ptr to source
PR #6593 - Fix outdated documentation and missing flags
PR #6592 - HPX_HAVE_THREADS_GET_STACK_POINTER to match builtin_frame_address feature test
PR #6591 - Feature test for __builtin_frame_address
PR #6590 - Add device guard for noexcept
PR #6587 - Fix bullet points in Quickstart
PR #6585 - Fixed escape characters format to handle warning due to misinterpretation of syntax
PR #6583 - Execute feature test for at_quick_exit
PR #6582 - Accommodate for CircleCI reduce available number of cores to two
PR #6581 - Attempting to work around a Boost.Spirit problem
PR #6580 - mpi pp: fix messages larger than INT_MAX
PR #6578 - Remove leftovers from libfabric parcelport
PR #6577 - Download Boost from their own archives, not from Sourceforge
PR #6576 - Fix CMake warning issued since CMake V3.30
PR #6575 - Replace previously downloaded CDash conv.xsl with local version
PR #6570 - Update exception_list.hpp
PR #6569 - Update exception_list.hpp
PR #6567 - Fix vectorization error on copy algorithm
PR #6566 - lci pp: fix messages larger than INT_MAX
PR #6565 - Moving most of APIs from hpx::parallel::execution to hpx::execution::experimental
PR #6564 - Remove superfluous HPX_MOVE()
PR #6562 - Fix doc return type of broadcast_to
PR #6560 - Fixes for bit_cast on 32bit systems
PR #6559 - Making sure that all parcelport counters are unavailable if no networking is needed or configured
PR #6558 - Remove CSCS CI’s
PR #6556 - Set copyright year in generated files
PR #6553 - Fix omp vectorization pragma errors
PR #6551 - Update building_hpx.rst
PR #6550 - Partitioned vector updates
PR #6549 - Fix CMake conditionals checking ENV variables
PR #6548 - Update CONTRIBUTING.md
PR #6546 - Fix incorrect signature of distributed API functions
PR #6543 - Throwing an exception derived from std::bad_alloc on OOM conditions
PR #6539 - Use thread-safe cache in thread_local_caching_allocator
PR #6537 - Update README.rst
PR #6531 - More fixes for the Boost package
PR #6527 - Improve the LCI parcelport documentation
PR #6525 - Addressing cmake warnings issued starting V3.30
PR #6522 - Fixing distance test
PR #6520 - Adding optional handshakes to acknowledge the received data
PR #6518 - Make sure that –hpx:ini log settings take effect
PR #6512 - Minor cleanup of future_data
PR #6510 - Include Boost as CMake subproject
PR #6509 - Add components documentation
PR #6508 - Fix typo: s/unititiallized/uninitialized/
PR #6507 - Update LSU Jenkins libraries to match Rostam 3.0 with RHEL9
PR #6503 - Fix 2 tests on FreeBSD by initializing freebsd_environ
PR #6499 - Fix crash in get_executable_filename on FreeBSD
PR #6498 - Avoid rewriting defines.hpp
PR #6497 - Contains and contains_subrange parallel algorithm implementation GSOC 2024
PR #6496 - Prevent usage of CMake try_run on crosscompiling
PR #6494 - Add unit test cases and fixes for the S/R versions of the parallel algorithms
PR #6487 - Fixing security vulnerabilities reported by MSVC security checks
PR #6486 - Create codeql.yml
PR #6474 - Remove remnants of libfabric parcelport
PR #6473 - Add documentation for distributed implementations of post, async, sync and dataflow
PR #6471 - Add distance.cpp test in CMake
PR #6468 - Small vector relocation
PR #6448 - Standardising Benchmarks, with support for nanobench as an option for its backend
PR #6365 - Release V1.10.0
PR #6089 - Implementing p2079