On 3/22/24 16:43, Boris Kolpackov wrote:
Andrey Semashev via Boost
writes: I'm not very familiar with modules, but it looks to me that this technology is very far from wide adoption. More than that, it looks like it is very demanding on the developers [...]
I think `import std;`, which I found surprisingly usable[1] in Clang 18 and libc++, could provide a lot of benefit while demanding little form developers.
If you intend your library to require C++20 with modules as a minimum, you might get away with a simple `import std;`. But you're still including headers from other libraries, and your own headers as well (which is what I'm seeing in your linked project's headers), so the benefit from importing std is questionable. The code becomes more messy if you want to support older C++ versions. And let's not forget that in order for the `import std;` to work, including in mixed usage scenario when part of the code includes headers and part uses modules, compiler and standard library developers had to do their part.
So yeah, modules are a mixed bag, and I don't see support for modules as a worthy goal in the immediate future. If modules are the only benefit HMake promises to provide, that's a weak selling point, IMO.
What would be a strong selling point of a new build system for Boost, in your opinion (or anyone else's, for that matter)?
I'm not sure what that might be. Both b2 and CMake get the job done, which is they support configuring, building and testing code. That's pretty much the extent of what I expect from a build system. There are, of course, things other than that, like fetching dependencies or building distro packages or deploying to a server, but in my opinion, these things are out of scope of what I call a build system.