Joaquín's Q3 2023 Update
Oct 27, 2023During Q3 2023, I’ve been working (mostly in collaboration wth Chris) in the following areas:
Boost.Unordered
- Shipped Boost.Unordered 1.83.
- I’ve written the article “Inside boost::concurrent_flat_map” explaining the internal data structure and algorithms of this new container.
- I developed an improvement to concurrent containers for visit operations (branch
feature/optimized_visit_access
) that takes advantage of const-accepting visitation functions even when passed to a non-constvisit
overload. For instance, the following:
m.visit(k, [](const auto& x){ res += x.second; });
uses non-constvisit
even though the visitation function does not modifyx
. The optimization detects this circumstance and grants the visitation function shared rather than exclusive access tox
, which potentially increases performance. At the end, we decided not to include this optimization as it’s hard to communicate to the user and was deemed too smart –the simple alternative is to usecvisit
. - Added
[c]visit_while
operations to concurrent containers, with serial and parallel variants (target Boost 1.84). - Added debug-mode mechanisms for detecting illegal reentrancies into a concurrent container from user code (target Boost 1.84).
- Added efficient move construction of
boost::unordered_flat_(map|set)
fromboost::concurrent_flat_(map|set)
and vice versa (target Boost 1.84). - Worked on supporting Clang Thread Safety Analsysis
(branch
feature/clang_thread_safety_analysis
). This work was eventually abandoned because the analysis is rather limited –for instance, it’s strictly intraprocedural and can’t detect issues with user-provided visitation functions. - Supported Chris in the addition of support for fancy pointers to open-addressing and concurrent containers. This enables scenarios like the use of Boost.Interprocess allocators to construct containers in shared memory (target Boost 1.84).
- Added Boost.Serialization support to all containers and their (non-local) iterator types (target Boost 1.84).
- Solved issue #205.
- Added
boost::concurrent_flat_set
(target Boost 1.84). - Reviewed PR #215 for code clean-up after upgrading from C++03 to C++11 as our new minimum for closed-addressing containers.
CppCon 2023
- With the help and feedback from many, I’ve prepared a poster and a brochure to help publicize the latest developments of Boost at this event.
All Posts by This Author
- 04/20/2024 Joaquín's Q1 2024 Update
- 01/10/2024 Joaquín's Q4 2023 Update
- 10/27/2023 Joaquín's Q3 2023 Update
- View All Posts...