Minutes of Electronic ARG Meeting 62N
3 February 2022
Attendees: Steve Baird, John Barnes, Randy Brukardt, Arnaud Charlet (left at 13:00), Jeff Cousins, Gary Dismukes, Claire Dross, Bob Duff, Edward Fish, Brad Moore (left at 13:00), Jean-Pierre Rosen, Ed Schonberg, Justin Squirek, Tucker Taft, Tullio Vardanega, Richard Wai.
Observers: None.
The meeting convened on Thursday, 3 February 2022 at 10:32 hours EST and adjourned at 13:30 hours EST. The meeting was held using Zoom. The meeting covered much of the agenda.
Steve welcomes everyone.
None.
There were no comments on the minutes: Approve minutes: 16-0-0.
Randy proposes Thursday, May 5, 2022 for our next meeting. There being no objections, we adopt that date.
We still have an in-person meeting scheduled, subject to ISO regulations, on June 17-19, 2022, Ghent Belgium (in conjunction with Ada-Europe).
Randy would like to have a suggested name for our next version of Ada, so that he can use that in constructing the future drafts of the RM.
Tucker suggests Ada 2y. We could also use Ada 3x, but that assumes that we don’t do another version for ten years. The trend in programming languages is for more frequent standards (and we only waited 5 years between Ada 2005 (completed in 2007) and Ada 2012. John suggests Ada xy since we really don’t know either number.
We take a straw poll on the first two choices. Ada 3x 3, Ada 2y 11, Abstain 1 (Bob). Randy is directed to use “Ada 2y” for the next version.
One of the UCI WG recommendations is to use the same headers for all kinds of AIs, to simplify their construction and make it easier to change classifications. Currently, some of the headers depend on the class of the AI. For instance, confirmations use !response, binding interpretations use !recommendation, and amendments use !proposal.
After several rounds of discussion, we decided to recommend !issue and !recommendation for all AIs.
Use !issue and !recommendation for all AI classifications: Approve: 16-0-0.
We’ve received a few additional tests. We still need them, so if you took an assignment, please get them finished.
Tucker asks that ACATS tests be on his ARG list of things to do. So we would like to have ACATS test assignments in the Action Item list. Steve asks if a general reminder there is enough. Tucker would prefer if each member have a separate list.
Richard gives an update on the group’s work. The new web site and Github are coming along, in varying amounts of completion. We’re far enough along that it would help for ARG members to comment. We’re still working on some issues, including the ultimate AI format for long-term storage (we’ll use Google Docs for active development). Randy notes that we never announced the website to the ARG list (just the UCI list), so most haven’t seen it yet.
Tucker shared his screen and gives a tour of the website. (Find it at: https://sites.google.com/view/ada-rapporteur-group) We will make it a subdomain of AdaIC in the future (we won’t use the current long-winded Google link permanently).
Arnaud has trouble accessing the site. Tucker suggests that he try logging out of his AdaCore Google account before trying; there is some problem associated with AdaCore accounts. Jean-Pierre reports that he has no problem accessing it.
There are two unfinished action items (Tucker Taft: OpenMP Technical Report; AI22-0034-1). We did not discuss these.
The combined unfinished old action items and new action items from the meeting are shown below.
The minutes cover detailed review of Ada 2022 AIs (AI22s). The AI22s are presented in numeric order, which is not necessarily the order in which they were discussed. Votes are recorded as “for”-“against”-“abstentions”. For instance, a vote of 6-1-2 would have had six votes for, one vote against, and two abstentions.
If a paragraph number is identified as coming from the working Ada 202x AARM, the number refers to the text in draft 32 of the Ada 202x AARM (the submission draft). Paragraph numbers in other drafts may vary. Other paragraph numbers come from the final consolidated Ada 2012 AARM; again the paragraph numbers in the many drafts may vary.
Tucker would like quotes around “-- N/A => Error” and “-- ERROR: “ in the !ACATS Test section.
Arnaud is confused about the reason for these rules. We explain that this is about improving portability. There are permissions for implementations to add additional kinds of prefixes to certain language-defined attributes, with implementation-defined semantics. Other implementations may not have those attributes at all, or might have different semantics. So when the restriction is in effect, we want those extensions rejected as well as uses of language-defined attributes.
Approve AI with changes: 16-0-0.
This AI was rewritten to make it clear that there is no such thing as a nominal subtype of an aggregate. There is no change to the proposed wording.
Approve AI: 16-0-0.
We’ll use the other alternative.
No Action: 16-0-0.
Approve AI: 16-0-0.
Remove “with SPARK_Mode” from the example in the !question.
--@PREDICATE_CHECK:FAIL should be – Should fail a predicate check.
Approve AI with changes: 15-0-1. Abstain: Jeff.
A slice is not newly constructed, we need to cover that here.
Approve AI: 14-0-0.
This is very similar to the rule for pragmas (such as pragma Import).
Approve AI: 15-0-1. Jean-Pierre abstains.
Ed Fish asks why nonlimited aggregates are not allowed. The mechanism is designed to add elements one at a time, a different interface would be needed for limited elements.
In 4.3.5(11): the dash is a non-ASCII character that looks weird on Tucker’s computer.
In the first paragraph of !discussion, change “but” to “and”. Better: “but for consistency, it was done throughout the language”.
Approve AI with changes: 16-0-0.
Edward Fish takes this AI. Tucker notes that the !appendix has suggested solutions for some of the issues.
Approve intent: 16-0-0.
(1) Has no comments.
(2) Jeff was the requestor; he thinks it is an improvement. No one disagrees.
(3) Closing star on Universal is a left paren in the wording. Tucker suggests dropping the “one of”. Steve says that it is needed to make the list clearly an exclusive list. We decide to keep it.
Treat as a typo, move to AI12-0437-1.
(4) This clarifies why we’re referring to 9.5.2. Looks good.
(5) Tucker would like to pull this into a separate AI for wordsmithing. “a minimally useful” → “an” in the wording; it was left-over from a brainstorming session to clear writers block. Assign it to Tucker. [This will be AI22-0038-1 – Editor.]
(6) It is unclear what the original author was trying to accomplish with this rule (These rules also apply...). Make this into a separate AI – assign to Tucker. [This will be AI22-0039-1 – Editor.]
Gary complains about the hyphen in “non-overridable” in the wording; he notes it doesn't appear in the RM in this wording.
(7) No interest in changing this. Remove it from this AI. Jean-Pierre notes that the question has an extra “should” in the last sentence. (The answer will be “No.”).
(8) We should not be using “identifier” here, so this is an improvement.
(9) This a suggestion from John. Treat as a typo, move to AI12-0437-1.
(10) Another suggestion from John. Treat as a typo, move to AI12-0437-1. Jean-Pierre notes that the question has “onject”.
(11) This needs to be updated. We should do this in Ada 2022. Move to AI12-0437-1, as it is an ISO rule mistake that should be fixed ASAP.
(12) Fix this in Ada 2022. Treat as a typo, move to AI12-0437-1.
Tucker has typos in !discussion. (6) “broaded” should be “broadened”. (11) “superceded” should be “superseded”. This leads to a discussion of this word; Gary says that the former spelling is OK, the latter spelling is preferred.
Jeff: (8) “talk {of} a usage” or possibly “mention”.
Summary: (3), (9), (10), (11), (12) are treated as typos, thus will be moved to AI12-0437-1. (5), (6) to separate AIs. (7) no change at all (question stays here). (1), (2), (4), (8) stay with this AI, as does (7), with no change made for it.
Approve AI with changes: 16-0-0.
If a user-defined equality is used, the use of an unchecked union subcomponent isn’t a problem. The rules didn’t take into account composition of equality.
The goal of this rule is that it would be determinable at compile-time whether or not Program_Error would be raised (outside of shared generic bodies). That was considered important for safety.
Claire asks if the rule covers the case where the parent type uses predefined equality, and an extension uses user-defined equality. She would prefer the simpler rule that touching predefined equality raises Program_Error (this is too much of a corner case).
Tucker says that the idea is that you don’t need to look at discriminants or variants to determine whether there is a problem.
Ed Fish notes that extra safeguards when interfacing with C are a good thing.
Straw poll: 5 for delete 24/2 (fully dynamic rule). Improved version of AI: 2. Abstain 7.
So we will delete 24/2: Tucker will rewrite along these lines.
[Editor's note: A reviewer of the minutes noted that the subject of this AI has a typo - “unit” should be “union”. The minutes were not changed as they accurately reflect the (incorrect) subject of the AI; hopefully, this note will serve ensure that the subject gets corrected.]
In question (1), “contraints”.
In wording (2), we’re missing the closing } (should come after “of the aggregate”).
In wording (3), container_element_assoc{i}ation as the third parameter;
In discussion (1), paragraph 2, “Paramete”.
In discussion (2), “...to the order in which the the calls are made, just to the order of the...”
Approve AI with changes: 16-0-0.
Wording changes:
... {subprograms}[names] specified in the Aggregate aspect for T shall be abstract.
Ed Fish notes that class-wide aggregates could be useful. Randy agrees (they could be used to assign to an in out class-wide parameter, for instance). Tucker notes that using [] to set something to empty seems useful as well. But Randy also notes that class-wide aggregates would clearly be an extension; we would need a new mechanism to determine the specific type tag of the aggregate (probably in the same way that tag-indeterminate functions do that). So, it should be submitted to the user community input process.
Gary: Need hyphen in class{-}wide in the subject.
Gary: Extra d in nonoverridable (twice).
Tuck: Anonymous is misspelled in the second paragraph of the discussion.
Steve asks about the need for the generic boilerplate. Randy notes that a non-abstract type can be the actual for an abstract derived type. Steve wonders about a derivation in a generic body. A usage in a generic body is not a problem, since it is abstract and no aggregate can be written, even if the actual is not abstract. But the exported version from a specification could be used by a client (if the actual is not abstract).
Brad: In !discussion (2), “for nonabstract tagged” (needs “type”).
The “One could argue that” paragraph has too many subjunctives. “One could argue that [if] following...” The next sentence “imply an{y} Legality Rules or Static Semantic rules”.
Remove this paragraph rather than trying to fix it; most find it more confusing than helpful. (The author having to explain what it meant; most readers will not have the author handy to ask.) The next paragraph should start “We also have...” rather than “Moreover”.
Next paragraph: “nonoveriddable”; it’s spelled correctly in the previous usage one line above.
Approve AI with changes: 16-0-0.
We discuss whether this should be an Amendment or a Binding Interpretation. There is a minor incompatibility with this change: places where subtype conformance is required would become illegal. Note that normal renames and generic formal parameters would not be affected; only ‘Access and renames-as-body would be.
It is suggested that it is annoying to have language-defined libraries with subtly different specifications in different language version (and hard to implement). The speaker thought it would be better to just take the incompatibility across the board.
We take a straw poll on this question: Binding Interpretation: 11 Amendment: 4 Abstain: 1
Assign AI to Tucker.
Approve intent: 16-0-0.
We discuss the problem a bit. We decide that this is an Amendment. Bob would prefer not to have another if in GNAT. There is no incompatibility associated with this idea – it is a pure extension. So we quickly change our mind.
Approve intent: 14-0-2. Jeff, Ed S. abstain.
Brad will take the AI, Tucker will help as needed.