-
Notifications
You must be signed in to change notification settings - Fork 260
feat: allow authoring module units #569
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Check the generated program on Compiler Explorer: https://cpp2.godbolt.org/z/csGKWqxfh. |
On GCC: https://cpp2.godbolt.org/z/n9TPeh58Y. |
I appreciate this and I very much want to support authoring and consuming modules (*), but I don't think modules are ready for us yet. The support on the three major compilers is still very brittle, and I keep expecting that to change imminently but I want to keep holding off until that changes. If cppfront starts supporting modules authoring now, I fear it'll lead to lots of bug reports that will mostly be compiler bugs beyond our control, and so will be a distraction for cppfront. So, with appreciation for the work that went into this PR, I'll still close this one for now. Sorry! I do appreciate it and I do look forward to when we can do this on all the major compilers. (*) beyond the implicit as-if-import-std that already works in |
That's fair. Let's keep watching the growth of C++ modules. |
Could this be reconsidered now? We have converted a ~100 KLOC C++20 project (product: https://www.cadifra.com/) last year to using modules on MSVC. The conversion was quite some work, but we are very happy now with the MS compiler and the result of the conversion. Cppfront mistreating the |
I've been having some good experience with modules on both MSVC and clang in my cpp2b project. I would love to see cpp2 support modules soon as well! |
Partially addresses #269.
Resolves #1190.
The above means that module units aren't affected by #470.
I started including an expensive header.
So I isolated the problem to a module.
And timeliness was restored.
Test it on a recent Clang version.
hello.cpp2
:main.cpp2
:Commands:
hello.cpp
main.cpp
Testing summary:
Acknowledgements: