HPX V0.9.99 (Jul 15, 2016)#

General changes#

As the version number of this release hints, we consider this release to be a preview for the upcoming HPX V1.0. All of the functionalities we set out to implement for V1.0 are in place; all of the features we wanted to have exposed are ready. We are very happy with the stability and performance of HPX and we would like to present this release to the community in order for us to gather broad feedback before releasing V1.0. We still expect for some minor details to change, but on the whole this release represents what we would like to have in a V1.0.

Overall, since the last release we have had almost 1600 commits while closing almost 400 tickets. These numbers reflect the incredible development activity we have seen over the last couple of months. We would like to express a big ‘Thank you!’ to all contributors and those who helped to make this release happen.

The most notable addition in terms of new functionality available with this release is the full implementation of object migration (i.e. the ability to transparently move HPX components to a different compute node). Additionally, this release of HPX cleans up many minor issues and some API inconsistencies.

Here are some of the main highlights and changes for this release (in no particular order):

  • We have fixed a couple of issues in AGAS and the parcel layer which have caused hangs, segmentation faults at exit, and a slowdown of applications over time. Fixing those has significantly increased the overall stability and performance of distributed runs.

  • We have started to add parallel algorithm overloads based on the C++ Extensions for Ranges (N4560) proposal. This also includes the addition of projections to the existing algorithms. Please see Issue #1668 for a list of algorithms which have been adapted to N4560.

  • We have implemented index-based parallel for-loops based on a corresponding standardization proposal (P0075R1). Please see Issue #2016 for a list of available algorithms.

  • We have added implementations for more parallel algorithms as proposed for the upcoming C++ 17 Standard. See Issue #1141 for an overview of which algorithms are available by now.

  • We have started to implement a new prototypical functionality with HPX.Compute which uniformly exposes some of the higher level APIs to heterogeneous architectures (currently CUDA). This functionality is an early preview and should not be considered stable. It may change considerably in the future.

  • We have pervasively added (optional) executor arguments to all API functions which schedule new work. Executors are now used throughout the code base as the main means of executing tasks.

  • Added hpx::make_future<R>(future<T> &&) allowing to convert a future of any type T into a future of any other type R, either based on default conversion rules of the embedded types or using a given explicit conversion function.

  • We finally finished the implementation of transparent migration of components to another locality. It is now possible to trigger a migration operation without ‘stopping the world’ for the object to migrate. HPX will make sure that no work is being performed on an object before it is migrated and that all subsequently scheduled work for the migrated object will be transparently forwarded to the new locality. Please note that the global id of the migrated object does not change, thus the application will not have to be changed in any way to support this new functionality. Please note that this feature is currently considered experimental. See Issue #559 and PR #1966 for more details.

  • The hpx::dataflow facility is now usable with actions. Similarly to hpx::async, actions can be specified as an explicit template argument (hpx::dataflow<Action>(target, ...)) or as the first argument (hpx::dataflow(Action(), target, ...)). We have also enabled the use of distribution policies as the target for dataflow invocations. Please see Issue #1265 and PR #1912 for more information.

  • Adding overloads of gather_here and gather_there to accept the plain values of the data to gather (in addition to the existing overloads expecting futures).

  • We have cleaned up and refactored large parts of the code base. This helped reducing compile and link times of HPX itself and also of applications depending on it. We have further decreased the dependency of HPX on the Boost libraries by replacing part of those with facilities available from the standard libraries.

  • Wherever possible we have removed dependencies of our API on Boost by replacing those with the equivalent facility from the C++11 standard library.

  • We have added new performance counters for parcel coalescing, file-IO, the AGAS cache, and overall scheduler time. Resetting performance counters has been overhauled and fixed.

  • We have introduced a generic client type hpx::components::client<> and added support for using it with hpx::async. This removes the necessity to implement specific client types for every component type without losing type safety. This deemphasizes the need for using the low level hpx::id_type for referencing (possibly remote) component instances. The plan is to deprecate the direct use of hpx::id_type in user code in the future.

  • We have added a special iterator which supports automatic prefetching of one or more arrays for speeding up loop-like code (see hpx::parallel::util::make_prefetcher_context()).

  • We have extended the interfaces exposed from executors (as proposed by N4406) to accept an arbitrary number of arguments.

