<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Apr 20, 2022 at 2:10 PM Nicolai Josuttis via Ext &lt;<a href="mailto:ext@lists.isocpp.org">ext@lists.isocpp.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div>
    <p>Thanks Gaby and all others,</p>
    <p>I agree that this is formally nothing to discuss within the C++
      standard committee.</p>
    <p>We see a bit the consequence of inventing on the fly instead of
      standardizing existing practice.</p></div></blockquote><div><br></div><div>This is well within the remit of SG15 and the planned TR, though. While not a normative standard, SG15 has been planning to supply guidance that compilers, build systems, and package management systems can follow to improve inter-op so we can make modules successful. We can talk about things like file systems, search paths, compiler flags, and so on that we have no way to, or strong agreement to, talk about in the standard itself. An important one is a format for the compiler, or compiler supplied tool, to communicate module dependency information. We know scanning can be done with modern techniques much faster than in the past. Compare tools like ripgrep with the standard grep, for example. However, we don&#39;t want to go back to the almost accurate dependency information produced by, e.g., xorg&#39;s makedep. Only the compiler knows its own rules well enough to follow what it would do. </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>
    <p>But if we are interested in the success of modules, we should
      care.<br>
      Simplicity is a key for the success of new ideas. <br>
      So, while I agree that we need build systems in projects of
      significant size, the question is whether we still keep things as
      simple as possible. And the question is which burden we put not
      the build tools.<br>
    </p>
    <p>IMO a compiler should parse a C++ file while a build system
      should not have to do that.</p></div></blockquote><div>Compiler implementation. Possibly a separate tool, or something found by the compiler driver. But it can&#39;t be done as a side-effect of compilation as we do with header deps today. The directed graph has to be built before you can schedule all the compilation, as in the worst case you could get an out of date module interface used without being rebuilt. And that&#39;s worse than it not being available, because it&#39;s wrong but appears to succeed. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>
    <p><br></p></div>
</blockquote></div></div>

