Ugh, sorry. the lack of Subject/References broke threading and I missed
this continuation.
On Wed, Feb 12, 2025 at 22:46:23 +0000, Frederick Virchanza Gotham via Gcc
wrote:
> I think it might be a possibility given how compiler vendors (and also
> vendors of tools like CMake) aren't really getting very far with
> modules. They've had a few years already.
"Not very far" is probably the opinion of someone that last seriously
checked in on the status in 2021 or so. Things have definitely changed
since then.
Yes, it has taken time. Longer than I'd like (as author of the CMake
support, author of P1689 for dependency scanning, and SG15 Tooling
member). But writing a spec to have toolchains to make what build
systems need to get what users need to test toolchains is not a fast
iteration cycle. Rinse and repeat for `import std`. It will likely be
another run through this cycle for header units too.
But we are finally at a point where named modules can be experimented
with. The timeline has been (roughly):
- 2019 Feb: pushing to get dependency scanning possible (I have patches
to CMake and GCC to proof-of-concept at the Kona meeting)
- 2019 Mar: CMake uses P1689R2 for its Fortran scanning/dependency
computations. The implementation is updated for further revision
updates as time goes on.
- 2020-2022: hammering out P1689 details. As of P1689R5 it is in a place
where everyone is happy. Alas, my allocations did not align with
faster progress here.
- 2022 Jun: experimental support for named modules lands in CMake 3.25.
Community and toolchain implementers experiment with my GCC patches
and report issues.
- 2023 Sep: my P1689R5 patches land in GCC
- 2023 Oct: CMake 3.28 releases with named imports as a non-experimental
feature
- 2022 Nov: VS 17.4 releases with P1689 support
- 2023 Feb: clang-scan-deps learns to write P1689R5
- 2024 Apr: Support for clang/libc++ and MSVC/STL `import std;` lands in
CMake `master`
- 2024 Jul: Experimental support for `import std;` in CMake 3.30.
- 2024 Nov: Support for GCC's `import std;` lands
We're now at a point where *projects* can experiment with modules
meaningfully (via CMake at least). I hope this drives finding issues
both with CMake (of which I'm aware of a number) and toolchains (of
which I'm sure there is some awareness of their existence, but
prioritizing them may be hard without user feedback).
I've also been working to help drive adoption in other build systems:
Bazel: experimental community-driven support (though Google needed some
convincing to allow the community to experiment with it)
Meson: interest, but no progress AFAIK
Tup: *crickets*
xmake: done
Progress in others that I have not contacted directly about it:
autotools: didn't have a maintainer when I did the first round, but
zackw has since picked it up…I should reach out
MSBuild: done (though its developers were present for P1689 discussions)
So as long as you're using CMake or xmake, go forth and test. Please
file issues too.
Thanks,
--Ben