<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">That sounds about right. <span style="font-family:&quot;Segoe UI Emoji&quot;,sans-serif">
&#128522;</span><o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> tooling-bounces@open-std.org &lt;tooling-bounces@open-std.org&gt;
<b>On Behalf Of </b>Mathias Stearn<br>
<b>Sent:</b> Tuesday, February 12, 2019 12:28 PM<br>
<b>To:</b> ben.boeckel@kitware.com; WG21 Tooling Study Group SG15 &lt;tooling@open-std.org&gt;<br>
<b>Subject:</b> Re: [Tooling] Modules feedback<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div>
<div>
<p class="MsoNormal">On Tue, Feb 12, 2019 at 2:50 PM Ben Boeckel &lt;<a href="mailto:ben.boeckel@kitware.com">ben.boeckel@kitware.com</a>&gt; wrote:<o:p></o:p></p>
</div>
<div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal">On Tue, Feb 12, 2019 at 19:32:45 &#43;0000, Gabriel Dos Reis wrote:<br>
&gt; IPR isn’t for distribution.<br>
<br>
OK. Substitute whatever format we end up using for distribution of<br>
modules within RPM, DPKG, vcpkg, ports, etc. It just can't be &quot;nothing&quot;<br>
because otherwise modules are effectively only useful in monorepo<br>
build-the-world-from-scratch projects. Which is not how C&#43;&#43; works today<br>
in the realm of FOSS. And it is best if that format is compatible<br>
between otherwise-compatible compilers too.<o:p></o:p></p>
</blockquote>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">If I understand the situation&nbsp;correctly (not at all guaranteed), I think the replacement for headers is module interface source files. Downstream projects can consume a precompiled lib by extracting the BMI from the module interface using
 their compiler and settings of choice, as long as they are ABI compatible with how the library was originally compiled. This requirement is the same as it was for headers, it just happens to be more obvious with modules.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">I certainly hope this is the plan, because as a human, I can read a header or a cppm (ideally with comments) to understand an API. However I can't read a BMI or IPR. We should not neglect the human consumers of code. Our time is (usually)
 much more valuable than the computer's that we are compiling on.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">Someone who knows better than me, please correct anything I am wrong about.<o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>