v0.0.9
Improvements:
- Some performance improvements in
tmc::ex_cpu - Added
tmc::channelconfig optionEmbedFirstBlockwhich stores the first channel data block as a member of the channel. This bypasses one allocation and would be most useful in the case of a short-lived channel that handles a small number of elements. - Implemented exception handling in
tmc::wrapper_taskwhich is used internally to wrap unknown awaitables.
Fixes:
- Fixed some race conditions in
tmc::channel
There are an unusually large number of breaking changes in this release as I work to stabilize the API for the first major release.
Breaking Changes:
- run_early() has been renamed to fork() - this is a well known name for this concept, and carries the same connotation that a subsequent join is required
- rename each() to result_each() - this is to align with future functions that modify the result type of an awaitable, such as result_share() / result_ref()
tmc::channel::reopen()has been removed. The current implementation was unsound. I'd like to bring this feature back in the future, but it will require a redesign of the close logic.- split out some public API functions that were in detail headers into their own public headers: "current.hpp", "ex_any.hpp", "work_item.hpp"
- cleaned up "task.hpp" by moving parts of its implementation into detail headers
tmc::post()has been moved from "task.hpp" to "sync.hpp" where the other post functions livetmc::external::set_default_executor()has been moved into the root namespacetmc::set_default_executor()- the outdated debug configs TMC_USE_MUTEXQ and TMC_QUEUE_NO_LIFO have been removed
Full Changelog: v0.0.8...v0.0.9