<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/10/19 5:17 PM, Ben Craig wrote:<br>
</div>
<blockquote type="cite"
cite="mid:BL0PR04MB46094EEB9F213D376A3348958B840@BL0PR04MB4609.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;}
/* 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;}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
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;}
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.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;}
span.EmailStyle21
        {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">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">> 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.</p>
</div>
</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).<br>
</p>
<p>Tom.<br>
</p>
<blockquote type="cite"
cite="mid:BL0PR04MB46094EEB9F213D376A3348958B840@BL0PR04MB4609.namprd04.prod.outlook.com">
<div class="WordSection1">
<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"><tooling-bounces@open-std.org></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 class="moz-txt-link-rfc2396E" href="mailto:tooling@open-std.org"><tooling@open-std.org></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>
<<a href="mailto:tooling-bounces@open-std.org"
moz-do-not-send="true">tooling-bounces@open-std.org</a>>
<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 <<a
href="mailto:tooling@open-std.org"
moz-do-not-send="true">tooling@open-std.org</a>><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
<module identifier> <=> <file
name>.<extension><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;color:#42464C"><span
style="mso-list:Ignore">·<span style="font:7.0pt
"Times New Roman"">
</span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:"Arial",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><span
style="font-family:"Arial",sans-serif;color:#42464C"><o:p></o:p></span></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;color:#42464C"><span
style="mso-list:Ignore">·<span style="font:7.0pt
"Times New Roman"">
</span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:"Arial",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><span
style="font-family:"Arial",sans-serif;color:#42464C"><o:p></o:p></span></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;color:#42464C"><span
style="mso-list:Ignore">·<span style="font:7.0pt
"Times New Roman"">
</span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:"Arial",sans-serif;color:#222324;border:none
windowtext 1.0pt;padding:0in">Do not export
multiple top-level namespaces</span></b><span
style="font-family:"Arial",sans-serif;color:#42464C"><o:p></o:p></span></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;color:#42464C"><span
style="mso-list:Ignore">·<span style="font:7.0pt
"Times New Roman"">
</span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:"Arial",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><span
style="font-family:"Arial",sans-serif;color:#42464C"><o:p></o:p></span></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;color:#42464C"><span
style="mso-list:Ignore">·<span style="font:7.0pt
"Times New Roman"">
</span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:"Arial",sans-serif;color:#222324;border:none
windowtext 1.0pt;padding:0in">Organize modules
hierarchically.</span></b><span
style="font-size:7.5pt;font-family:"Arial",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:"Arial",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:"Arial",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:"Arial",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:"Arial",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><span
style="font-family:"Arial",sans-serif;color:#42464C"><o:p></o:p></span></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;color:#42464C"><span
style="mso-list:Ignore">·<span style="font:7.0pt
"Times New Roman"">
</span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:"Arial",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:"Arial",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:"Arial",sans-serif;color:#222324;border:none
windowtext 1.0pt;padding:0in"> for module name
prefix and top-level namespace names.</span></b><span
style="font-family:"Arial",sans-serif;color:#42464C"><o:p></o:p></span></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;color:#42464C"><span
style="mso-list:Ignore">·<span style="font:7.0pt
"Times New Roman"">
</span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:"Arial",sans-serif;color:#222324;border:none
windowtext 1.0pt;padding:0in">Use lower-case
module names</span></b><span
style="font-family:"Arial",sans-serif;color:#42464C"><o:p></o:p></span></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;color:#42464C"><span
style="mso-list:Ignore">·<span style="font:7.0pt
"Times New Roman"">
</span></span></span><!--[endif]--><b><span
style="font-size:7.5pt;font-family:"Arial",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><span
style="font-family:"Arial",sans-serif;color:#42464C"><o:p></o:p></span></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&d=DwMGaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=y8mub81SfUi-UCZRX0Vl1g&m=Yv6fjy4yWnfBkW_0m604prnwiQIO5K6DRLBHMjpiaxI&s=v7Z40T9WgivvxWUJ6plSphOw4d8bdvfEz9NAqCruKwE&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&d=DwMGaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=y8mub81SfUi-UCZRX0Vl1g&m=Yv6fjy4yWnfBkW_0m604prnwiQIO5K6DRLBHMjpiaxI&s=O9uUoT3QItO0vkb2QTG-EnXjsGfOiq7t93GgFz4YHx8&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>
</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>