4 ms·
Modules is another of those features that were added to C++ due to peer pressure from other programming languages. The thing is that they're heavily implementa
by mgaunard 3y ago
Modules is another of those features that were added to C++ due to peer pressure from other programming languages.
The thing is that they're heavily implementation-specific things. Two of the biggest compiler vendors pushed the model that worked best for their implementation. The Microsoft model won the committee politics, which is why they're the only ones with an implementation. Too bad most C++ developers don't really use Microsoft software to begin with.
They should have just stuck with a simple PCH-but-you-don't-have-to-include-it-first model. That would have been straightforward and immediately useful to everybody.
- humanrebar 3y agoMSVC seems to have the best funding model of the three major compilers. I estimate that has more to do with adoption velocity than head starts on implementation, especially given how long modules have been in progress.
- dagmx 3y agoMSVC is also the least expansive of the three compilers. It has a much smaller set of languages it supports (No C, ObjC etc for example), and a much lower focus on performance [1] That’s not a criticism necessarily , but just to add that I think they likely have a more agile code base as a result. [1] https://reddit.com/r/cpp/s/BOj34UtKvu https://reddit.com/r/cpp/s/BOj34UtKvu
- logicchains 3y agoPlus its stdlib is developed by STL, the most fittingly-named guy to be developing a C++ standard library.
- mgaunard 3y agoAs I said, the module system in C++20 is literally the Microsoft model. Clang had another model that was rejected, and most of the years in committee were actually about finding a compromise between Microsoft's and Clang's approach. In the end, Clang wasn't particularly happy about the end result either.
- humanrebar 3y agoIf it were literally the MSVC implementation, they would have been done threw years ago.
- mgaunard 3y agoThey were. Gaby has been making presentations at Cppcon about it since 2015. By 2019 it was mostly about teaching people how to use it.
- humanrebar 3y agoI'm positive there has been nontrivial work to support C++ modules going into MSVC, msbuild, VS, MS STL, etc., since 2019. And there is still plenty of work to do, for instance helping build systems know when they need to produce more than one IFC for a given module (right now build systems assume modular C++ code is ODR bug free).
- mgaunard 3y agoThat sounds like it's mostly integration and tooling.
- humanrebar 3y agoAlso bug fixes. And there are still major headaches around when names are provided both through textual inclusion and import statements. But integration and tooling is required for any major amount of adoption. IntelliSense has to work. Existing LSPs have to work.
- mgaunard 3y agoI personally do not use IDEs, completion or even off-the-shelf build systems. I believe that to be a common situation.
- mathstuf 3y ago