|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +nav-class: dark |
| 4 | +categories: joaquin |
| 5 | +title: Working on Boost.Bloom roadmap |
| 6 | +author-id: joaquin |
| 7 | +author-name: Joaquín M López Muñoz |
| 8 | +--- |
| 9 | + |
| 10 | +During Q3 2025, I've been working in the following areas: |
| 11 | + |
| 12 | +### Boost.Bloom |
| 13 | + |
| 14 | +[Boost.Bloom](https://www.boost.org/doc/libs/latest/libs/bloom/doc/html/bloom.html) has been officially |
| 15 | +released in Boost 1.89. I've continued working on a number of roadmap features: |
| 16 | + |
| 17 | +* Originally, some subfilters (`block`, `fast_multiblock32` and `fast_multiblock64)` |
| 18 | +implemented lookup in a branchful or early-exit way: as soon as a bit checks to zero, lookup |
| 19 | +terminates (with result `false`). After extensive benchmarks, I've changed these subfilters |
| 20 | +to branchless execution for somewhat better performance ([PR#42](https://github.com/boostorg/bloom/pull/42)). |
| 21 | +Note that `boost::bloom::filter<T, K, ...>` is still |
| 22 | +branchful for `K` (the number of subfilter operations per element): in this case, branchless |
| 23 | +execution involves too much extra work and does not compensate for the removed branch speculation. |
| 24 | +Ivan Matek helped with this investigation. |
| 25 | +* Added [bulk-mode operations](https://www.boost.org/doc/libs/develop/libs/bloom/doc/html/bloom.html#tutorial_bulk_operations) |
| 26 | +following a similar approach to what we did with Boost.Unordered concurrent containers |
| 27 | +([PR#42](https://github.com/boostorg/bloom/pull/43)). |
| 28 | +* I've been also working on a proof of concept for a dynamic filter where the _k_ and/or _k'_ values |
| 29 | +can be specified at run time. As expected, the dynamic filter is slower than its static |
| 30 | +counterpart, but benchmarks show that execution times can increase by up to 2x for lookup and |
| 31 | +even more for insertion, which makes me undecided as to whether to launch this feature. |
| 32 | +An alternative approach is to have a `dynamic_filter<T>` be a wrapper over a virtual interface |
| 33 | +whose implementation is selected at run time from a static table of implementations |
| 34 | +based on static `filter<T, K>` with |
| 35 | +`K` between 1 and some maximum value (this type erasure technique is described, among |
| 36 | +other places, in slides 157-205 of Sean Parent's |
| 37 | +[C++ Seasoning](https://raw.githubusercontent.com/wiki/sean-parent/sean-parent.github.io/presentations/2013-09-11-cpp-seasoning/cpp-seasoning.pdf) |
| 38 | +talk): performance is much better, but this approach also has drawbacks of its own. |
| 39 | +* Reviewed a contribution fom Braden Ganetsky to make the project's `CMakeLists.txt` |
| 40 | +more Visual Studio-friendly ([PR#33](https://github.com/boostorg/bloom/pull/33)). |
| 41 | + |
| 42 | +### Boost.Unordered |
| 43 | + |
| 44 | +* Reviewed [PR#316](https://github.com/boostorg/unordered/pull/316). |
| 45 | + |
| 46 | +### Boost.MultiIndex |
| 47 | + |
| 48 | +* Reviewed [PR#83](https://github.com/boostorg/multi_index/pull/83), [PR#84](https://github.com/boostorg/multi_index/pull/84). |
| 49 | + |
| 50 | +### Boost.Flyweight |
| 51 | + |
| 52 | +* Fixed an internal compile error that manifested with newer compilers implementing |
| 53 | +[P0522R0](https://wg21.link/p0522r0) |
| 54 | +([PR#23](https://github.com/boostorg/flyweight/pull/23)). |
| 55 | +* Reviewed [PR#22](https://github.com/boostorg/flyweight/pull/22). |
| 56 | + |
| 57 | +### Boost.PolyCollection |
| 58 | + |
| 59 | +* Reviewed [PR#32](https://github.com/boostorg/poly_collection/pull/32). |
| 60 | + |
| 61 | +### Boost website |
| 62 | + |
| 63 | +* Filed issues |
| 64 | +[#1845](https://github.com/boostorg/website-v2/issues/1845), |
| 65 | +[#1846](https://github.com/boostorg/website-v2/issues/1846), |
| 66 | +[#1851](https://github.com/boostorg/website-v2/issues/1851), |
| 67 | +[#1858](https://github.com/boostorg/website-v2/issues/1858), |
| 68 | +[#1900](https://github.com/boostorg/website-v2/issues/1900), |
| 69 | +[#1927](https://github.com/boostorg/website-v2/issues/1927), |
| 70 | +[#1936](https://github.com/boostorg/website-v2/issues/1936), |
| 71 | +[#1937](https://github.com/boostorg/website-v2/issues/1937). |
| 72 | +* Helped with the transition of the global release notes procedure to one |
| 73 | +based on the new website repo exclusively |
| 74 | +([PR#508](https://github.com/boostorg/website-v2-docs/pull/508), |
| 75 | +[PR#510](https://github.com/boostorg/website-v2-docs/pull/510)). This procedure is |
| 76 | +expected to launch in time for the upcoming Boost 1.90 release. |
| 77 | + |
| 78 | +### Boost promotion |
| 79 | + |
| 80 | +* Prepared and posted around 10 messages on Boost's X account and Reddit. |
| 81 | +The activity on social media has grown considerably thanks to the dedication of |
| 82 | +Rob Beeston and others. |
| 83 | + |
| 84 | +### Support to the community |
| 85 | + |
| 86 | +* Helped Jean-Louis Leroy get Drone support for the upcoming |
| 87 | +Boost.OpenMethod library ([PR#39](https://github.com/boostorg/openmethod/pull/39)). |
| 88 | +* Supporting the community as a member of the Fiscal Sponsorhip Committee (FSC). |
0 commit comments