Breaking changes#

  • In order to move the dataflow facility to namespace hpx we added a definition of hpx::dataflow which might create ambiguities in existing codes. The previous definition of this facility (hpx::lcos::local::dataflow) has been deprecated and is available only if the constant -DHPX_WITH_LOCAL_DATAFLOW_COMPATIBILITY=On to CMake is defined at configuration time. Please explicitly qualify all uses of the dataflow facility if you enable this compatibility setting and encounter ambiguities.

  • The adaptation of the C++ Extensions for Ranges (N4560) proposal imposes some breaking changes related to the return types of some of the parallel algorithms. Please see Issue #1668 for a list of algorithms which have already been adapted.

  • The facility hpx::lcos::make_future_void() has been replaced by hpx::make_future<void>().

  • We have removed support for Intel V13 and gcc 4.4.x.

  • We have removed (default) support for the generic hpx::parallel::execution_poliy because it was removed from the Parallelism TS (__cpp11_n4104__) while it was being added to the upcoming C++17 Standard. This facility can be still enabled at configure time by specifying -DHPX_WITH_GENERIC_EXECUTION_POLICY=On to CMake.

  • Uses of boost::shared_ptr and related facilities have been replaced with std::shared_ptr and friends. Uses of boost::unique_lock, boost::lock_guard etc. have also been replaced by the equivalent (and equally named) tools available from the C++11 standard library.

  • Facilities that used to expect an explicit boost::unique_lock now take an std::unique_lock. Additionally, condition_variable no longer aliases condition_variable_any; its interface now only works with std::unique_lock<local::mutex>.

  • Uses of boost::function, boost::bind, boost::tuple have been replaced by the corresponding facilities in HPX (hpx::util::function, hpx::util::bind, and hpx::util::tuple, respectively).

Bug fixes (closed tickets)#

