From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2024-03-21 21:04:52


On 3/21/24 20:34, Hassan Sajjad via Boost wrote:
> Hi.
>
> Preface:
>
> C++20 modules and header-units are a great addition to C++. There are
> numerous benefits of these. One of them is a faster compilation.
> Conventional build-systems however are unable to benefit from C++20 modules
> or header-units. Boost current build-system b2 does not support C++20
> modules or header-units. CMake does not support C++20 header-units
> https://gitlab.kitware.com/cmake/cmake/-/issues/25293.
>
> I developed the build-system HMake https://github.com/HassanSajjad-302/HMake.
> It is in C++ and MIT Licenced. It supports drop-in header-files to
> header-units replacement. While compilers support processing a header-file
> as header-unit, no other build-system supports this feature.
>
> With this I compiled SFML with C++20 header-units
> https://www.reddit.com/r/cpp/comments/1555g6b/hmake_build_system_02_compiling_an_sfml_example/.
> In the post, I mentioned that 2-3.5x speed-up was achieved but I did some
> more testing recently and an even better speed-up of 2.7-4.7x was achieved
> i.e., the speed of header-units is further improving with recent iterations.
>
> Proposal:
>
> I want to propose my build-system HMake for boost.

I'm strongly opposed to supporting a third build system. Especially
given that the proposed build system is not mature and hasn't gained
wide adoption. In fact, from the GitHub page it looks like a prototype
rather than something that was battle tested. I see no documentation
besides the readme with a few examples.

Also, personally, I don't think C++ is a good choice for a build system
language. The build system files are unnecessarily verbose, and the
build process seems too complex.

> Besides its already
> state-of-the-art C++20 modules and header-units support, it will be the
> first to support https://lists.isocpp.org/sg15/2023/11/2106.php or
> https://lists.isocpp.org/sg15/2023/11/2146.php if any of this gets
> implemented. These papers present ideas for faster module adoption and
> avoiding redundant module compilations. These need support from
> build-system. This way boost could be a breeding ground for C++20 modules
> adoption. Also, I have good experience with boost's current build-system b2
> as a good portion of HMake's current API is inspired by it.
>
> Timeframe:
>
> I will complete this proposal in 3 months.

This is a very ambitious time frame, IMO.

> Deliverables:
>
> 1) 2-months: Boost basic configuration compiled with C++20 header-units.
> This is more of a lone sprint.
> 2) 3-months: All boost current configurations + new with header-units and
> modules + tests and examples. This will require more active involvement by
> the current maintainers.
> I will give weekly updates here and will make a video after 2 months
> presenting the progress made. This will be to help other contributors so
> they can ensure that their library is fully supported.
>
> Cost:
>
> Standard C++ Developer Compensation for 3 months (Negotiable). Payments are
> to be issued monthly. But you can back out at any point in case you are
> unsatisfied with development speed or direction.

I'm not the one to make funding decisions, but I don't see why Boost
would pay for this work. It's not like Boost is in dire need of a new
build system.

If we do want to sponsor our build system advance, I think the money
would be better spent on improving CMake support in Boost and in
implementing features we need in CMake.