Boost logo

Boost :

From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2024-04-08 17:30:54


On 4/8/24 18:43, Ruben Perez via Boost wrote:
> Hi all,
>
> Following a recent conversation on the possibility to somehow enable
> Boost to be consumed using C++20 modules, I've jumped in and done a
> small research: https://anarthal.github.io/cppblog/modules

It would be interesting to see the benchmark numbers for a larger number
of CPU cores (e.g. 16). I can see in the table that up to 3 TUs build
time with modules is 25-40% higher than with headers and the situation
significantly changes for 4 and more TUs. You were using 3 cores for
compilation, and I wonder if this is related.

> René posted the link to r/cpp and it seems to have attracted some
> interest (https://www.reddit.com/r/cpp/comments/1bxggim/c20_modules_and_boost_an_analysis/).
> It looks like a small fraction of users would consider consuming Boost
> as modules if there was the possibility (note that considering here is
> pretty far from actually doing it).
>
> Nevertheless, I'd like to know everyone's opinion on the subject. If
> we find a way to overcome the technical challenges that I manifest in
> the article, do you think a set of non-intrusive "module bindings"
> allowing users to consume Boost as a module could add any value to
> Boost?

I find the fact that modules, including std, are not redistributable and
that they must be built for every project extremely disappointing. I
suspect, this will negate the potential benefit from reducing parsing
when large projects like Boost are consumed as modules. Remember that we
typically use only small portions of Boost, or even small portions of
select Boost libraries. It doesn't make sense to have to build the whole
Boost into a module only to pull a small part from it. I would much
rather include the headers I want instead.

This is also relevant to the standard library. Will we have to build the
ever-growing std module every time we need a smallest thing from the
standard library? This sounds like a disaster to me.

One other thing that isn't clear is how modules interact with compiled
libraries. I don't suppose modules will replace static/shared libraries,
so I presume a module will be added on top of the library? How should it
"export" the symbols that are already exported from the compiled library
then?


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk