<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 1/11/19 9:29 AM, Ben Craig wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:DM6PR04MB462025BE2EF2EBB854BCC9FB8B850@DM6PR04MB4620.namprd04.prod.outlook.com">
      <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:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@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;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 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;
        color:black;}
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;}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;}
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;
        color:black;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle25
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1366711361;
        mso-list-template-ids:-975897992;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></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]-->
      <div class="WordSection1">
        <p class="MsoNormal">&gt; The manifest file could be generated
          (based on information in source code) and<o:p></o:p></p>
        <p class="MsoNormal">&gt; usable by multiple tools, IDEs, and
          build systems.  It need not be a statically<o:p></o:p></p>
        <p class="MsoNormal">&gt; maintained file.  I like this approach
          because it appropriately separates the<o:p></o:p></p>
        <p class="MsoNormal">&gt; steps of identifying/building the
          module name/file map vs using the module<o:p></o:p></p>
        <p class="MsoNormal">&gt; name/file map (most tools don't want
          to be build systems).<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">This sounds like a clang compilation
          database.</p>
      </div>
    </blockquote>
    I don't think so.  It is a database, but not one that stores the
    history of how a build was performed.  Rather, it stores some of the
    information that would be needed to construct a compiler invocation
    (or for a tool/IDE to parse source files that require resolving
    module names to source files).<br>
    <blockquote type="cite"
cite="mid:DM6PR04MB462025BE2EF2EBB854BCC9FB8B850@DM6PR04MB4620.namprd04.prod.outlook.com">
      <div class="WordSection1">
        <p class="MsoNormal">Such a thing is useful for non-build tools,
          and can be generated automatically, as you said.  I am
          concerned that generating such a file early in the build
          process would cause performance problems.  Each source file
          would need to be partially parsed before the build DAG could
          be fully formed.  However, I don’t have benchmarks indicating
          how expensive an extra pass over all the source files is.</p>
      </div>
    </blockquote>
    <p>Without such a file (or equivalent information statically encoded
      in "the" build system), the only alternative is to examine every
      source file in order to construct the build DAG in memory anyway. 
      How else could such a scan be avoided?  (There is another
      alternative; implicitly building modules on demand as is done for
      Clang modules today.  But to my knowledge, no implementors are
      pursuing that for standard proposed modules).<br>
    </p>
    <p>Tom.<br>
    </p>
    <blockquote type="cite"
