What I’m really taking out of this is that modules, as specified, were impossible for anyone to implement. The improvements to concepts look very nice to have, and most of the rest looks (possibly very) intermittently useful, but not game-changing.
makes me wonder why that is. priorities? uncleared questions in implementation strategy? or is the inner compiler structure of GCC just in a state that takes more time and effort to rewrite in order support something like modules? Like did GCC naturally have a greater implementation space distance to modules than MSVC and Clang had?
I generally wonder how much of that is a factor which decides which compiler gets which features first. If one compiler already does something very similar to feature X, it’s just a matter of a few code line changes, or in extreme cases different default compiler flags. contrast that to a complete rewrite of one of the core algorithms and/or data structures.
I think it’s just this feature is so big that it requires months of focused uninterrupted work by a dedicated team of engineers - something that’s unlikely to happen in a project that relies on volunteer effort. Microsoft could do it because MSVC is developed by a dedicated team of developers working on it full-time (and paid for it). Clang probably was just luckier than GCC and there were people in its community passionate enough to drive this work (still its modules implementation is still less complete than MSVC AFAIK).
@deadcream@rmam@addie@Pitri AFAICS, the number of *paid* compiler developers working on modules is larger in the Clang team (2) than in the MSVC team (1).
So pretty close to GCC’s status - https://gcc.gnu.org/projects/cxx-status.html
What I’m really taking out of this is that modules, as specified, were impossible for anyone to implement. The improvements to concepts look very nice to have, and most of the rest looks (possibly very) intermittently useful, but not game-changing.
@addie @rmam
" modules, as specified, were impossible for anyone to implement."
Let me fix: impossible for anyone except Clang and MSVC.
makes me wonder why that is. priorities? uncleared questions in implementation strategy? or is the inner compiler structure of GCC just in a state that takes more time and effort to rewrite in order support something like modules? Like did GCC naturally have a greater implementation space distance to modules than MSVC and Clang had?
I generally wonder how much of that is a factor which decides which compiler gets which features first. If one compiler already does something very similar to feature X, it’s just a matter of a few code line changes, or in extreme cases different default compiler flags. contrast that to a complete rewrite of one of the core algorithms and/or data structures.
I think it’s just this feature is so big that it requires months of focused uninterrupted work by a dedicated team of engineers - something that’s unlikely to happen in a project that relies on volunteer effort. Microsoft could do it because MSVC is developed by a dedicated team of developers working on it full-time (and paid for it). Clang probably was just luckier than GCC and there were people in its community passionate enough to drive this work (still its modules implementation is still less complete than MSVC AFAIK).
@deadcream @rmam @addie @Pitri AFAICS, the number of *paid* compiler developers working on modules is larger in the Clang team (2) than in the MSVC team (1).