Joaquín's Q3 2023 Update
Libraries
Posted on October 27, 2023
During 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-const visit overload. For instance, the following:
m.visit(k, [](const auto& x){ res += x.second; });
uses non-const visit even though the visitation function does not modify x. The optimization detects this circumstance and grants the visitation function shared rather than exclusive access to x, 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 use cvisit. - 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) from boost::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.
Related news
View all →
Libraries
Joining Community, Detecting Communities, Making Community.
Early in Q1 2026, I joined the C++ Alliance. A very exciting moment.
Read more →
Libraries
The road to C++20 modules, Capy and Redis
C++20 modules have been in the standard for 6 years already, but we’re not seeing widespread adoption. The ecosystem is still getting ready.
Read more →Stay up to date
Get Alliance news, project updates, and community highlights in your inbox.
SubscribeEmpowering C++ by funding libraries, building community, and advancing the language.
Connect with us