Joaquín's Q1 2024 Update

Apr 20, 2024

During Q1 2024, I’ve been working in the following areas:

Boost.Unordered

  • Reviewed Braden’s work on optimization of emplace(k, v) calls (PR#230, released in Boost 1.85.0). With this optimization, statements such as:
m.emplace(0,"zero");

won’t create a temporary (0, "zero") value if the element with key 0 already exists. This is particularly relevant when dynamic memory allocation is involved (for instance, if mapped_type is std::string in the example above). The implementation of this feature is surprisingly tricky and Braden has done a superb job at coming up with an elegant and concise formulation.

  • Fixed support for allocators with explicit copy constructors (PR#234, released in Boost 1.85.0).
  • Fixed bug in the const version of unordered_multimap::find(k, hash, eq) (PR#238, released in Boost 1.85.0).
  • Reviewed Braden’s work on addition of boost::unordered::pmr aliases for Boost.Unordered containers using std::pmr::polymorphic_allocator (PR#239, to be released in Boost 1.86.0).
  • I’ve continued working on learning about advanced concurrency techniques implemented by ParlayHash with a view towards leveraging them for the improvement of boost::concurrent_flat_map in massively parallel scenarios. Latest research has focused on implementing (emulated) load-link/store-conditional techniques, but results are still well below those achieved by ParlayHash. Advance is hampered by the need to access a many-core machine for benchmarking, which slows down turnaround times.
  • On April 25, I’m giving a talk on perfect hashing at using std::cpp 2024. I’ve been preparing the presentation and associated material, which will be made public shortly after the talk.

Boost.Bimap

  • Fixed heterogeneous lookup for side collections (PR#42, released in Boost 1.85.0). Boost.Bimap is in need of a maintainer, if you’d like to take over this role please step in!

Boost promotion and new website

As of lately, I’m devoting more time to Boost-related tasks outside of actual programming:

  • I’ve authored several promotional tweets such as this, this and this: the art was commisioned to the amazing Bob Ostrom.
  • Starting in late March, I’m managing the project to complete the proposed new website for Boost. We should be ready for launch early in Q2 2024. If you’re curious, you can take a look at the project backlogs here and here.

A new golden era for Boost?

I’ve been a contributor and keen observer of Boost for more than 20 years, back from the day when the project was spearheading the community initiatives to provide high-quality libraries for eventual standardization. After crucially contributing to the watershed upgrade of the standard library in C++11, Boost popularity waned, partially because of its success in getting many of its key components standardized, but also due to external and internal factors (appearance of excellent, lighter alternatives to some of its libraries, lack of modernization, monolithicity, etc.) In the last couple of years or so, however, I’ve noticed a resurgence in the interest for Boost: I can’t provide hard data yet (I will eventually), but I’m following some proxy signs (presence and feedback on social media, mainly) that may indicate we’re back on track towards better serving the C++ community. Some concrete initiatives that I think are helping improve the public perception of the project are:

  • Better package management support from Conan and vcpkg.
  • Modularization efforts both with CMake and B2.
  • Deprecation of C++03 support by many Boost libraries.
  • Ongoing work and conversations around the proposed new website and potential module support.

I’m no postmodernist, but I recognize the power of narratives and good PR strategies even in the supposedly objetive world of software development. Backed by its diverse catalog of high-quality libraries and resources, I’d like to contribute what little I can to communicating the current and future benefits of Boost to the C++ community.

All Posts by This Author