Repository navigation
v1.3.2 - the bugfix backports edition
The objective of this release is to establish a versioning strategy that allows users to choose a particular minor version (e.g. v1.3) and receive patch fixes to that version without any potential regressions that might be introduced by new features. To this end:
- a full review was completed on all files in the repository
- fixes were applied to main
- branches were created for all major versions released so far: v1.0, v1.1, v1.2, v1.3
- fixes were backported to each branch where they apply
- new tags v1.0.1, v1.1.1, v1.2.1, v1.3.2 were created which include the appropriate fixes
Users now have the option to pin their references to the branch (v1.3) or choose the latest patch tag (v1.3.2). In either case, only non-breaking fixes will be applied to these tagged branches after their initial release. When a new minor release is created, the branch will be v1.4 and the tag will be v1.4.0 so they don't conflict.
New Feature: version.hpp
A version.hpp file which defines TMC_VERSION_ macros has been added (backported to all branches) for users to identify the availability of certain features. The development branch (main) will identify as the next unreleased version (currently v1.4).
Fixes Applied
Issues have been categorized by severity:
- 🚩 major bug fix
- 🐞 minor bug fix
- 🕵️ theoretical correctness fix
- 📝 documentation improvements
Fixes are cumulative, so any fix that was applied to v1.0 is also in v1.1 and higher.
In v1.0.1:
- 🚩 [v1.0 backport] strengthen atomics in mutex/semaphore (#176)
- 🐞 [v1.0 backport] Add check for Count == 0 in post_bulk() / post_bulk_waitable() (#198)
- 🐞 [v1.0 backport] fix missing return with channel::set_reuse_blocks and EmbedFirstBlock = true
- 🐞 [v1.0 backport] fix: missing comparison in manual_reset_event::co_set (#180)
- 🕵️ [v1.0 backport] preload waiter list to avoid potential race condition (#182)
- 🕵️ [v1.0 backport] strengthen atomic loads in atomic_condvar (#181)
- 🕵️ [v1.0 backport] tweak barrier/latch constructor cast order (#179)
- 🕵️ [v1.0 backport] remove unused coroutine_traits from task_unsafe (#193)
- 🕵️ [v1.0 backport] add missing include to work_item.hpp
- 📝 [v1.0 backport] document that executor teardown() and destructor must be called from external thread
- 📝 [v1.0 backport] update iter_adapter doc comment
- 📝 [v1.0 backport] fix resume_on() awaitable customizer doc comment
- 📝 [v1.0 backport] document braid cannot be held across a suspend point
- 📝 [v1.0 backport] better document spawn_many invariants
- 📝 [v1.0 backport] better document barrier invariants
Also in v1.1.1:
- 🚩 [v1.1 backport] fix potential use-after-free in tmc::task_promise::final_suspend with HALO (#201)
- 🚩 [v1.1 backport] add missing executor/priority dispatch to spawn_group (#171)
- 🐞 [v1.1 backport] fix awaitable_traits::result_type for spawn_group with dynamic size (#185)
- 🐞 [v1.1 backport] use mixins with resume_on / enter / exit (#196)
- 📝 [v1.1 backport] update spawn_group / fork_group::reset() doc comments
- 📝 [v1.1 backport] document that spawn_group::add*() and fork_group::fork*() are not thread-safe (#186)
Also in v1.2.1:
- 🕵️ [v1.2 backport] strengthen atomic loads in bitmap_object_pool
Also in v1.3.2:
- 🚩 [v1.3 backport] fix: remove pr_empty flag in ex_cpu queue which was causing lost wakeups (#175)
- 🚩 [v1.3 backport] fix potential leak in coro_functor move assignment (#191)
- 🐞 [v1.3 backport] add cpu_kind operator| (#199)
- 🐞 [v1.3 backport] fix: Split inboxes for threads in the same group that have different allowed priorities (#177)
- 📝 [v1.3 backport] topology: make the methods of tmc::topology::cpu_topology const (#187)