User Details
- User Since
- Oct 31 2017, 1:00 PM (317 w, 4 d)
Jun 28 2023
Jun 18 2023
Sorry for the belated feedback - I only just noticed that the stop_token implementation had been published.
Oct 25 2021
So am I correct in understanding that the main issue with the chicken/egg problem for updating both the compiler to use the new stdlib facilities and updating the stdlib facilities is that we don't want to issue warnings about using <experimental/coroutine> and telling users to use <coroutine> instead if there is no <coroutine> header.
Oct 24 2021
General comment regarding stdlib/compiler compatibility.
Aug 27 2021
Mar 7 2021
Mar 5 2021
Jun 26 2020
There are still room for improvements, in particular, GCC has a 4K frame for this function.
Jun 25 2020
LGTM
Jun 22 2020
Jun 18 2020
Sep 3 2019
Apr 8 2019
Gentle ping.
Apr 3 2019
Mar 29 2019
This updated diff should address most of @CaseyCarter's review comments.
Thanks very much for the detailed review @CaseyCarter! Very much appreciated :)
Mar 26 2019
Added missing 'require coroutines' for experimental/task entry in module.modulemap
Added missing #include in experimental/task header that was failing module builds
Reopening as the commit for this diff was reverted due to it breaking the buildbot module builds.
Mar 25 2019
Fix race condition in __oneshot_event::set() method used by sync_wait().
- Don't use __allocator as variable name (it is #defined to NASTY_MACRO).
- Remove workaround in test for https://bugs.llvm.org/show_bug.cgi?id=37265
- Add support for custom allocators on member functions.
Mar 7 2019
Sep 20 2018
Jul 20 2018
- Make task<T> constructor from coroutine_handle private.
- Run clang-format over <experimental/task>.
Many improvements:
- Remove move-assignment operator
- task<T>::operator co_await() now returns by value when awaiting task<T> rvalue.
- Explicitly scope calls to std-library functions that live in _VSTD.
- Make __task_promise ABI stable under exception/no-exception compilation modes.
- Moved __aligned_allocation_size to <experimental/__memory>
- Make task<T> have a default template parameter of void, allowing task<> to mean task<void>
- Allow co_return { ... } by adding overload of return_value() taking T&& and another taking initializer_list<U>.
- Implement optimisation that avoids storing the allocator in the coroutine frame if allocator_traits<A>::is_always_equal is true and the allocator is default constructible.
- Added unit-tests (currently failing some custom allocator tests under debug builds)
May 2 2018
- Explicitly delete __task_promise_base special member functions.
- Declare _task_promise_base::operator delete() as _NOEXCEPT.
- Explicitly scope _VSTD::move() calls for user-defined types.
- Explicitly call global-scope placement operator new for user-defined types.
- Tweak task::operator=() to remove ambiguity with deleted operator=(const task&).
May 1 2018
Addressed some feedback from initial version.
- factored out allocator padding calculations
- use anonymous unions instead of char-buffers and reinterpret_cast
- make co_await'ing an invalid task have undefined behaviour
- run clang-format over the file to fix some formatting
I have posted an updated version of the code here: https://gist.github.com/lewissbaker/38ba1d8a13e4fb0906559b7aa1c413d3
Apr 3 2018
The coroutine_handle<noop_coroutine_promise> type does not have a from_address() or a from_promise() static functions in the same way that the coroutine_handle<P> implementation does.
Is this intentional or an oversight in the TS wording?
Dec 14 2017
All looks fine to me.