cite="mid:DM6PR04MB462025BE2EF2EBB854BCC9FB8B850@DM6PR04MB4620.namprd04.prod.outlook.com">
      <div class="WordSection1">
        <p class="MsoNormal"><o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><o:p> </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>
                <a class="moz-txt-link-abbreviated" href="mailto:tooling-bounces@open-std.org">tooling-bounces@open-std.org</a>
                <a class="moz-txt-link-rfc2396E" href="mailto:tooling-bounces@open-std.org">&lt;tooling-bounces@open-std.org&gt;</a>
                <b>On Behalf Of </b>Tom Honermann<br>
                <b>Sent:</b> Thursday, January 10, 2019 9:27 PM<br>
                <b>To:</b> WG21 Tooling Study Group SG15
                <a class="moz-txt-link-rfc2396E" href="mailto:tooling@open-std.org">&lt;tooling@open-std.org&gt;</a><br>
                <b>Subject:</b> Re: [Tooling] Modules naming<o:p></o:p></p>
            </div>
          </div>
          <p class="MsoNormal"><o:p> </o:p></p>
          <div>
            <p class="MsoNormal">On 1/10/19 5:17 PM, Ben Craig wrote:<o:p></o:p></p>
          </div>
          <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
            <p class="MsoNormal">Can you elaborate more on the kinds of
              historical pains caused by tying a #include directive to a
              file name?  I know of issues with #pragma once, but that
              feels like a distinct problem from file names.<o:p></o:p></p>
            <p class="MsoNormal"> <o:p></o:p></p>
            <p class="MsoNormal">&gt; This is based on decades of
              experience caused by header files. <o:p></o:p></p>
            <p class="MsoNormal">I think most of the participants in
              wg21 have years, often decades of experience with header
              files.  I know of plenty of issues with the preprocessor,
              but I am not yet aware of any major problems on the file
              name front.  (ok, getting the right slashes can be
              annoying… but it’s not a huge problem for me personally).<o:p></o:p></p>
            <p class="MsoNormal"> <o:p></o:p></p>
            <p class="MsoNormal">I’m not a fan of the MANIFEST / module
              map approach in general.  It requires duplicating
              information that is already in the source.  I get that it
              has the potential to speed up builds, but I’d rather not
              have to update another location when I add a new .cpp file
              to my project.  Many build systems allow for the user to
              make the tradeoff in whether they will use a file system
              glob to enumerate their source, or require the user to
              list the source manually.  I usually fall into the file
              system glob crowd.<o:p></o:p></p>
          </blockquote>
          <p>The manifest file could be generated (based on information
            in source code) and usable by multiple tools, IDEs, and
            build systems.  It need not be a statically maintained
            file.  I like this approach because it appropriately
            separates the steps of identifying/building the module
            name/file map vs using the module name/file map (most tools
            don't want to be build systems).<o:p></o:p></p>
          <p>Tom.<o:p></o:p></p>
          <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
            <p class="MsoNormal"> <o:p></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> <a
                      href="mailto:tooling-bounces@open-std.org"
                      moz-do-not-send="true">tooling-bounces@open-std.org</a>
                    <a href="mailto:tooling-bounces@open-std.org"
                      moz-do-not-send="true">&lt;tooling-bounces@open-std.org&gt;</a>
                    <b>
                      On Behalf Of </b>Gabriel Dos Reis<br>
                    <b>Sent:</b> Thursday, January 10, 2019 3:15 PM<br>
                    <b>To:</b> WG21 Tooling Study Group SG15 <a
                      href="mailto:tooling@open-std.org"
                      moz-do-not-send="true">&lt;tooling@open-std.org&gt;</a><br>
                    <b>Subject:</b> Re: [Tooling] Modules naming<o:p></o:p></p>
                </div>
              </div>
              <p class="MsoNormal"> <o:p></o:p></p>
              <p class="MsoNormal">Microsoft strongly encourages its
                developers and customers to NOT tie a module name with
                the containing source file of its interface.  This is
                based on decades of experience caused by header files. 
                I would rather see us move in the direction of some sort
                of MANIFEST file that map modules to source files and
                artifacts.<o:p></o:p></p>
              <p class="MsoNormal"> <o:p></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> <a
                        href="mailto:tooling-bounces@open-std.org"
                        moz-do-not-send="true">tooling-bounces@open-std.org</a>
                      &lt;<a href="mailto:tooling-bounces@open-std.org"
                        moz-do-not-send="true">tooling-bounces@open-std.org</a>&gt;
                      <b>On Behalf Of </b>Corentin<br>
                      <b>Sent:</b> Thursday, January 10, 2019 6:53 AM<br>
                      <b>To:</b> WG21 Tooling Study Group SG15 &lt;<a
                        href="mailto:tooling@open-std.org"
                        moz-do-not-send="true">tooling@open-std.org</a>&gt;<br>
                      <b>Subject:</b> [Tooling] Modules naming<o:p></o:p></p>
                  </div>
                </div>
                <p class="MsoNormal"> <o:p></o:p></p>
                <div>
                  <p class="MsoNormal">Hello.<o:p></o:p></p>
                  <div>
                    <p class="MsoNormal">I would like to suggest two
                      modules related proposals that I think SG15 should
                      look at.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">-<b> Compiler enforced mapping
                        between module names and module interface file
                        (resource) name. </b><o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">Currently, modules interfaces
                      can be declared in any file - which makes
                      dependency scanning more tedious than it needs to
                      be and have performance implications<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">(The build system needs to open
                      all files to gather a list of modules) - notably
                      when the build system tries to start building
                      while the dependency graph isn't yet complete.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">Tools ( ide, code servers,
                      indexers, refactoring) may also greatly benefit
                      from an easier way to locate the source file which
                      declares a module.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">The specifics of the mapping
                      are open to bikeshedding. However, I think we
                      would have better luck sticking to something
                      simple like &lt;module identifier&gt; &lt;=&gt;
                      &lt;file name&gt;.&lt;extension&gt;<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">(The standardese would mention
                      <i>resource identifier</i> rather than filename)<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">- <b>A standing document
                        giving guidelines for modules naming.</b><o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">The goal is to take everything
                      the community had to learn the hard way about
                      header naming over the past 30 years and apply it
                      to modules by providing a set of guidelines<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">that could be partially
                      enforced by build system vendors.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">Encouraging consistency and
                      uniqueness of module identifiers across the
                      industry is I think a necessary step towards sane
                      package management.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">Note that the standard requires
                      uniqueness of modules identifiers within (the
                      standard definition of) a program but says little
                      about a way to ensure this uniqueness.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">Here is a rough draft of what I
                      think would be good guidelines, partially inspired
                      by what is done by other languages facing similar
                      issues.<o:p></o:p></p>
                  </div>
                  <div>
                    <div>
                      <p class="MsoNormal"