Here is a list of the important tickets we closed for this release.

  • PR #2250 - change default chunker of parallel executor to static one

  • PR #2247 - HPX on ppc64le

  • PR #2244 - Fixing MSVC problems

  • PR #2238 - Fixing small typos

  • PR #2237 - Fixing small typos

  • PR #2234 - Fix broken add test macro when extra args are passed in

  • PR #2231 - Fixing possible race during future awaiting in serialization

  • PR #2230 - Fix stream nvcc

  • PR #2229 - Fixed run_as_hpx_thread

  • PR #2228 - On prefetching_test branch : adding prefetching_iterator and related tests used for prefetching containers within lambda functions

  • PR #2227 - Support for HPXCL’s opencl::event

  • PR #2226 - Preparing for release of V0.9.99

  • PR #2225 - fix issue when compiling components with hpxcxx

  • PR #2224 - Compute alloc fix

  • PR #2223 - Simplify promise

  • PR #2222 - Replace last uses of boost::function by util::function_nonser

  • PR #2221 - Fix config tests

  • PR #2220 - Fixing gcc 4.6 compilation issues

  • PR #2219 - nullptr support for [unique_]function

  • PR #2218 - Introducing clang tidy

  • PR #2216 - Replace NULL with nullptr

  • Issue #2214 - Let inspect flag use of NULL, suggest nullptr instead

  • PR #2213 - Require support for nullptr

  • PR #2212 - Properly find jemalloc through pkg-config

  • PR #2211 - Disable a couple of warnings reported by Intel on Windows

  • PR #2210 - Fixed host::block_allocator::bulk_construct

  • PR #2209 - Started to clean up new sort algorithms, made things compile for sort_by_key

  • PR #2208 - A couple of fixes that were exposed by a new sort algorithm

  • PR #2207 - Adding missing includes in /hpx/include/serialization.hpp

  • PR #2206 - Call package_action::get_future before package_action::apply

  • PR #2205 - The indirect_packaged_task::operator() needs to be run on a HPX thread

  • PR #2204 - Variadic executor parameters

  • PR #2203 - Delay-initialize members of partitioned iterator

  • PR #2202 - Added segmented fill for hpx::vector

  • Issue #2201 - Null Thread id encountered on partitioned_vector

  • PR #2200 - Fix hangs

  • PR #2199 - Deprecating hpx/traits.hpp

  • PR #2198 - Making explicit inclusion of external libraries into build

  • PR #2197 - Fix typo in QT CMakeLists

  • PR #2196 - Fixing a gcc warning about attributes being ignored

  • PR #2194 - Fixing partitioned_vector_spmd_foreach example

  • Issue #2193 - partitioned_vector_spmd_foreach seg faults

  • PR #2192 - Support Boost.Thread v4

  • PR #2191 - HPX.Compute prototype

  • PR #2190 - Spawning operation on new thread if remaining stack space becomes too small

  • PR #2189 - Adding callback taking index and future to when_each

  • PR #2188 - Adding new example demonstrating receive_buffer

  • PR #2187 - Mask 128-bit ints if CUDA is being used

  • PR #2186 - Make startup & shutdown functions unique_function

  • PR #2185 - Fixing logging output not to cause hang on shutdown

  • PR #2184 - Allowing component clients as action return types

  • Issue #2183 - Enabling logging output causes hang on shutdown

  • Issue #2182 - 1d_stencil seg fault

  • Issue #2181 - Setting small stack size does not change default

  • PR #2180 - Changing default bind mode to balanced

  • PR #2179 - adding prefetching_iterator and related tests used for prefetching containers within lambda functions

  • PR #2177 - Fixing 2176

  • Issue #2176 - Launch process test fails on OSX

  • PR #2175 - Fix unbalanced config/warnings includes, add some new ones

  • PR #2174 - Fix test categorization : regression not unit

  • Issue #2172 - Different performance results

  • Issue #2171 - “negative entry in reference count table” running octotiger on 32 nodes on queenbee

  • Issue #2170 - Error while compiling on Mac + boost 1.60

  • PR #2168 - Fixing problems with is_bitwise_serializable

  • Issue #2167 - startup & shutdown function should accept unique_function

  • Issue #2166 - Simple receive_buffer example

  • PR #2165 - Fix wait all

  • PR #2164 - Fix wait all

  • PR #2163 - Fix some typos in config tests

  • PR #2162 - Improve #includes

  • PR #2160 - Add inspect check for missing #include <list>

  • PR #2159 - Add missing finalize call to stop test hanging

  • PR #2158 - Algo fixes

  • PR #2157 - Stack check

  • Issue #2156 - OSX reports stack space incorrectly (generic context coroutines)

  • Issue #2155 - Race condition suspected in runtime

  • PR #2154 - Replace boost::detail::atomic_count with the new util::atomic_count

  • PR #2153 - Fix stack overflow on OSX

  • PR #2152 - Define is_bitwise_serializable as is_trivially_copyable when available

  • PR #2151 - Adding missing <cstring> for std::mem* functions

  • Issue #2150 - Unable to use component clients as action return types

  • PR #2149 - std::memmove copies bytes, use bytes*sizeof(type) when copying larger types

  • PR #2146 - Adding customization point for parallel copy/move

  • PR #2145 - Applying changes to address warnings issued by latest version of PVS Studio

  • Issue #2148 - hpx::parallel::copy is broken after trivially copyable changes

  • PR #2144 - Some minor tweaks to compute prototype

  • PR #2143 - Added Boost version support information over OSX platform

  • PR #2142 - Fixing memory leak in example

  • PR #2141 - Add missing specializations in execution policies

  • PR #2139 - This PR fixes a few problems reported by Clang’s Undefined Behavior sanitizer

  • PR #2138 - Revert “Adding fedora docs”

  • PR #2136 - Removed double semicolon

  • PR #2135 - Add deprecated #include check for hpx_fwd.hpp

  • PR #2134 - Resolved memory leak in stencil_8

  • PR #2133 - Replace uses of boost pointer containers

  • PR #2132 - Removing unused typedef

  • PR #2131 - Add several include checks for std facilities

  • PR #2130 - Fixing parcel compression, adding test

  • PR #2129 - Fix invalid attribute warnings

  • Issue #2128 - hpx::init seems to segfault

  • PR #2127 - Making executor_traits N-nary

  • PR #2126 - GCC 4.6 fails to deduce the correct type in lambda

  • PR #2125 - Making parcel coalescing test actually test something

  • Issue #2124 - Make a testcase for parcel compression

  • Issue #2123 - hpx/hpx/runtime/applier_fwd.hpp - Multiple defined types

  • Issue #2122 - Exception in primary_namespace::resolve_free_list

  • Issue #2121 - Possible memory leak in 1d_stencil_8

  • PR #2120 - Fixing 2119

  • Issue #2119 - reduce_by_key compilation problems

  • Issue #2118 - Premature unwrapping of boost::ref’ed arguments

  • PR #2117 - Added missing initializer on last constructor for thread_description

  • PR #2116 - Use a lightweight bind implementation when no placeholders are given

  • PR #2115 - Replace boost::shared_ptr with std::shared_ptr

  • PR #2114 - Adding hook functions for executor_parameter_traits supporting timers

  • Issue #2113 - Compilation error with gcc version 4.9.3 (MacPorts gcc49 4.9.3_0)

  • PR #2112 - Replace uses of safe_bool with explicit operator bool

  • Issue #2111 - Compilation error on QT example

  • Issue #2110 - Compilation error when passing non-future argument to unwrapped continuation in dataflow

  • Issue #2109 - Warning while compiling hpx

  • Issue #2109 - Stack trace of last bug causing issues with octotiger

  • Issue #2108 - Stack trace of last bug causing issues with octotiger

  • PR #2107 - Making sure that a missing parcel_coalescing module does not cause startup exceptions

  • PR #2106 - Stop using hpx_fwd.hpp

  • Issue #2105 - coalescing plugin handler is not optional any more

  • Issue #2104 - Make executor_traits N-nary

  • Issue #2103 - Build error with octotiger and hpx commit e657426d

  • PR #2102 - Combining thread data storage

  • PR #2101 - Added repartition version of 1d stencil that uses any performance counter

  • PR #2100 - Drop obsolete TR1 result_of protocol

  • PR #2099 - Replace uses of boost::bind with util::bind

  • PR #2098 - Deprecated inspect checks

  • PR #2097 - Reduce by key, extends #1141

  • PR #2096 - Moving local cache from external to hpx/util

  • PR #2095 - Bump minimum required Boost to 1.50.0

  • PR #2094 - Add include checks for several Boost utilities

  • Issue #2093 - /…/local_cache.hpp(89): error #303: explicit type is missing (“int” assumed)

  • PR #2091 - Fix for Raspberry pi build

  • PR #2090 - Fix storage size for util::function<>

  • PR #2089 - Fix #2088

  • Issue #2088 - More verbose output from cmake configuration

  • PR #2087 - Making sure init_globally always executes hpx_main

  • Issue #2086 - Race condition with recent HPX

  • PR #2085 - Adding #include checker

  • PR #2084 - Replace boost lock types with standard library ones

  • PR #2083 - Simplify packaged task

  • PR #2082 - Updating APEX version for testing

  • PR #2081 - Cleanup exception headers

  • PR #2080 - Make call_once variadic

  • Issue #2079 - With GNU C++, line 85 of hpx/config/version.hpp causes link failure when linking application

  • Issue #2078 - Simple test fails with _GLIBCXX_DEBUG defined

  • PR #2077 - Instantiate board in nqueen client

  • PR #2076 - Moving coalescing registration to TUs

  • PR #2075 - Fixed some documentation typos

  • PR #2074 - Adding flush-mode to message handler flush

  • PR #2073 - Fixing performance regression introduced lately

  • PR #2072 - Refactor local::condition_variable

  • PR #2071 - Timer based on boost::asio::deadline_timer

  • PR #2070 - Refactor tuple based functionality

  • PR #2069 - Fixed typos

  • Issue #2068 - Seg fault with octotiger

  • PR #2067 - Algorithm cleanup

  • PR #2066 - Split credit fixes

  • PR #2065 - Rename HPX_MOVABLE_BUT_NOT_COPYABLE to HPX_MOVABLE_ONLY

  • PR #2064 - Fixed some typos in docs

  • PR #2063 - Adding example demonstrating template components

  • Issue #2062 - Support component templates

  • PR #2061 - Replace some uses of lexical_cast<string> with C++11 std::to_string

  • PR #2060 - Replace uses of boost::noncopyable with HPX_NON_COPYABLE

  • PR #2059 - Adding missing for_loop algorithms

  • PR #2058 - Move several definitions to more appropriate headers

  • PR #2057 - Simplify assert_owns_lock and ignore_while_checking

  • PR #2056 - Replacing std::result_of with util::result_of

  • PR #2055 - Fix process launching/connecting back

  • PR #2054 - Add a forwarding coroutine header

  • PR #2053 - Replace uses of boost::unordered_map with std::unordered_map

  • PR #2052 - Rewrite tuple unwrap

  • PR #2050 - Replace uses of BOOST_SCOPED_ENUM with C++11 scoped enums

  • PR #2049 - Attempt to narrow down split_credit problem

  • PR #2048 - Fixing gcc startup hangs

  • PR #2047 - Fixing when_xxx and wait_xxx for MSVC12

  • PR #2046 - adding persistent_auto_chunk_size and related tests for for_each

  • PR #2045 - Fixing HPX_HAVE_THREAD_BACKTRACE_DEPTH build time configuration

  • PR #2044 - Adding missing service executor types

  • PR #2043 - Removing ambiguous definitions for is_future_range and future_range_traits

  • PR #2042 - Clarify that HPX builds can use (much) more than 2GB per process

  • PR #2041 - Changing future_iterator_traits to support pointers

  • Issue #2040 - Improve documentation memory usage warning?

  • PR #2039 - Coroutine cleanup

  • PR #2038 - Fix cmake policy CMP0042 warning MACOSX_RPATH

  • PR #2037 - Avoid redundant specialization of [unique_]function_nonser

  • PR #2036 - nvcc dies with an internal error upon pushing/popping warnings inside templates

  • Issue #2035 - Use a less restrictive iterator definition in hpx::lcos::detail::future_iterator_traits

  • PR #2034 - Fixing compilation error with thread queue wait time performance counter

  • Issue #2033 - Compilation error when compiling with thread queue waittime performance counter

  • Issue #2032 - Ambiguous template instantiation for is_future_range and future_range_traits.

  • PR #2031 - Don’t restart timer on every incoming parcel

  • PR #2030 - Unify handling of execution policies in parallel algorithms

  • PR #2029 - Make pkg-config .pc files use .dylib on OSX

  • PR #2028 - Adding process component

  • PR #2027 - Making check for compiler compatibility independent on compiler path

  • PR #2025 - Fixing inspect tool

  • PR #2024 - Intel13 removal

  • PR #2023 - Fix errors related to older boost versions and parameter pack expansions in lambdas

  • Issue #2022 - gmake fail: “No rule to make target /usr/lib46/libboost_context-mt.so”

  • PR #2021 - Added Sudoku example

  • Issue #2020 - Make errors related to init_globally.cpp example while building HPX out of the box

  • PR #2019 - Fixed some compilation and cmake errors encountered in nqueen example

  • PR #2018 - For loop algorithms

  • PR #2017 - Non-recursive at_index implementation

  • Issue #2016 - Add index-based for-loops

  • Issue #2015 - Change default bind-mode to balanced

  • PR #2014 - Fixed dataflow if invoked action returns a future

  • PR #2013 - Fixing compilation issues with external example

  • PR #2012 - Added Sierpinski Triangle example

  • Issue #2011 - Compilation error while running sample hello_world_component code

  • PR #2010 - Segmented move implemented for hpx::vector

  • Issue #2009 - pkg-config order incorrect on 14.04 / GCC 4.8

  • Issue #2008 - Compilation error in dataflow of action returning a future

  • PR #2007 - Adding new performance counter exposing overall scheduler time

  • PR #2006 - Function includes

  • PR #2005 - Adding an example demonstrating how to initialize HPX from a global object

  • PR #2004 - Fixing 2000

  • PR #2003 - Adding generation parameter to gather to enable using it more than once

  • PR #2002 - Turn on position independent code to solve link problem with hpx_init

  • Issue #2001 - Gathering more than once segfaults

  • Issue #2000 - Undefined reference to hpx::assertion_failed

  • Issue #1999 - Seg fault in hpx::lcos::base_lco_with_value<*>::set_value_nonvirt() when running octo-tiger

  • PR #1998 - Detect unknown command line options

  • PR #1997 - Extending thread description

  • PR #1996 - Adding natvis files to solution (MSVC only)

  • Issue #1995 - Command line handling does not produce error

  • PR #1994 - Possible missing include in test_utils.hpp

  • PR #1993 - Add missing LANGUAGES tag to a hpx_add_compile_flag_if_available() call in CMakeLists.txt

  • PR #1992 - Fixing shared_executor_test

  • PR #1991 - Making sure the winsock library is properly initialized

  • PR #1990 - Fixing bind_test placeholder ambiguity coming from boost-1.60

  • PR #1989 - Performance tuning

  • PR #1987 - Make configurable size of internal storage in util::function

  • PR #1986 - AGAS Refactoring+1753 Cache mods

  • PR #1985 - Adding missing task_block::run() overload taking an executor

  • PR #1984 - Adding an optimized LRU Cache implementation (for AGAS)

  • PR #1983 - Avoid invoking migration table look up for all objects

  • PR #1981 - Replacing uintptr_t (which is not defined everywhere) with std::size_t

  • PR #1980 - Optimizing LCO continuations

  • PR #1979 - Fixing Cori

  • PR #1978 - Fix test check that got broken in hasty fix to memory overflow

  • PR #1977 - Refactor action traits

  • PR #1976 - Fixes typo in README.rst

  • PR #1975 - Reduce size of benchmark timing arrays to fix test failures

  • PR #1974 - Add action to update data owned by the partitioned_vector component

  • PR #1972 - Adding partitioned_vector SPMD example

  • PR #1971 - Fixing 1965

  • PR #1970 - Papi fixes

  • PR #1969 - Fixing continuation recursions to not depend on fixed amount of recursions

  • PR #1968 - More segmented algorithms

  • Issue #1967 - Simplify component implementations

  • PR #1966 - Migrate components

  • Issue #1964 - fatal error: ‘boost/lockfree/detail/branch_hints.hpp’ file not found

  • Issue #1962 - parallel:copy_if has race condition when used on in place arrays

  • PR #1963 - Fixing Static Parcelport initialization

  • PR #1961 - Fix function target

  • Issue #1960 - Papi counters don’t reset

  • PR #1959 - Fixing 1958

  • Issue #1958 - inclusive_scan gives incorrect results with non-commutative operator

  • PR #1957 - Fixing #1950

  • PR #1956 - Sort by key example

  • PR #1955 - Adding regression test for #1946: Hang in wait_all() in distributed run

  • Issue #1954 - HPX releases should not use -Werror

  • PR #1953 - Adding performance analysis for AGAS cache

  • PR #1952 - Adapting test for explicit variadics to fail for gcc 4.6

  • PR #1951 - Fixing memory leak

  • Issue #1950 - Simplify external builds

  • PR #1949 - Fixing yet another lock that is being held during suspension

  • PR #1948 - Fixed container algorithms for Intel

  • PR #1947 - Adding workaround for tagged_tuple

  • Issue #1946 - Hang in wait_all() in distributed run

  • PR #1945 - Fixed container algorithm tests

  • Issue #1944 - assertion ‘p.destination_locality() == hpx::get_locality()’ failed

  • PR #1943 - Fix a couple of compile errors with clang

  • PR #1942 - Making parcel coalescing functional

  • Issue #1941 - Re-enable parcel coalescing

  • PR #1940 - Touching up make_future

  • PR #1939 - Fixing problems in over-subscription management in the resource manager

  • PR #1938 - Removing use of unified Boost.Thread header

  • PR #1937 - Cleaning up the use of Boost.Accumulator headers

  • PR #1936 - Making sure interval timer is started for aggregating performance counters

  • PR #1935 - Tagged results

  • PR #1934 - Fix remote async with deferred launch policy

  • Issue #1933 - Floating point exception in statistics_counter<boost::accumulators::tag::mean>::get_counter_value

  • PR #1932 - Removing superfluous includes of boost/lockfree/detail/branch_hints.hpp

  • PR #1931 - fix compilation with clang 3.8.0

  • Issue #1930 - Missing online documentation for HPX 0.9.11

  • PR #1929 - LWG2485: get() should be overloaded for const tuple&&

  • PR #1928 - Revert “Using ninja for circle-ci builds”

  • PR #1927 - Using ninja for circle-ci builds

  • PR #1926 - Fixing serialization of std::array

  • Issue #1925 - Issues with static HPX libraries

  • Issue #1924 - Performance degrading over time

  • Issue #1923 - serialization of std::array appears broken in latest commit

  • PR #1922 - Container algorithms

  • PR #1921 - Tons of smaller quality improvements

  • Issue #1920 - Seg fault in hpx::serialization::output_archive::add_gid when running octotiger

  • Issue #1919 - Intel 15 compiler bug preventing HPX build

  • PR #1918 - Address sanitizer fixes

  • PR #1917 - Fixing compilation problems of parallel::sort with Intel compilers

  • PR #1916 - Making sure code compiles if HPX_WITH_HWLOC=Off

  • Issue #1915 - max_cores undefined if HPX_WITH_HWLOC=Off

  • PR #1913 - Add utility member functions for partitioned_vector

  • PR #1912 - Adding support for invoking actions to dataflow

  • PR #1911 - Adding first batch of container algorithms

  • PR #1910 - Keep cmake_module_path

  • PR #1909 - Fix mpirun with pbs

  • PR #1908 - Changing parallel::sort to return the last iterator as proposed by N4560

  • PR #1907 - Adding a minimum version for Open MPI

  • PR #1906 - Updates to the Release Procedure

  • PR #1905 - Fixing #1903

  • PR #1904 - Making sure std containers are cleared before serialization loads data

  • Issue #1903 - When running octotiger, I get: assertion '(*new_gids_)[gid].size() == 1' failed: HPX(assertion_failure)

  • Issue #1902 - Immediate crash when running hpx/octotiger with _GLIBCXX_DEBUG defined.

  • PR #1901 - Making non-serializable classes non-serializable

  • Issue #1900 - Two possible issues with std::list serialization

  • PR #1899 - Fixing a problem with credit splitting as revealed by #1898

  • Issue #1898 - Accessing component from locality where it was not created segfaults

  • PR #1897 - Changing parallel::sort to return the last iterator as proposed by N4560

  • Issue #1896 - version 1.0?

  • Issue #1895 - Warning comment on numa_allocator is not very clear

  • PR #1894 - Add support for compilers that have thread_local

  • PR #1893 - Fixing 1890

  • PR #1892 - Adds typed future_type for executor_traits

  • PR #1891 - Fix wording in certain parallel algorithm docs

  • Issue #1890 - Invoking papi counters give segfault

  • PR #1889 - Fixing problems as reported by clang-check

  • PR #1888 - WIP parallel is_heap

  • PR #1887 - Fixed resetting performance counters related to idle-rate, etc

  • Issue #1886 - Run hpx with qsub does not work

  • PR #1885 - Warning cleaning pass

  • PR #1884 - Add missing parallel algorithm header

  • PR #1883 - Add feature test for thread_local on Clang for TLS

  • PR #1882 - Fix some redundant qualifiers

  • Issue #1881 - Unable to compile Octotiger using HPX and Intel MPI on SuperMIC

  • Issue #1880 - clang with libc++ on Linux needs TLS case

  • PR #1879 - Doc fixes for #1868

  • PR #1878 - Simplify functions

  • PR #1877 - Removing most usage of Boost.Config

  • PR #1876 - Add missing parallel algorithms to algorithm.hpp

  • PR #1875 - Simplify callables

  • PR #1874 - Address long standing FIXME on using std::unique_ptr with incomplete types

  • PR #1873 - Fixing 1871

  • PR #1872 - Making sure PBS environment uses specified node list even if no PBS_NODEFILE env is available

  • Issue #1871 - Fortran checks should be optional

  • PR #1870 - Touch local::mutex

  • PR #1869 - Documentation refactoring based off #1868

  • PR #1867 - Embrace static_assert

  • PR #1866 - Fix #1803 with documentation refactoring

  • PR #1865 - Setting OUTPUT_NAME as target properties

  • PR #1863 - Use SYSTEM for boost includes

  • PR #1862 - Minor cleanups

  • PR #1861 - Minor Corrections for Release

  • PR #1860 - Fixing hpx gdb script

  • Issue #1859 - reset_active_counters resets times and thread counts before some of the counters are evaluated

  • PR #1858 - Release V0.9.11

  • PR #1857 - removing diskperf example from 9.11 release

  • PR #1856 - fix return in packaged_task_base::reset()

  • Issue #1842 - Install error: file INSTALL cannot find libhpx_parcel_coalescing.so.0.9.11

  • PR #1839 - Adding fedora docs

  • PR #1824 - Changing version on master to V0.9.12

  • PR #1818 - Fixing #1748

  • Issue #1815 - seg fault in AGAS

  • Issue #1803 - wait_all documentation

  • Issue #1796 - Outdated documentation to be revised

  • Issue #1759 - glibc munmap_chunk or free(): invalid pointer on SuperMIC

  • Issue #1753 - HPX performance degrades with time since execution begins

  • Issue #1748 - All public HPX headers need to be self contained

  • PR #1719 - How to build HPX with Visual Studio

  • Issue #1684 - Race condition when using –hpx:connect?

  • PR #1658 - Add serialization for std::set (as there is for std::vector and std::map)

  • PR #1641 - Generic client

  • Issue #1632 - heartbeat example fails on separate nodes

  • PR #1603 - Adds preferred namespace check to inspect tool

  • Issue #1559 - Extend inspect tool

  • Issue #1523 - Remote async with deferred launch policy never executes

  • Issue #1472 - Serialization issues

  • Issue #1457 - Implement N4392: C++ Latches and Barriers

  • PR #1444 - Enabling usage of moveonly types for component construction

  • Issue #1407 - The Intel 13 compiler has failing unit tests

  • Issue #1405 - Allow component constructors to take movable only types

  • Issue #1265 - Enable dataflow() to be usable with actions

  • Issue #1236 - NUMA aware allocators

  • Issue #802 - Fix Broken Examples

  • Issue #559 - Add hpx::migrate facility

  • Issue #449 - Make actions with template arguments usable and add documentation

  • Issue #279 - Refactor addressing_service into a base class and two derived classes

  • Issue #224 - Changing thread state metadata is not thread safe

  • Issue #55 - Uniform syntax for enums should be implemented