Skip to content

Releases: pika-org/pika

pika 0.22.2

09 Feb 13:41
0.22.2
8266135
Compare
Choose a tag to compare

Bugfixes

  • Fix incorrect worker thread numbers when using more than one thread pool. (#1016)
  • Unrevert #872 with an indexing error fixed. (#1017)

pika 0.22.1

29 Jan 08:20
0.22.1
ab325f8
Compare
Choose a tag to compare

Bugfixes

  • Revert #872 as it was found to cause issues in applications. (#1009)

pika 0.22.0

24 Jan 16:34
0.22.0
4969ef0
Compare
Choose a tag to compare

New features

  • A new function pika::is_runtime_initialized has been added. (#808)
  • CUDA and HIP handles are now guaranteed to be released together with cuda_pool instead of on program exit. (#872)
  • Spinloop performance has been significantly improved on ARM64 systems. (#923, #927)
  • The pika::barrier now scales significantly better with the number of cores. (#940)
  • Exceptions thrown in the main entry point, e.g. pika_main, are now reported with the message of the exception, if available. (#959)

Breaking changes

Bugfixes

  • The CMake configuration now sets the policy CMP0144 to silence warnings about CMake package root directory variables. (#885)
  • The permissions on the installed pika-bind helper script have been fixed. (#915)
  • A missing include causing compilation failures with PIKA_WITH_UNITY_BUILD=OFF has been added. (#955)
  • A use-after-free has been fixed in when_all_vector. (#966)
  • A use-after-free has been fixed in sync_wait. (#976)
  • A use-after-free has been fixed in default_agent. (#979)
  • An initialization order issue has been fixed in debug printing facilities. (#983)
  • A potential cause for dangling references has been fixed in thread_pool_init_parameters. (#984)
  • A few data races have been fixed in the schedulers. (#985, #986)
  • Forwarding of callable values in execution::then has been fixed. (#994)
  • A data race in condition_variable::notify_all has been fixed. (#998)

pika 0.21.0

06 Dec 08:47
db91bf2
Compare
Choose a tag to compare

New features

  • A new sender adaptor require_started allows to detect unstarted senders. (#869)
  • The conversion from any_sender to unique_any_sender has been optimized, reusing the same storage. (#844)
  • The number of streams created by the cuda_pool is now proportional to the number of threads used by the runtime instead of hardware_concurrency. (#864)

Breaking changes

  • pika::start and pika::finalize now return void. Most runtime management functions no longer take an error_code and always throw an exception on failure. (#825)

Bugfixes

  • One lifetime bug in split has been fixed. (#839)
  • yield_while is now able to warn about potential deadlocks when suspension is disabled. (#856)

pika 0.20.0

01 Nov 08:52
0.20.0
b20d31c
Compare
Choose a tag to compare

New features

  • The MPI rank is now printed with --pika:print-bind and when handling exceptions, if MPI support is enabled. (#805, #822)
  • A warning message is now printed on macOS when using --pika:process-mask since thread bindings are unsupported. (#806)
  • Thread bindings can now be printed using the environment variable PIKA_PRINT_BIND in addition to the command line option --pika:print-bind. (#828)
  • The pika-bind helper script has been added to more conveniently set PIKA_PROCESS_MASK based on the environment. (#834)

Breaking changes

  • All remaining locality-related functions and files have been removed. (#823)

Bugfixes

  • Handling of explicitly specified process masks with --pika:process-mask or PIKA_PROCESS_MASK has been fixed. (#807)

pika 0.19.1

09 Oct 14:37
a3e0bee
Compare
Choose a tag to compare

Bugfixes

  • Fix a bug in drop_operation_state when the predecessor sender is sending a tuple. (#801)

pika 0.19.0

04 Oct 14:27
2275822
Compare
Choose a tag to compare

New features

  • A transfer_when_all sender adaptor has been introduced. (#792)
  • A drop_operation_state sender adaptor has been introduced. (#772)

Breaking changes

  • The PIKA_WITH_DISABLED_SIGNAL_EXCEPTION_HANDLERS CMake option has been removed. This option can be controlled at runtime as before. (#773)
  • The PIKA_WITH_THREAD_GUARD_PAGE CMake option has been removed. This option can be controlled at runtime as before. (#782)
  • thread_priority::critical has been removed as it is an alias to high_recursive and is unused.(#783)

Bugfixes

  • Fix a few instances of the wrong type being forwarded in split_tuple and when_all sender adaptors. (#781)
  • Fix a hang introduced by the global activity count when using MPI polling. (#778)
  • Fix a use-after-free in ensure_started. (#795)
  • Fix lifetime bug in ensure_started when the sender is dropped without being connected. (#797)

pika 0.18.0

06 Sep 10:30
Compare
Choose a tag to compare

New features

  • A documentation site has been created on pikacpp.org. (#723)
  • A new command line option --pika:process-mask has been added to allow overriding the mask detected at startup. The process mask is also now read before the pika runtime is started to avoid problems with e.g. OpenMP resetting the mask before pika can read it. (#738, #739)
  • An overload of pika::start which takes no callable and is equivalent to passing nullptr_t or an empty callable as the entry point has been added. (#761)

Breaking changes

  • The any_receiver set_value_t overload now accepts types which may throw in their move and copy constructors. (#702)
  • The PIKA_WITH_GENERIC_CONTEXT_COROUTINES CMake option has been renamed to PIKA_WITH_BOOST_CONTEXT. (#729)
  • The then and unpack sender adaptors now correctly have noexcept get_env_t customizations. (#732)
  • mimalloc is now the default allocator. (#730)
  • The pika::this_thread::experimental::sync_wait receiver now correctly advertises itself as a receiver when using stdexec. (#735)
  • Various outdated and unused utilities and configuration options have been removed. (#744, #753, #758, #759)

Bugfixes

  • The small buffer optimization in any_sender and its companions has been disabled due to issues with the implementation. (#760)

pika 0.17.0

02 Aug 13:51
cdd3699
Compare
Choose a tag to compare

New features

  • Improve MPI polling: continuations are not triggered under lock anymore and can be explicitly transferred to a new task/pool, throttling is possible on a per stream basis, the number of completions to handle per poll iteration may be controlled. (#593)
  • Add pika::wait to wait for the runtime to be idle. (#704)
  • Failure information is now printed before attaching a debugger. (#712)
  • --pika:print-bind now also prints the thread pool of a thread when thread binding is disabled to be consistent with the output when thread binding is enabled. (#710)
  • Allow to explicitly reset {unique_,}any_sender. (#719)
  • Add execution::unpack sender adaptor unpack tuple-like types sent by predecessor senders. (#721)

Bugfixes

  • Fix warnings when CMake unity build is disabled. (#697)
  • Fix bogus error when --pika:print-bind and --pika:bind=none are used together. (#710)
  • Fix memory leak with stack overflow detection enabled. (#714)
  • Fix freeing stack when guard pages are disabled. (#716)

pika 0.16.0

31 May 11:59
0.16.0
623d757
Compare
Choose a tag to compare

New features

  • pika can now be compiled with CUDA 12 and C++20 when PIKA_WITH_STDEXEC is disabled. (#684)
  • pika::barrier can now optionally do a timed blocking wait. The default behaviour is unchanged. (#685)

Breaking changes

  • pika::spinlock has been removed and replaced with a private implementation. (#672)

Bugfixes

  • Compilation with the CMake option PIKA_WITH_VERIFY_LOCKS_BACKTRACE has been fixed. (#680)
  • Compilation with fmt 10 and CUDA/HIP has been fixed. (#691)