style="mso-margin-top-alt:0in;margin-right:24.0pt;margin-bottom:0in;margin-left:24.0pt;margin-bottom:.0001pt;text-indent:-.25in;mso-list:l0
                        level1 lfo2;vertical-align:baseline">
                        <!--[if !supportLists]--><span
                          style="font-size:10.0pt;font-family:Symbol"><span
                            style="mso-list:Ignore">·<span
                              style="font:7.0pt &quot;Times New
                              Roman&quot;">        
                            </span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#222324;border:none
                            windowtext 1.0pt;padding:0in">Prefix module
                            names with an entity and/or a project name
                            to prevent modules from different companies,
                            entities and projects of declaring the same
                            module names.</span></b><o:p></o:p></p>
                      <p class="MsoNormal"
style="mso-margin-top-alt:0in;margin-right:24.0pt;margin-bottom:0in;margin-left:24.0pt;margin-bottom:.0001pt;text-indent:-.25in;mso-list:l0
                        level1 lfo2;vertical-align:baseline">
                        <!--[if !supportLists]--><span
                          style="font-size:10.0pt;font-family:Symbol"><span
                            style="mso-list:Ignore">·<span
                              style="font:7.0pt &quot;Times New
                              Roman&quot;">        
                            </span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#222324;border:none
                            windowtext 1.0pt;padding:0in">Exported
                            top-level namespaces should have a name
                            identic to the project name used as part of
                            the name of the module(s) from which it is
                            exported.</span></b><o:p></o:p></p>
                      <p class="MsoNormal"
style="mso-margin-top-alt:0in;margin-right:24.0pt;margin-bottom:0in;margin-left:24.0pt;margin-bottom:.0001pt;text-indent:-.25in;mso-list:l0
                        level1 lfo2;vertical-align:baseline">
                        <!--[if !supportLists]--><span
                          style="font-size:10.0pt;font-family:Symbol"><span
                            style="mso-list:Ignore">·<span
                              style="font:7.0pt &quot;Times New
                              Roman&quot;">        
                            </span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#222324;border:none
                            windowtext 1.0pt;padding:0in">Do not export
                            multiple top-level namespaces</span></b><o:p></o:p></p>
                      <p class="MsoNormal"
style="mso-margin-top-alt:0in;margin-right:24.0pt;margin-bottom:0in;margin-left:24.0pt;margin-bottom:.0001pt;text-indent:-.25in;mso-list:l0
                        level1 lfo2;vertical-align:baseline">
                        <!--[if !supportLists]--><span
                          style="font-size:10.0pt;font-family:Symbol"><span
                            style="mso-list:Ignore">·<span
                              style="font:7.0pt &quot;Times New
                              Roman&quot;">        
                            </span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#222324;border:none
                            windowtext 1.0pt;padding:0in">Do not export
                            entities in the global namespace outside of
                            the global module fragment.</span></b><o:p></o:p></p>
                      <p class="MsoNormal"
