<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 12 Feb 2019 at 21:38 Matthew Woehlke &lt;<a href="mailto:mwoehlke.floss@gmail.com">mwoehlke.floss@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 12/02/2019 15.02, JF Bastien wrote:<br>
&gt; On Tue, Feb 12, 2019 at 11:50 AM Ben Boeckel wrote:<br>
&gt;&gt; On Tue, Feb 12, 2019 at 19:32:45 +0000, Gabriel Dos Reis wrote:<br>
&gt;&gt;&gt; IPR isn’t for distribution.<br>
&gt;&gt;<br>
&gt;&gt; OK. Substitute whatever format we end up using for distribution of<br>
&gt;&gt; modules within RPM, DPKG, vcpkg, ports, etc. It just can&#39;t be &quot;nothing&quot;<br>
&gt;&gt; because otherwise modules are effectively only useful in monorepo<br>
&gt;&gt; build-the-world-from-scratch projects. Which is not how C++ works today<br>
&gt;&gt; in the realm of FOSS. And it is best if that format is compatible<br>
&gt;&gt; between otherwise-compatible compilers too.<br>
&gt; <br>
&gt; Can you elaborate on how modules are useless. You seem to say that a<br>
&gt; codebase can&#39;t use TS modules if any of its dependencies (including<br>
&gt; internal to that project!) aren&#39;t also modularized. I don&#39;t understand why<br>
&gt; that would be the case.<br>
<br>
Huh? I don&#39;t know how you arrived at that conclusion...<br>
<br>
No, the problem is that libraries are distributed, and users use<br>
distributed libraries. In order for these libraries to be modularized,<br>
they have to ship something that allows BMI&#39;s to be generated.<br>
<br>
Right now, they ship headers. They can&#39;t ship BMI&#39;s because BMI&#39;s are<br>
not portable across compilers or quite possibly even compiler versions.<br>
Shipping raw source will not be an option for non-open-source libraries.<br></blockquote><div><br></div><div>Uh ?</div><div>Headers are raw source. Module header units are raw sources</div><div>there is absolutely no difference</div><div><br></div><div>If they need to hide implementation details, module implementations units exist.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
We need an intermediate representation that is *portable*.<br>
<br>
-- <br>
Matthew<br>
_______________________________________________<br>
Tooling mailing list<br>
<a href="mailto:Tooling@isocpp.open-std.org" target="_blank">Tooling@isocpp.open-std.org</a><br>
<a href="http://www.open-std.org/mailman/listinfo/tooling" rel="noreferrer" target="_blank">http://www.open-std.org/mailman/listinfo/tooling</a><br>
</blockquote></div></div>