HPX V1.5.0 (Sep 02, 2020)¶
General changes¶
The main focus of this release is on APIs and C++20 conformance. We have added many new C++20 features and adapted multiple algorithms to be fully C++20 conformant. As part of the modularization we have begun specifying the public API of HPX in terms of headers and functionality, and aligning it more closely to the C++ standard. All non-distributed modules are now in place, along with an experimental option to completely disable distributed features in HPX. We have also added experimental asynchronous MPI and CUDA executors. Lastly this release introduces CMake targets for depending projects, performance improvements, and many bug fixes.
We have added the C++20 features
hpx::jthread
andhpx::stop_token
.hpx::condition_variable_any
now exposes new functions supportinghpx::stop_token
.We have added
hpx::stable_sort
based on Francisco Tapia’s implementation.We have adapted existing synchronization primitives to be fully conformant C++20:
hpx::barrier
,hpx::latch
,hpx::counting_semaphore
, andhpx::binary_semaphore
.We have started using customization point objects (CPOs) to make the corresponding algorithms fully conformant to C++20 as well as to make algorithm extension easier for the user.
all_of
/any_of
/none_of
,copy
,count
,destroy
,equal
,fill
,find
,for_each
,generate
,mismatch
,move
,reduce
,transform_reduce
are using those CPOs (all in namespacehpx
). We also have adapted their correspondinghpx::ranges
versions to be conforming to C++20 in this release.We have adapted support for
co_await
to C++20, in addition tohpx::future
it now also supportshpx::shared_future
. We have also added allocator support for futures returned byco_return
. It is no longer in theexperimental
namespace.We added serialization support for
std::variant
andstd::tuple
.result_of
andis_callable
are now deprecated and replaced byinvoke_result
andis_invocable
to conform to C++20.We continued with the modularization, making it easier for us to add the new experimental
HPX_WITH_DISTRIBUTED_RUNTIME
CMake option (see below) . An significant amount of headers have been deprecated. We adapted the namespaces and headers we could to be closer to the standard ones (Public API). Depending code should still compile, however warnings are now generated instructing to change the include statements accordingly.It is now possible to have a basic CUDA support including a helper function to get a future from a CUDA stream and target handling. They are available under the
hpx::cuda::experimental
namespace and they can be enabled with the-DHPX_WITH_ASYNC_CUDA=ON
CMake option.We added a new
hpx::mpi::experimental
namespace for getting futures from an asynchronous MPI call and a new minimal MPI executorhpx::mpi::experimental::executor
. These can be enabled with the-DHPX_WITH_ASYNC_MPI=On
CMake option.A polymorphic executor has been implemented to reduce compile times as a function accepting executors can potentially be instantiated only once instead of multiple times with different executors. It accepts the function signature as a template argument. It needs to be constructed from any other executor. Please note, that the function signatures that can be scheduled using
then_execute
,bulk_sync_execute
,bulk_async_execute
andbulk_then_execute
are slightly different (See the comment in PR #4514 for more details).The underlying executor of
block_executor
has been updated to a newer one.We have added a parameter to
auto_chunk_size
to control the amount of iterations to measure.All executor parameter hooks can now be exposed through the executor itself. This will allow to deprecate the
.with()
functionality on execution policies in the future. This is also a first step towards simplifying our executor APIs in preparation for the upcoming C++23 executors (senders/receivers).We have moved all of the existing APIs related to resiliency into the namespace
hpx::resiliency::experimental
. Please note this is a breaking change without backwards-compatibility option. We have converted all of those APIs to be based on customization point objects. Two new executors have been added to enable easy integration of the existing resiliency features with other facilities (like the parallel algorithms):replay_executor
andreplicate_executor
.We have added performance counters type information (
aggregating
,monotonically increasing
,average count
,average timer
, etc.).HPX threads are now re-scheduled on the same worker thread they were suspended on to avoid cache misses from moving from one thread to the other. This behavior doesn’t prevent the thread from being stolen, however.
We have added a new configuration option
hpx.exception_verbosity
to allow to control the level of verbosity of the exceptions (3 levels available).broadcast_to
,broadcast_from
,scatter_to
andscatter_from
have been added to the collectives, modernization ofgather_here
andgather_there
with futures taken by rvalue references. See the breaking change onall_to_all
in the next section. None of the collectives need supporting macros anymore (e.g. specifying the data types used for a collective operation usingHPX_REGISTER_ALLGATHER
and similar is not needed anymore).New API functions have been added: a) to get the number of cores which are idle (
hpx::get_idle_core_count
) and b) returning a bitmask representing the currently idle cores (hpx::get_idle_core_mask
).We have added an experimental option to only enable the local runtime, you can disable the distributed runtime with
HPX_WITH_DISTRIBUTED_RUNTIME=OFF
. You can also enable the local runtime by using the--hpx:local
runtime option.We fixed task annotations for actions.
The alias
hpx::promise
tohpx::lcos::promise
is now deprecated. You can usehpx::lcos::promise
directly instead.hpx::promise
will refer to the local-only promise in the future.We have added a
prepare_checkpoint
API function that calculates the amount of necessary buffer space for a particular set of arguments checkpointed.We have added
hpx::upgrade_lock
andhpx::upgrade_to_unique_lock
, which makehpx::shared_mutex
(and similar) usable in more flexible ways.We have changed the CMake targets exposed to the user, it now includes
HPX::hpx
,HPX::wrap_main
(int main
as the first HPX thread of the application, see Starting the HPX runtime),HPX::plugin
,HPX::component
. The CMake variablesHPX_INCLUDE_DIRS
andHPX_LIBRARIES
are deprecated and will be removed in a future release, you should now link directly to theHPX::hpx
CMake target.A new example is demonstrating how to create and use a wrapping executor (
quickstart/executor_with_thread_hooks.cpp
)A new example is demonstrating how to disable thread stealing during the execution of parallel algorithms (
quickstart/disable_thread_stealing_executor.cpp
)We now require for our CMake build system configuration files to be formatted using cmake-format.
We have removed more dependencies on various Boost libraries.
We have added an experimental option enabling unity builds of HPX using the
-DHPX_WITH_UNITY_BUILD=On
CMake option.Many bug fixes.
Breaking changes¶
HPX now requires a C++14 capable compiler. We have set the HPX C++ standard automatically to C++14 and if it needs to be set explicitly, it should be specified through the
CMAKE_CXX_STANDARD
setting as mandated by CMake. TheHPX_WITH_CXX*
variables are now deprecated and will be removed in the future.Building and using HPX is now supported only when using CMake V3.13 or later, Boost V1.64 or newer, and when compiling with clang V5, gcc V7, or VS2019, or later. Other compilers might still work but have not been tested thoroughly.
We have added a
hpx::init_params
struct to pass parameters for HPX initialization e.g. the resource partitioner callback to initialize thread pools (Using the resource partitioner).The
all_to_all
algorithm is renamed toall_gather
, and the newall_to_all
algorithm is not compatible with the old one.We have moved all of the existing APIs related to resiliency into the namespace
hpx::resiliency::experimental
.
Closed issues¶
Issue #4918 - Rename distributed_executors module
Issue #4900 - Adding JOSS status badge to README
Issue #4897 - Compiler warning, deprecated header used by HPX itself
Issue #4886 - A future bound to an action executing on a different locality doesn’t capture exception state
Issue #4880 - Undefined reference to main build error when HPX_WITH_DYNAMIC_HPX_MAIN=OFF
Issue #4877 - hpx_main might not able to start hpx runtime properly
Issue #4850 - Issues creating templated component
Issue #4829 - Spack package & HPX_WITH_GENERIC_CONTEXT_COROUTINES
Issue #4820 - PAPI counters don’t work
Issue #4818 - HPX can’t be used with IO pool turned off
Issue #4816 - Build of HPX fails when find_package(Boost) is called before FetchContent_MakeAvailable(hpx)
Issue #4813 - HPX MPI Future failed
Issue #4811 - Remove HPX::hpx_no_wrap_main target before 1.5.0 release
Issue #4810 - In hpx::for_each::invoke_projected the hpx::util::decay is misguided
Issue #4787 - transform_inclusive_scan gives incorrect results for non-commutative operator
Issue #4786 - transform_inclusive_scan tries to implicitly convert between types, instead of using the provided conv function
Issue #4779 - HPX build error with GCC 10.1
Issue #4766 - Move HPX.Compute functionality to experimental namespace
Issue #4763 - License file name
Issue #4758 - CMake profiling results
Issue #4755 - Building HPX with support for PAPI fails
Issue #4754 - CMake cache creation breaks when using HPX with mimalloc
Issue #4752 - HPX MPI Future build failed
Issue #4746 - Memory leak when using dataflow icw components
Issue #4731 - Bug in stencil example, calculation of locality IDs
Issue #4723 - Build fail with NETWORKING OFF
Issue #4720 - Add compatibility headers for modules that had their module headers implicitly generated in 1.4.1
Issue #4719 - Undeprecate some module headers
Issue #4712 - Rename HPX_MPI_WITH_FUTURES option
Issue #4709 - Make deprecation warnings overridable in dependent projects
Issue #4691 - Suggestion to fix and enhance the thread_mapper API
Issue #4686 - Fix tutorials examples
Issue #4685 - HPX distributed map fails to compile
Issue #4680 - Build error with HPX_WITH_DYNAMIC_HPX_MAIN=OFF
Issue #4679 - Build error for hpx w/ Apex on Summit
Issue #4675 - build error with HPX_WITH_NETWORKING=OFF
Issue #4674 - Error running Quickstart tests on OS X
Issue #4662 - MPI initialization broken when networking off
Issue #4652 - How to fix distributed action annotation
Issue #4650 - thread descriptions are broken…again
Issue #4648 - Thread stacksize not properly set
Issue #4647 - Rename generated collective headers in modules
Issue #4639 - Update deprecation warnings in compatibility headers to point to collective headers
Issue #4628 - mpi parcelport totally broken
Issue #4619 - Fully document hpx_wrap behaviour and targets
Issue #4612 - Compilation issue with HPX 1.4.1 and 1.4.0
Issue #4594 - Rename modules
Issue #4578 - Default value for HPX_WITH_THREAD_BACKTRACE_DEPTH
Issue #4572 - Thread manager should be given a runtime_configuration
Issue #4571 - Add high-level documentation to new modules
Issue #4569 - Annoying warning when compiling - pls suppress or fix it.
Issue #4555 - HPX_HAVE_THREAD_BACKTRACE_ON_SUSPENSION compilation error
Issue #4543 - Segfaults in Release builds using sleep_for
Issue #4539 - Compilation Error when HPX_MPI_WITH_FUTURES=ON
Issue #4537 - Linking issue with libhpx_initd.a
Issue #4535 - API for checking if pool with a given name exists
Issue #4523 - Build of PR #4311 (git tag 9955e8e) fails
Issue #4519 - Documentation problem
Issue #4513 - HPXConfig.cmake contains ill-formed paths when library paths use backslashes
Issue #4507 - User-polling introduced by MPI futures module should be more generally usable
Issue #4506 - Make sure force_linking.hpp is not included in main module header
Issue #4501 - Fix compilation of PAPI tests
Issue #4497 - Add modules CI checks
Issue #4489 - Polymorphic executor
Issue #4476 - Use CMake targets defined by FindBoost
Issue #4473 - Add vcpkg installation instructions
Issue #4470 - Adapt hpx::future to C++20 co_await
Issue #4468 - Compile error on Raspberry Pi 4
Issue #4466 - Compile error on Windows, current stable:
Issue #4453 - Installing HPX on fedora with dnf is not adding cmake files
Issue #4448 - New std::variant serialization broken
Issue #4438 - Add performance counter flag is monotically increasing
Issue #4436 - Build problem: same code build and works with 1.4.0 but it doesn’t with 1.4.1
Issue #4429 - Function descriptions not supported in distributed
Issue #4423 - –hpx:ini=hpx.lock_detection=0 has no effect
Issue #4422 - Add performance counter metadata
Issue #4419 - Weird behavior for –hpx:print-counter-interval with large numbers
Issue #4401 - Create module repository
Issue #4400 - Command line options conflict related to performance counters
Issue #4349 - –hpx:use-process-mask option throw an exception on OS X
Issue #4345 - Move gh-pages branch out of hpx repo
Issue #4323 - Const-correctness error in assignment operator of compute::vector
Issue #4318 - ASIO breaks with C++2a concepts
Issue #4317 - Application runs even if –hpx:help is specified
Issue #4063 - Document hpxcxx compiler wrapper
Issue #3983 - Implement the C++20 Synchronization Library
Issue #3696 - C++11 constexpr support is now required
Issue #3623 - Modular HPX branch and an alternative project layout
Issue #2836 - The worst-case time complexity of parallel::sort seems to be O(N^2).
Closed pull requests¶
PR #4936 - Minor documentation fixes part 2
PR #4935 - Add copyright and license to joss paper file
PR #4934 - Adding Semicolon in Documentation
PR #4932 - Fixing compiler warnings
PR #4931 - Small documentation formatting fixes
PR #4930 - Documentation Distributed HPX applications localvv with local_vv
PR #4929 - Add final version of the JOSS paper
PR #4928 - Add HPX_NODISCARD to enable_user_polling structs
PR #4926 - Rename distributed_executors module to executors_distributed
PR #4925 - Making transform_reduce conforming to C++20
PR #4923 - Don’t acquire lock if not needed
PR #4921 - Update the release notes for the release candidate 3
PR #4920 - Disable libcds release
PR #4919 - Make cuda event pool dynamic instead of fixed size
PR #4917 - Move chrono functionality to hpx::chrono namespace
PR #4916 - HPX_HAVE_DEPRECATION_WARNINGS needs to be set even when disabled
PR #4915 - Moving more action related files to actions modules
PR #4914 - Add alias targets with namespaces used for exporting
PR #4912 - Aggregate initialize CPOs
PR #4910 - Explicitly specify hwloc root on Jenkins CSCS builds
PR #4908 - Fix algorithms documentation
PR #4907 - Remove HPX::hpx_no_wrap_main target
PR #4906 - Fixing unused variable warning
PR #4905 - Adding specializations for simple for_loops
PR #4904 - Update boost to 1.74.0 for the newest jenkins configs
PR #4903 - Hide GITHUB_TOKEN environment variables from environment variable output
PR #4902 - Cancel previous pull requests builds before starting a new one with Jenkins
PR #4901 - Update public API list with updated algorithms
PR #4899 - Suggested changes for HPX V1.5 release notes
PR #4898 - Minor tweak to hpx::equal implementation
PR #4896 - Making generate() and generate_n conforming to C++20
PR #4895 - Update apex tag
PR #4894 - Fix exception handling for tasks
PR #4893 - Remove last use of std::result_of, removed in C++20
PR #4892 - Adding replay_executor and replicate_executor
PR #4889 - Restore old behaviour of not requiring linking to hpx_wrap when HPX_WITH_DYNAMIC_HPX_MAIN=OFF
PR #4887 - Making sure remotely thrown (non-hpx) exceptions are properly marshaled back to invocation site
PR #4885 - Adapting hpx::find and friends to C++20
PR #4884 - Adapting mismatch to C++20
PR #4883 - Adapting hpx::equal to be conforming to C++20
PR #4882 - Fixing exception handling for hpx::copy and adding missing tests
PR #4881 - Adds different runtime exception when registering thread with the HPX runtime
PR #4876 - Adding example demonstrating how to disable thread stealing during the execution of parallel algorithms
PR #4874 - Adding non-policy tests to all_of, any_of, and none_of
PR #4873 - Set CUDA compute capability on rostam Jenkins builds
PR #4872 - Force partitioned vector scan tests to run serially
PR #4870 - Making move conforming with C++20
PR #4869 - Making destroy and destroy_n conforming to C++20
PR #4868 - Fix miscellaneous header problems
PR #4867 - Add CPOs for for_each
PR #4865 - Adapting count and count_if to be conforming to C++20
PR #4864 - Release notes 1.5.0
PR #4863 - adding libcds-hpx tag to prepare for hpx1.5 release
PR #4862 - Adding version specific deprecation options
PR #4861 - Limiting executor improvements
PR #4860 - Making fill and fill_n compatible with C++20
PR #4859 - Adapting all_of, any_of, and none_of to C++20
PR #4857 - Improve libCDS integration
PR #4856 - Correct typos in the documentation of the hpx performance counters
PR #4854 - Removing obsolete code
PR #4853 - Adding test that derives component from two other components
PR #4852 - Fix mpi_ring test in distributed mode by ensuring all ranks run hpx_main
PR #4851 - Converting resiliency APIs to tag_invoke based CPOs
PR #4849 - Enable use of future_overhead test when DISTRIBUTED_RUNTIME is OFF
PR #4847 - Fixing ‘error prone’ constructs as reported by Codacy
PR #4846 - Disable Boost.Asio concepts support
PR #4845 - Fix PAPI counters
PR #4843 - Remove dependency on various Boost headers
PR #4841 - Rearrange public API headers
PR #4840 - Fixing TSS problems during thread termination
PR #4839 - Fix async_cuda build problems when distributed runtime is disabled
PR #4837 - Restore compatibility for old (now deprecated) copy algorithms
PR #4836 - Adding CPOs for hpx::reduce
PR #4835 - Remove using util::result_of from namespace hpx
PR #4834 - Fixing the calculation of the number of idle cores and the corresponding idle masks
PR #4833 - Allow thread function destructors to yield
PR #4832 - Fixing assertion in split_gids and memory leaks in 1d_stencil_7
PR #4831 - Making sure MPI_CXX_COMPILE_FLAGS is interpreted as a sequence of options
PR #4830 - Update documentation on using HPX::wrap_main
PR #4827 - Update clang-newest configuration to use clang 10
PR #4826 - Add Jenkins configuration for rostam
PR #4825 - Move all CUDA functionality to hpx::cuda::experimental namespace
PR #4824 - Add support for building master/release branches to Jenkins configuration
PR #4821 - Implement customization point for hpx::copy and hpx::ranges::copy
PR #4819 - Allow finding Boost components before finding HPX
PR #4817 - Adding range version of stable sort
PR #4815 - Fix a wrong #ifdef for IO/TIMER pools causing build errors
PR #4814 - Replace hpx::function_nonser with std::function in error module
PR #4809 - Foreach adapt
PR #4808 - Make internal algorithms functions const
PR #4807 - Add Jenkins configuration for running on Piz Daint
PR #4806 - Update documentation links to new domain name
PR #4805 - Applying changes that resolve time complexity issues in sort
PR #4803 - Adding implementation of stable_sort
PR #4802 - Fix datapar header paths
PR #4801 - Replace boost::shared_array<T> with std::shared_ptr<T[]> if supported
PR #4799 - Fixing #include paths in compatibility headers
PR #4798 - Include the main module header (fixes partially #4488)
PR #4797 - Change cmake targets
PR #4794 - Removing 128bit integer emulation
PR #4793 - Make sure global variable is handled properly
PR #4792 - Replace enable_if with HPX_CONCEPT_REQUIRES_ and add is_sentinel_for constraint
PR #4790 - Move deprecation warnings from base template to template specializations for result_of etc. structs
PR #4789 - Fix hangs during assertion handling and distributed runtime construction
PR #4788 - Fixing inclusive transform scan algorithm to properly handle initial value
PR #4785 - Fixing barrier test
PR #4784 - Fixing deleter argument bindings in serialize_buffer
PR #4783 - Add coveralls badge
PR #4782 - Make header tests parallel again
PR #4780 - Remove outdated comment about hpx::stop in documentation
PR #4776 - debug print improvements
PR #4775 - Checkpoint cleanup
PR #4771 - Fix compilation with HPX_WITH_NETWORKING=OFF
PR #4767 - Remove all force linking leftovers
PR #4765 - Fix 1d stencil index calculation
PR #4764 - Force some tests to run serially
PR #4762 - Update pointees in compatibility headers
PR #4761 - Fix running and building of execution module tests on CircleCI
PR #4760 - Storing hpx_options in global property to speed up summary report
PR #4759 - Reduce memory requirements for our main shared state
PR #4757 - Fix mimalloc linking on Windows
PR #4756 - Fix compilation issues
PR #4753 - Re-adding API functions that were lost during merges
PR #4751 - Revert “Create coverage reports and upload them to codecov.io”
PR #4750 - Fixing possible race condition during termination detection
PR #4749 - Deprecate result_of and friends
PR #4748 - Create coverage reports and upload them to codecov.io
PR #4747 - Changing #include for MPI parcelport
PR #4745 - Add is_sentinel_for trait implementation and test
PR #4743 - Fix init_globally example after runtime mode changes
PR #4742 - Update SUPPORT.md
PR #4741 - Fixing a warning generated for unity builds with msvc
PR #4740 - Rename local_lcos and basic_execution modules
PR #4739 - Undeprecate a couple of hpx/modulename.hpp headers
PR #4738 - Conditionally test schedulers in thread_stacksize_current test
PR #4734 - Fixing a bunch of codacy warnings
PR #4733 - Add experimental unity build option to CMake configuration
PR #4730 - Fixing compilation problems with unordered map
PR #4729 - Fix APEX build
PR #4727 - Fix missing runtime includes for distributed runtime
PR #4726 - Add more API headers
PR #4725 - Add more compatibility headers for deprecated module headers
PR #4724 - Fix 4723
PR #4721 - Attempt to fixing migration tests
PR #4717 - Make the compatilibility headers macro conditional
PR #4716 - Add hpx/runtime.hpp and hpx/distributed/runtime.hpp API headers
PR #4714 - Add hpx/future.hpp header
PR #4713 - Remove hpx/runtime/threads_fwd.hpp and hpx/util_fwd.hpp
PR #4711 - Make module deprecation warnings overridable
PR #4710 - Add compatibility headers and other fixes after module header renaming
PR #4708 - Add termination handler for parallel algorithms
PR #4707 - Use hpx::function_nonser instead of std::function internally
PR #4706 - Move header file to module
PR #4705 - Fix incorrect behaviour of cmake-format check
PR #4704 - Fix resource tests
PR #4701 - Fix missing includes for future::then specializations
PR #4700 - Removing obsolete memory component
PR #4699 - Add short descriptions to modules missing documentation
PR #4696 - Rename generated modules headers
PR #4693 - Overhauling thread_mapper for public consumption
PR #4688 - Fix thread stack size handling
PR #4687 - Adding all_gather and fixing all_to_all
PR #4684 - Miscellaneous compilation fixes
PR #4683 - Fix HPX_WITH_DYNAMIC_HPX_MAIN=OFF
PR #4682 - Fix compilation of pack_traversal_rebind_container.hpp
PR #4681 - Add missing hpx/execution.hpp includes for future::then
PR #4678 - Typeless communicator
PR #4677 - Forcing registry option to be accepted without checks.
PR #4676 - Adding scatter_to/scatter_from collective operations
PR #4673 - Fix PAPI counters compilation
PR #4671 - Deprecate hpx::promise alias to hpx::lcos::promise
PR #4670 - Explicitly instantiate get_exception
PR #4667 - Add stopValue in Sentinel struct instead of Iterator
PR #4666 - Add release build on Windows to GitHub actions
PR #4664 - Creating itt_notify module.
PR #4663 - Mpi fixes
PR #4659 - Making sure declarations match definitions in register_locks implementation
PR #4655 - Fixing task annotations for actions
PR #4653 - Making sure APEX is linked into every application, if needed
PR #4651 - Update get_function_annotation.hpp
PR #4646 - Runtime type
PR #4645 - Add a few more API headers
PR #4644 - Fixing support for mpirun (and similar)
PR #4643 - Fixing the fix for get_idle_core_count() API
PR #4638 - Remove HPX_API_EXPORT missed in previous cleanup
PR #4636 - Adding C++20 barrier
PR #4635 - Adding C++20 latch API
PR #4634 - Adding C++20 counting semaphore API
PR #4633 - Unify execution parameters customization points
PR #4632 - Adding missing bulk_sync_execute wrapper to example executor
PR #4631 - Updates to documentation; grammar edits.
PR #4630 - Updates to documentation; moved hyperlink
PR #4624 - Export set_self_ptr in thread_data.hpp instead of with forward declarations where used
PR #4623 - Clean up export macros
PR #4621 - Trigger an error for older boost versions on power architectures
PR #4617 - Ignore user-set compatibility header options if the module does not have compatibility headers
PR #4616 - Fix cmake-format warning
PR #4615 - Add handler for serializing custom exceptions
PR #4614 - Fix error message when HPX_IGNORE_CMAKE_BUILD_TYPE_COMPATIBILITY=OFF
PR #4613 - Make partitioner constructor private
PR #4611 - Making auto_chunk_size execute the given function using the given executor
PR #4610 - Making sure the thread-local lock registration data is moving to the core the suspended HPX thread is resumed on
PR #4609 - Adding an API function that exposes the number of idle cores
PR #4608 - Fixing moodycamel namespace
PR #4607 - Moving winsocket initialization to core library
PR #4606 - Local runtime module etc.
PR #4604 - Add config_registry module
PR #4603 - Deal with distributed modules in their respective CMakeLists.txt
PR #4602 - Small module fixes
PR #4598 - Making sure current_executor and service_executor functions are linked into the core library
PR #4597 - Adding broadcast_to/broadcast_from to collectives module
PR #4596 - Fix performance regression in block_executor
PR #4595 - Making sure main.cpp is built as a library if HPX_WITH_DYNAMIC_MAIN=OFF
PR #4592 - Futures module
PR #4591 - Adapting co_await support for C++20
PR #4590 - Adding missing exception test for for_loop()
PR #4587 - Move traits headers to hpx/modulename/traits directory
PR #4586 - Remove Travis CI config
PR #4585 - Update macOS test blacklist
PR #4584 - Attempting to fix missing symbols in stack trace
PR #4583 - Fixing bad static_cast
PR #4582 - Changing download url for Windows prerequisites to circumvent bandwidth limitations
PR #4581 - Adding missing using placeholder::_X
PR #4579 - Move get_stack_size_name and related functions
PR #4575 - Excluding unconditional definition of class backtrace from global header
PR #4574 - Changing return type of hardware_concurrency() to unsigned int
PR #4570 - Move tests to modules
PR #4564 - Reshuffle internal targets and add HPX::hpx_no_wrap_main target
PR #4563 - fix CMake option typo
PR #4562 - Unregister lock earlier to avoid holding it while suspending
PR #4561 - Adding test macros supporting custom output stream
PR #4560 - Making sure hash_any::operator()() is linked into core library
PR #4559 - Fixing compilation if HPX_WITH_THREAD_BACKTRACE_ON_SUSPENSION=On
PR #4557 - Improve spinlock implementation to perform better in high-contention situations
PR #4553 - Fix a runtime_ptr problem at shutdown when apex is enabled
PR #4552 - Add configuration option for making exceptions less noisy
PR #4551 - Clean up thread creation parameters
PR #4549 - Test FetchContent build on GitHub actions
PR #4548 - Fix stack size
PR #4545 - Fix header tests
PR #4544 - Fix a typo in sanitizer build
PR #4541 - Add API to check if a thread pool exists
PR #4540 - Making sure MPI support is enabled if MPI futures are used but networking is disabled
PR #4538 - Move channel documentation examples to examples directory
PR #4536 - Add generic allocator for execution policies
PR #4534 - Enable compatibility headers for thread_executors module
PR #4532 - Fixing broken url in README.rst
PR #4531 - Update scripts
PR #4530 - Make sure module API docs show up in correct order
PR #4529 - Adding missing template code to module creation script
PR #4528 - Make sure version module uses HPX’s binary dir, not the parent’s
PR #4527 - Creating actions_base and actions module
PR #4526 - Shared state for cv
PR #4525 - Changing sub-name sequencing for experimental namespace
PR #4524 - Add API guarantee notes to API reference documentation
PR #4522 - Enable and fix deprecation warnings in execution module
PR #4521 - Moves more miscellaneous files to modules
PR #4520 - Skip execution customization points when executor is known
PR #4518 - Module distributed lcos
PR #4516 - Fix various builds
PR #4515 - Replace backslashes by slashes in windows paths
PR #4514 - Adding polymorphic_executor
PR #4512 - Adding C++20 jthread and stop_token
PR #4510 - Attempt to fix APEX linking in external packages again
PR #4508 - Only test pull requests (not all branches) with GitHub actions
PR #4505 - Fix duplicate linking in tests (ODR violations)
PR #4504 - Fix C++ standard handling
PR #4503 - Add CMakelists file check
PR #4500 - Fix .clang-format version requirement comment
PR #4499 - Attempting to fix hpx_init linking on macOS
PR #4498 - Fix compatibility of pool_executor
PR #4496 - Removing superfluous SPDX tags
PR #4494 - Module executors
PR #4493 - Pack traversal module
PR #4492 - Update copyright year in documentation
PR #4491 - Add missing current_executor header
PR #4490 - Update GitHub actions configs
PR #4487 - Properly dispatch exceptions thrown from hpx_main to be rethrown from hpx::init/hpx::stop
PR #4486 - Fixing an initialization order problem
PR #4485 - Move miscellaneous files to their rightful modules
PR #4483 - Clean up imported CMake target naming
PR #4481 - Add vcpkg installation instructions
PR #4479 - Add hints to allow to specify MIMALLOC_ROOT
PR #4478 - Async modules
PR #4475 - Fix rp init changes
PR #4474 - Use #pragma once in headers
PR #4472 - Add more descriptive error message when using x86 coroutines on non-x86 platforms
PR #4467 - Add mimalloc find cmake script
PR #4465 - Add thread_executors module
PR #4464 - Include module
PR #4462 - Merge hpx_init and hpx_wrap into one static library
PR #4461 - Making thread_data test more realistic
PR #4460 - Suppress MPI warnings in version.cpp
PR #4459 - Make sure pkgconfig applications link with hpx_init
PR #4458 - Added example demonstrating how to create and use a wrapping executor
PR #4457 - Fixing execution of thread exit functions
PR #4456 - Move backtrace files to debugging module
PR #4455 - Move deadlock_detection and maintain_queue_wait_times source files into schedulers module
PR #4450 - Fixing compilation with std::filesystem enabled
PR #4449 - Fixing build system to actually build variant test
PR #4447 - This fixes an obsolete #include
PR #4446 - Resume tasks where they were suspended
PR #4444 - Minor CUDA fixes
PR #4443 - Add missing tests to CircleCI config
PR #4442 - Adding a tag to all auto-generated files allowing for tools to visually distinguish those
PR #4441 - Adding performance counter type information
PR #4440 - Fixing MSVC build
PR #4439 - Link HPX::plugin and component privately in hpx_setup_target
PR #4437 - Adding a test that verifies the problem can be solved using a trait specialization
PR #4434 - Clean up Boost dependencies and copy string algorithms to new module
PR #4433 - Fixing compilation issues (!) if MPI parcelport is enabled
PR #4431 - Ignore warnings about name mangling changing
PR #4430 - Add performance_counters module
PR #4428 - Don’t add compatibility headers to module API reference
PR #4426 - Add currently failing tests on GitHub actions to blacklist
PR #4425 - Clean up and correct minimum required versions
PR #4424 - Making sure hpx.lock_detection=0 works as advertized
PR #4421 - Making sure interval time stops underlying timer thread on termination
PR #4417 - Adding serialization support for std::variant (if available) and std::tuple
PR #4415 - Partially reverting changes applied by PR 4373
PR #4414 - Added documentation for the compiler-wrapper script hpxcxx.in in creating_hpx_projects.rst
PR #4413 - Merging from V1.4.1 release
PR #4412 - Making sure to issue a warning if a file specified using –hpx:options-file is not found
PR #4411 - Make test specific to HPX_WITH_SHARED_PRIORITY_SCHEDULER
PR #4407 - Adding minimal MPI executor
PR #4405 - Fix cross pool injection test, use default scheduler as falback
PR #4404 - Fix a race condition and clean-up usage of scheduler mode
PR #4399 - Add more threading modules
PR #4398 - Add CODEOWNERS file
PR #4395 - Adding a parameter to auto_chunk_size allowing to control the amount of iterations to measure
PR #4393 - Use appropriate cache-line size defaults for different platforms
PR #4391 - Fixing use of allocator for C++20
PR #4390 - Making –hpx:help behavior consistent
PR #4388 - Change the resource partitioner initialization
PR #4387 - Fix roll_release.sh
PR #4386 - Add warning messages for using thread binding options on macOS
PR #4385 - Cuda futures
PR #4384 - Make enabling dynamic hpx_main on non-Linux systems a configuration error
PR #4383 - Use configure_file for HPXCacheVariables.cmake
PR #4382 - Update spellchecking whitelist and fix more typos
PR #4380 - Add a helper function to get a future from a cuda stream
PR #4379 - Add Windows and macOS CI with GitHub actions
PR #4378 - Change C++ standard handling
PR #4377 - Remove Python scripts
PR #4374 - Adding overload for hpx::init/hpx::start for use with resource partitioner
PR #4373 - Adding test that verifies for 4369 to be fixed
PR #4372 - Another attempt at fixing the integral mismatch and conversion warnings
PR #4370 - Doc updates quick start
PR #4368 - Add a whitelist of words for weird spelling suggestions
PR #4366 - Suppress or fix clang-tidy-9 warnings
PR #4365 - Removing more Boost dependencies
PR #4363 - Update clang-format config file for version 9
PR #4362 - Fix indices typo
PR #4361 - Boost cleanup
PR #4360 - Move plugins
PR #4358 - Doc updates; generating documentation. Will likely need heavy editing.
PR #4356 - Remove some minor unused and unnecessary Boost includes
PR #4355 - Fix spellcheck step in CircleCI config
PR #4354 - Lightweight utility to hold a pack as members
PR #4352 - Minor fixes to the C++ standard detection for MSVC
PR #4351 - Move generated documentation to hpx-docs repo
PR #4347 - Add cmake policy - CMP0074
PR #4346 - Remove file committed by mistake
PR #4342 - Remove HCC and SYCL options from CMakeLists.txt
PR #4341 - Fix launch process test with APEX enabled
PR #4340 - Testing Cirrus CI
PR #4339 - Post 1.4.0 updates
PR #4338 - Spelling corrections and CircleCI spell check
PR #4333 - Flatten bound callables
PR #4332 - This is a collection of mostly minor (cleanup) fixes
PR #4331 - This adds the missing tests for async_colocated and async_continue_colocated
PR #4330 - Remove HPX.Compute host default_executor
PR #4328 - Generate global header for basic_execution module
PR #4327 - Use INTERNAL_FLAGS option for all examples and components
PR #4326 - Usage of temporary allocator in assignment operator of compute::vector
PR #4325 - Use hpx::threads::get_cache_line_size in prefetching.hpp
PR #4324 - Enable compatibility headers option for execution module
PR #4316 - Add clang format indentppdirectives
PR #4313 - Introduce index_pack alias to pack of size_t
PR #4312 - Fixing compatibility header for pack.hpp
PR #4311 - Dataflow annotations for APEX
PR #4309 - Update launching_and_configuring_hpx_applications.rst
PR #4306 - Fix schedule hint not being taken from executor
PR #4305 - Implementing hpx::functional::tag_invoke
PR #4304 - Improve pack support utilities
PR #4303 - Remove errors module dependency on datastructures
PR #4301 - Clean up thread executors
PR #4294 - Logging revamp
PR #4292 - Remove SPDX tag from Boost License file to allow for github to recognize it
PR #4291 - Add format support for std::tm
PR #4290 - Simplify compatible tuples check
PR #4288 - A lightweight take on boost::lexical_cast
PR #4287 - Forking boost::lexical_cast as a new module
PR #4277 - MPI_futures
PR #4270 - Refactor future implementation
PR #4265 - Threading module
PR #4259 - Module naming base
PR #4251 - Local workrequesting scheduler
PR #4250 - Inline execution of scoped tasks, if possible
PR #4247 - Add execution in module headers
PR #4246 - Expose CMake targets officially
PR #4239 - Doc updates miscellaneous (partially completed during Google Season of Docs)
PR #4233 - Remove project() from modules + fix CMAKE_SOURCE_DIR issue
PR #4231 - Module local lcos
PR #4207 - Command line handling module
PR #4206 - Runtime configuration module
PR #4141 - Doc updates examples local to remote (partially completed during Google Season of Docs)
PR #4091 - Split runtime into local and distributed parts
PR #4017 - Require C++14