style="mso-margin-top-alt:0in;margin-right:24.0pt;margin-bottom:0in;margin-left:24.0pt;margin-bottom:.0001pt;text-indent:-.25in;mso-list:l0
                        level1 lfo2;vertical-align:baseline">
                        <!--[if !supportLists]--><span
                          style="font-size:10.0pt;font-family:Symbol"><span
                            style="mso-list:Ignore">·<span
                              style="font:7.0pt &quot;Times New
                              Roman&quot;">        
                            </span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#222324;border:none
                            windowtext 1.0pt;padding:0in">Organize
                            modules hierarchically.</span></b><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#42464C"> For
                          example, if both modules </span><code><span
                            style="font-size:10.0pt;color:#42464C;border:none
                            windowtext 1.0pt;padding:0in">example.foo</span></code><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#42464C"> and </span><code><span
style="font-size:10.0pt;color:#42464C;border:none windowtext
                            1.0pt;padding:0in">example.foo.bar</span></code><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#42464C"> exist
                          as part of the public API of </span><code><span
style="font-size:10.0pt;color:#42464C;border:none windowtext
                            1.0pt;padding:0in">example</span></code><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#42464C">, </span><code><span
style="font-size:10.0pt;color:#42464C;border:none windowtext
                            1.0pt;padding:0in">example.foo</span></code><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#42464C"> should
                          reexport </span><code><span
                            style="font-size:10.0pt;color:#42464C;border:none
                            windowtext 1.0pt;padding:0in">example.foo.bar</span></code><o:p></o:p></p>
                      <p class="MsoNormal"
style="mso-margin-top-alt:0in;margin-right:24.0pt;margin-bottom:0in;margin-left:24.0pt;margin-bottom:.0001pt;text-indent:-.25in;mso-list:l0
                        level1 lfo2;vertical-align:baseline">
                        <!--[if !supportLists]--><span
                          style="font-size:10.0pt;font-family:Symbol"><span
                            style="mso-list:Ignore">·<span
                              style="font:7.0pt &quot;Times New
                              Roman&quot;">        
                            </span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#222324;border:none
                            windowtext 1.0pt;padding:0in">Avoid common
                            names such as </span></b><code><span
                            style="font-size:10.0pt;color:#222324;border:none
                            windowtext 1.0pt;padding:0in">util</span></code><b><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#222324;border:none
                            windowtext 1.0pt;padding:0in"> and </span></b><code><span
style="font-size:10.0pt;color:#222324;border:none windowtext
                            1.0pt;padding:0in">core</span></code><b><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#222324;border:none
                            windowtext 1.0pt;padding:0in"> for module
                            name prefix and top-level namespace names.</span></b><o:p></o:p></p>
                      <p class="MsoNormal"
style="mso-margin-top-alt:0in;margin-right:24.0pt;margin-bottom:0in;margin-left:24.0pt;margin-bottom:.0001pt;text-indent:-.25in;mso-list:l0
                        level1 lfo2;vertical-align:baseline">
                        <!--[if !supportLists]--><span
                          style="font-size:10.0pt;font-family:Symbol"><span
                            style="mso-list:Ignore">·<span
                              style="font:7.0pt &quot;Times New
                              Roman&quot;">        
                            </span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#222324;border:none
                            windowtext 1.0pt;padding:0in">Use lower-case
                            module names</span></b><o:p></o:p></p>
                      <p class="MsoNormal"
style="mso-margin-top-alt:0in;margin-right:24.0pt;margin-bottom:0in;margin-left:24.0pt;margin-bottom:.0001pt;text-indent:-.25in;mso-list:l0
                        level1 lfo2;vertical-align:baseline">
                        <!--[if !supportLists]--><span
                          style="font-size:10.0pt;font-family:Symbol"><span
                            style="mso-list:Ignore">·<span
                              style="font:7.0pt &quot;Times New
                              Roman&quot;">        
                            </span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:&quot;Arial&quot;,sans-serif;color:#222324;border:none
                            windowtext 1.0pt;padding:0in">Do not use
                            characters outside of the basic source
                            character set in module name identifiers.</span></b><o:p></o:p></p>
                    </div>
                  </div>
                  <div>
                    <p class="MsoNormal">My hope is that these 2
                      proposals (whose impact on the standard is
                      minimal) would make it easier for current tooling
                      to deal with modules<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">while making possible for
                      example to design dependency managers and build
                      systems able to work at the module level.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">I'd love to gather feedback and
                      opinions before going further in that direction.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">Thanks a lot!<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">Corentin<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">PS: For a bit of background, I
                      talked about these issues there<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"><a
