CVS difference for ai22s/ai22-0065-1.html

Differences between 1.2 and version 1.3
Log of other versions for file ai22s/ai22-0065-1.html

--- ai22s/ai22-0065-1.html	2023/05/27 07:11:57	1.2
+++ ai22s/ai22-0065-1.html	2023/06/06 06:07:33	1.3
@@ -1,21 +1,30 @@
-<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0065-1/01</title>
+<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0065-1/02</title>
 <style type="text/css">
 table td,table th{padding:0}
 BODY.body{background-color:#ffffff; max-width:468pt; padding:72pt 72pt 72pt 72pt}
 P.head{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:14pt; padding-bottom:0pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:
400; text-decoration:none; vertical-align:baseline; font-style:normal}
 H2.head{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:12pt; color:#000000; font-size:14pt; padding-bottom:6pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; page-break-after:avoid; orphans:2; widows:2; tex
t-align:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
+P.inst{margin-bottom:0; margin-top:0; margin-left:18pt; margin-right:0; padding-top:9pt; color:#000000; font-size:12pt; padding-bottom:6pt; font-family:"Arial","Liberation Sans",sans-serif;line-height:1.15; orphans:2; widows:2; text-align:left; font-weigh
t:400; text-decoration:none; vertical-align:baseline; font-style:normal}
+P.word{margin-bottom:0; margin-top:0; margin-left:36pt; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:3pt; font-family:"Times New Roman","Times",serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:40
0; text-decoration:none; vertical-align:baseline; font-style:normal}
+P.wrds{margin-bottom:0; margin-top:0; margin-left:36pt; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:12pt; font-family:"Times New Roman","Times",serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:4
00; text-decoration:none; vertical-align:baseline; font-style:normal}
 P.text{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:0pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; text-align:left; font-weight:400; text-decoration:
none; vertical-align:baseline; font-style:normal}
 P.txts{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:11pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; text-align:left; font-weight:400; text-decoration
:none; vertical-align:baseline; font-style:normal}
-P.l3h{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#000000;font-size:26pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:3pt; line-height:1.15; page-break-after:avoid; orphans:2; widows:2; text-alig
n:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
+SPAN.ins{color:#007700}
+SPAN.del{color:#cc8888}
+P.edn{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#000000;font-size:26pt;font-family:"Arial","Liberation Sans",sans-serif; page-break-after:avoid; padding-top:0pt; padding-bottom:3pt; line-height:1.15; orphans:2; widows:2; text-alig
n:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
 P.yox{margin-bottom:0; margin-top:0; margin-left:-3pt; margin-right:-22pt;color:#000000;font-size:7.5pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:2pt; padding-bottom:0pt; line-height:1.15; orphans:2; widows:2; text-align:left; font-wei
ght:400; text-decoration:none; vertical-align:baseline; font-style:normal}
 P.z5n{margin-bottom:0; margin-top:0; margin-left:20pt; margin-right:0;color:#000000;font-size:11pt;font-family:"Times New Roman","Times",serif; padding-top:0pt; padding-bottom:7pt; line-height:1.330909090909091; orphans:2; widows:2; text-align:left; font-
weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
+P.kjh{margin-bottom:0; margin-top:0; margin-left:20pt; margin-right:0;color:#000000;font-size:11pt;font-family:"Times New Roman","Times",serif; padding-top:0pt; padding-bottom:7pt; line-height:1.330909090909091; orphans:2; widows:2; text-align:left; font-
weight:400}
+P.eaj{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#000000;font-size:11pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:7pt; line-height:1.330909090909091; orphans:2; widows:2; text-align:left; fon
t-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
+SPAN.jas{background-color:#fffff0}
 P.s2p{margin-bottom:0; margin-top:0; margin-left:65pt; margin-right:0;color:#000000;font-size:9.5pt;font-family:"Times New Roman","Times",serif; padding-top:0pt; padding-bottom:6pt; line-height:1.232842105263158; orphans:2; widows:2; text-align:left; font
-weight:400}
 SPAN.ehd{text-decoration:none; vertical-align:baseline;font-style:normal}
+P.rcw{margin-bottom:0; margin-top:0; margin-left:36pt; margin-right:0; color:#000000; font-size:11pt; font-family:"Times New Roman","Times",serif; padding-top:0pt; padding-bottom:13pt; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:40
0}
 </style>
-</head><body class="body"><p class="l3h">AI22-0065-1</p>
+</head><body class="body"><p class="edn">AI22-0065-1</p>
 <p class="head">!standard C(1) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;23-05-19 &nbsp;AI22-0065-1/01</p>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;23-05-29 &nbsp;AI22-0065-1/02</p>
 <p class="head">!standard D(1)</p>
 <p class="head">!class binding interpretation 23-03-22</p>
 <p class="head">!status work item 23-03-22</p>
@@ -25,53 +34,36 @@
 <p class="head">!qualifier Clarification</p>
 <p class="head">!subject Specialized Needs Annexes should be normative</p>
 <h2 class="head">!summary</h2>
-<p class="text">** TBD.</p>
+<p class="text">Drop the mention of optionality for Annexes, and simply indicate that conformance
+is defined separately for the core and for each specialized needs annex.</p>
 <h2 class="head">!issue</h2>
 <p class="txts">The JTC1 Directives, Part 2 are the rules governing the contents of the Ada
 Standard. One rule that has caused trouble is that Annexes can only be treated as normative if they
-contain absolute requirements (as Ada Annexes A, B, and J do). &quot;Optional requirements&quot;,
-like those given in the Specialized Needs Annexes, do not make the annexes normative.</p>
+contain nonoptional requirements (as Ada Annexes A, B, and J do). &quot;Optional
+requirements&quot;, like those given in the Specialized Needs Annexes, do not make the annexes
+normative.</p>
 
-<p class="text">Our intent has been that anything that implementers are supposed to follow should
+<p class="txts">Our intent has been that anything that implementers are supposed to follow should
 be normative. Thus, the fact that the Specialized Needs Annexes cannot be normative is
-uncomfortable. To make them normative, they would need to be organized more like Annex B, with a
+uncomfortable. One way to make them normative might be to organize them more like Annex B, with a
 small required part and a larger optional part.</p>
-<h2 class="head">!recommendation</h2>
-<p class="txts">(See Summary.)</p>
 
-<h2 class="head">!wording</h2>
-<p class="text">** TBD.</p>
-<h2 class="head">!discussion</h2>
-<p class="text">We need a volunteer to develop introductory wording for each Specialized Needed
-Annex. We also need suggestions on things that we could safely require of all Ada implementations
-in the Annexes.</p>
-<p class="txts">Note that we don&#39;t necessarily have to do this for all of the Annexes, if doing
-so would cause work for implementers. The utility of requiring anything in Annex E or F is
-questionable; perhaps they should be left as-is?</p>
-
-<p class="txts">It&#39;s likely that the stated purpose of the Specialized Needs Annexes could be
-supported with additional requirements on Ada implementers. Most implementers support many of the
-annexes already, and the need for simple compilers for small hosts has evaporated. Requiring parts
-of the SNAs is unlikely to cause much pain and would give more fully portable capabilities to
-users.</p>
-
-<p class="txts">Some suggestions of things that we could require without too much pain for
-implementers might include:</p>
-
-<p class="text">C.2 Required representation support (but if we did that, it probably should be
-integrated into Chapter 13).</p>
-<p class="text">C.7.1 Ada.Task_Identification (this is universally implemented)</p>
-<p class="txts">C.7.2 Ada.Task_Attributes (this is easily provided as map keyed by task ids)</p>
-
-<p class="text">D.1 Aspects Priority and Interrupt_Priority (so long as we aren&#39;t requiring
-more than one priority to be supported)</p>
-<p class="txts">D.7 Task restrictions (so long as no runtime effect is required)</p>
-
-<p class="text">G.1 Complex packages (so long as any accuracy requirements remain optional)</p>
-<p class="txts">G.3 Vector and matrix packages (so long as any accuracy requirements remain
-optional)</p>
+<p class="txts">Alternatively, we could simply drop the whole distinction between optional and
+non-optional requirements, since there is not a general rule that an ISO standard is
+all-or-nothing, despite the all-or-nothing history of the Ada standard. Instead, we can indicate
+that conformance for the core and each annex are defined separately. The C standard does something
+similar, where they have two forms of conformance, a &ldquo;conforming hosted implementation&rdquo;
+and a &ldquo;conforming freestanding implementation.&rdquo;</p>
+
+<p class="txts">The most relevant paragraphs are the following:</p>
+
+<p class="txts">RM 1.1.2(17):</p>
+
+<p class="rcw">All implementations shall conform to the core language. In addition, an
+implementation may conform separately to one or more Specialized Needs
+Annexes.<span class="jas">&nbsp; &hellip;</span></p>
 
-<p class="text">The most relevant paragraphs are the following, from RM 1.1.3(16/5-17/3):</p>
+<p class="text">and RM 1.1.3(16/5-17/3):</p>
 <p class="yox">16/5</p>
 <p class="z5n">An implementation that conforms to this Reference Manual shall support each
 capability required by the core language as specified. In addition, an implementation that conforms
@@ -83,7 +75,7 @@
 that an implementation conforms to a Specialized Needs Annex, namely, only by supporting all
 capabilities required by the Annex. </span></p>
 <p class="yox">17/3</p>
-<p class="z5n">An implementation conforming to this Reference Manual may provide additional
+<p class="kjh">An implementation conforming to this Reference Manual may provide additional
 aspects, attributes, library units, and pragmas. However, it shall not provide any aspect,
 attribute, library unit, or pragma having the same name as an aspect, attribute, library unit, or
 pragma (respectively) specified in a Specialized Needs Annex unless the provided construct is
@@ -91,15 +83,49 @@
 required by the Annex. A program that attempts to use an unsupported capability of an Annex shall
 either be identified by the implementation before run time or shall raise an exception at run time.
 </p>
-<p class="text">One possible fix is to remove any mention of optionality in RM 1.1.3, and instead
-use Implementation Permissions in each annex to permit certain packages or capabilities to be
-omitted, or provided in partial form. &nbsp;The conformance certificate would indicate which
-packages or capabilities are fully supported.</p>
+<p class="text">We propose to modify this wording to treat conformance to the annexes more on the
+same level as conformance to the core. &nbsp;The two are now more independent of one another.</p>
+<h2 class="head">!recommendation</h2>
+<p class="text">(See Summary.)</p>
+<h2 class="head">!wording</h2>
+<p class="inst">Replace RM 1.1.2(17) with the following:</p>
+<p class="word">Conformance is defined separately for the core language and each of the Specialized
+Needs Annexes (see 1.1.3).</p>
+<p class="inst">Modify RM 1.1.3(16/5-17/3) as follows:</p>
+<p class="wrds">An implementation that conforms to
+<span class="del">[this]</span><span class="ins">{the <i>core</i> of this}</span> Reference Manual
+shall support each capability required by the core language <span class="ins">{(see 1.1.2),}</span>
+as specified. <span class="del">[In addition, an implementation that conforms to this Reference
+Manual may conform to one or more Specialized Needs Annexes (or to none). ]</span> Conformance to a
+Specialized Needs Annex means that each capability required by the Annex shall be provided as
+specified. </p>
+
+<p class="word">An implementation conforming to this Reference Manual may provide additional
+aspects, attributes, library units, and pragmas. However, it shall not provide any aspect,
+attribute, library unit, or pragma having the same name as an aspect, attribute, library unit, or
+pragma (respectively) specified in <span class="ins">{the core or}</span> a Specialized Needs Annex
+unless the provided construct is either as specified in <span class="del">[the Specialized Needs
+Annex]</span><span class="ins">{this Reference Manual}</span> or is more limited in capability than
+that required by <span class="del">[the Annex]</span><span class="ins">{this Reference
+Manual}</span>. A program that attempts to use an unsupported capability <span class="del">[of an
+Annex]</span> shall either be identified by the implementation before run time or shall raise an
+exception at run time. </p>
+<h2 class="head">!discussion</h2>
+<p class="eaj">After reviewing other ISO standards, it seemed that there was no problem defining
+different levels of conformance. Therefore, we have tried to separate conformance to the
+&ldquo;core&rdquo; and the Specialized Needs Annexes, but generally treat them equivalently in
+terms of conformance, rather than making a special case of the core.</p>
 <h2 class="head">!ACATS test</h2>
-<p class="text">Changing the status of Specialized Needed Annexes does not directly change any
+<p class="txts">Changing the status of Specialized Needed Annexes does not directly change any
 ACATS tests (ACATS tests can test optional requirements by the definition in ISO/IEC 18009).
 However, anything required of Ada implementations by the rewrite of the annexes may require
 existing tests to change their pass/fail criteria.</p>
+
+<p class="text">The ACATS currently treats the conformance of each annex separately, so the
+proposed changes would not have much impact on the ACATS. The ACATS does not attempt to test
+subsets of any part of the Reference Manual (either the core or the annexes), and that would not
+need to change with these changes. (It could change if there was sufficient interest and support,
+of course, but there would not be a requirement to find such support.)</p>
 <h2 class="head">!appendix</h2>
 
 

Questions? Ask the ACAA Technical Agent