Skip to content

v0.0.9

Choose a tag to compare

@tzcnt tzcnt released this 10 Apr 15:33
· 193 commits to main since this release

Improvements:

  • Some performance improvements in tmc::ex_cpu
  • Added tmc::channel config option EmbedFirstBlock which 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_task which 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 live
  • tmc::external::set_default_executor() has been moved into the root namespace tmc::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