href="https://urldefense.proofpoint.com/v2/url?u=https-3A__nam06.safelinks.protection.outlook.com_-3Furl-3Dhttps-253A-252F-252Fcor3ntin.github.io-252Fposts-252Fmodules-5Fmapping-252F-26data-3D02-257C01-257Cgdr-2540microsoft.com-257C1139eb25a2ca43b5cb2e08d6770b6606-257C72f988bf86f141af91ab2d7cd011db47-257C1-257C0-257C636827288180838903-26sdata-3DRbCelyBe1YDW4eNJtYEgKkAeHGxvkhsYqzPk0wf3F58-253D-26reserved-3D0&amp;d=DwMGaQ&amp;c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&amp;r=y8mub81SfUi-UCZRX0Vl1g&amp;m=Yv6fjy4yWnfBkW_0m604prnwiQIO5K6DRLBHMjpiaxI&amp;s=v7Z40T9WgivvxWUJ6plSphOw4d8bdvfEz9NAqCruKwE&amp;e="
                        moz-do-not-send="true">https://cor3ntin.github.io/posts/modules_mapping/</a><o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"><a
href="https://urldefense.proofpoint.com/v2/url?u=https-3A__nam06.safelinks.protection.outlook.com_-3Furl-3Dhttps-253A-252F-252Fcor3ntin.github.io-252Fposts-252Fmodules-5Fnaming-252F-26data-3D02-257C01-257Cgdr-2540microsoft.com-257C1139eb25a2ca43b5cb2e08d6770b6606-257C72f988bf86f141af91ab2d7cd011db47-257C1-257C0-257C636827288180838903-26sdata-3DtMhQa4ijeqUd2qxXV4loP47nU5NESRTKJLwZqe-252FI1fc-253D-26reserved-3D0&amp;d=DwMGaQ&amp;c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&amp;r=y8mub81SfUi-UCZRX0Vl1g&amp;m=Yv6fjy4yWnfBkW_0m604prnwiQIO5K6DRLBHMjpiaxI&amp;s=O9uUoT3QItO0vkb2QTG-EnXjsGfOiq7t93GgFz4YHx8&amp;e="
                        moz-do-not-send="true">https://cor3ntin.github.io/posts/modules_naming/</a><o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                </div>
              </div>
            </div>
            <p class="MsoNormal"><br>
              <br>
              <o:p></o:p></p>
            <pre>_______________________________________________<o:p></o:p></pre>
            <pre>Tooling mailing list<o:p></o:p></pre>
            <pre><a href="mailto:Tooling@isocpp.open-std.org" moz-do-not-send="true">Tooling@isocpp.open-std.org</a><o:p></o:p></pre>
            <pre><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.open-2Dstd.org_mailman_listinfo_tooling&amp;d=DwMDaQ&amp;c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&amp;r=y8mub81SfUi-UCZRX0Vl1g&amp;m=_dusEGqwzSzglMFFwUFdPvzdZCb1dTUZ9DjjrQwHaUw&amp;s=o4EJMe6pKxUA_1edRMmVmbN3paM7ckt_7iDjgIveiwA&amp;e=" moz-do-not-send="true">http://www.open-std.org/mailman/listinfo/tooling</a><o:p></o:p></pre>
          </blockquote>
          <p><o:p> </o:p></p>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
Tooling mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Tooling@isocpp.open-std.org">Tooling@isocpp.open-std.org</a>
<a class="moz-txt-link-freetext" href="http://www.open-std.org/mailman/listinfo/tooling">http://www.open-std.org/mailman/listinfo/tooling</a>
</pre>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>