!standard 0.3(57.11/2) 11-04-04 AI05-0245-1/03 !class Amendment 11-03-10 !status Amendment 2012 11-03-10 !status work item 11-03-10 !status received 11-03-10 !priority Low !difficulty Easy !subject Introduction update for Ada 2012 !summary The Introduction to the standard is updated to reflect the additions of Ada 2012. !problem The Introduction of the Standard does not reflect the additions of Ada 2012. !proposal Task John Barnes with writing a nice introduction - his effort can be found in the !wording section. !wording Add after Introduction (57.11/2): Amendment 2 modifies the 1995 International Standard by making changes and additions that improve the capability of the language and the reliability of programs written in the language. In particular, enhancements are made to address two important issues, namely, the particular problems of multiprocessor architectures, and the need to further increase the capabilities regarding assertions for correctness. The following significant changes with respect to the 1995 edition as amended by Amendment 1 are incorporated: * New syntax (the aspect specification) is introduced to enable properties to be specified for various entities in a more structured manner than through pragmas. See clause 13.3.1. * The concept of assertions introduced in the 2005 edition is extended with the ability to specify preconditions and postconditions for subprograms, and invariants for private types. The concept of constraints in defining subtypes is supplemented with subtype predicates that enable subsets to be specified other than as simple ranges. These properties are all indicated using aspect specifications. See clauses 3.2.4, 13.3.2, and 13.3.3. * New forms of expressions are introduced. These are if expressions, case expressions, quantified expressions and expression functions. As well as being useful for programming in general in avoiding the introduction of unnecessary assignments, they are especially valuable in conditions and invariants since they avoid the need to introduce auxiliary functions. See clauses 4.5.7, 4.5.8, and 6.8. Membership tests are also made more flexible. See clauses 4.4 and 4.5.2. * A number of changes are made to parameters. Functions may now have parameters of all modes. In order to mitigate consequent (and indeed existing) problems of inadvertent order dependence, rules are introduced to reduce aliasing. A parameter may now be explicitly marked as aliased and incomplete types may be used as the type of a parameter in certain circumstances. See clauses 3.10.1, 6.1, and 6.4.1. * The use of access types is now more flexible. The rules for accessibility and certain conversions are improved. See clauses 3.10.2, 4.5.2, 4.6, and 8.6. Furthermore, better control of storage pools is provided. See clause 13.11.4. * The Real-Time Systems Annex now includes facilities for defining domains of processors and assigning tasks to them. Improvements are made to scheduling and budgeting facilities. See clauses D.10.1, D.14, and D.16. * A number of important improvements are made to the standard library. These include packages for conversions between strings and UTF encodings, and classification functions for wide and wide wide characters. Internationalization is catered for by a package giving locale information. See clauses A.3, A.4.11, and A.19. The container library is extended to include bounded forms of the existing containers and new containers for indefinite objects, multiway trees, and queues. See clause A.18. * Finally, features are added primarily to ease the use of containers such as the ability to iterate over all elements in a container without having to encode the iteration. These can also be used for iteration over arrays. See clauses 4.1.5, 4.1.6, and 5.5.1. !discussion We're not making any changes to the Language Summary, only to the Language Changes section. The summary doesn't need to mention any of the new features, and everything else is still true since we have been careful to keep compatibility. !corrigendum 0.3(57.11/2) @dinsa @xbullet @dinss Amendment 2 modifies the 1995 International Standard by making changes and additions that improve the capability of the language and the reliability of programs written in the language. In particular, enhancements are made to address two important issues, namely, the particular problems of multiprocessor architectures, and the need to further increase the capabilities regarding assertions for correctness. The following significant changes with respect to the 1995 edition as amended by Amendment 1 are incorporated: @xbullet @xbullet @xbullet @xbullet @xbullet @xbullet @xbullet @xbullet !ACATS test None needed. !ASIS No ASIS impact. !appendix From: John Barnes Sent: Thursday, March 10, 2011 12:08 PM Herewith a draft new lump of text for incorporation in the Introduction. [This is version /01 of this AI - Editor.] I have avoided embedding colourful comments such as (Phew - this new bit stinks). **************************************************************** From: Randy Brukardt Sent: Thursday, March 10, 2011 5:26 PM > Herewith a draft new lump of text for incorporation in the > Introduction. Thanks for getting this done in a timely fashion. (For the rest of you, especially Ed, Bob, and Tucker, how are you doing with your homework?? :-) This will be AI05-0245-1. One solitary comment: "The following significant changes with respect to the 2005 edition are incorporated:" The only problem with this is that there was no ISO edition for Ada 2005, and for ISO purposes nothing happened in 2005 anyway (Amendment 1 was published in 2007). We have to say something like: "The following significant changes with respect to the 1995 edition as amended by the 2007 amendment are incorporated:" But that probably would probably rile up the people who think that ever mentioning the real date of 2007 is blasphony. So probably it would be better to just mention the document by number: "The following significant changes with respect to the 1995 edition as amended by Amendment 1 are incorporated:" I also found a bunch of incorrect clause references (and one missing one), all of which I fixed. (It's pretty obvious from the text to which clauses you are referring.) **************************************************************** From: Bob Duff Sent: Sunday, March 20, 2011 11:20 AM > > Herewith a draft new lump of text for incorporation in the > > Introduction. > > Thanks for getting this done in a timely fashion. (For the rest of > you, especially Ed, Bob, and Tucker, how are you doing with your > homework?? :-) Here's part of it. ;-) > But that probably would probably rile up the people who think that > ever mentioning the real date of 2007 is blasphony. "blasphony" is a phunny typo. >... So probably it would be > better to just mention the document by number: > > "The following significant changes with respect to the 1995 edition as > amended by Amendment 1 are incorporated:" John's text looks fine to me. Just one comment: add "," before the (only occurrence of) "which". Existing sections of the AI (other than !wording) need to be updated. Intro(60/2): 60/2 !topic Title summarizing comment !reference Ada 2005 RMss.ss(pp) !from Author Name yy-mm-dd Section 1: Search for "1995" and "2005", and reword accordingly. Do you need me to type it all in? Seems like it could just be a set of editorial changes. I suggest limiting the verbosity, e.g. change: 39.d/3 This is not part of the definition of the language, and does not appear in the Ada 95, Ada 2005, or Ada 2012 RM. to: 39.d/3 This is not part of the definition of the language, and does not appear in the Ada RM. I don't see any value in listing out the various version numbers/years. **************************************************************** From: Randy Brukardt Sent: Tuesday, March 22, 2011 1:13 PM ... > Existing sections of the AI (other than !wording) need to be updated. Could you be specific? The AI doesn't contain anything significant other than the !wording, and I created all of those when I made this AI. I'm not a mind reader... > Intro(60/2): > > 60/2 !topic Title summarizing comment > !reference Ada 2005 RMss.ss(pp) > !from Author Name yy-mm-dd > > Section 1: Search for "1995" and "2005", and reword accordingly. > Do you need me to type it all in? Seems like it could just be a set > of editorial changes. I did that when I created this edition years ago. If I missed anything that should be changed, then I need to know. (Other than the above.) There are a lot of things that *shouldn't* be changed, IMHO. Single section references with a short indication of a change are good enough if you find any other changes. > I suggest limiting the verbosity, e.g. change: > > 39.d/3 This is not part of the definition of the language, and does not > appear in the Ada 95, Ada 2005, or Ada 2012 RM. > > to: > > 39.d/3 This is not part of the definition of the language, and does not > appear in the Ada RM. > > I don't see any value in listing out the various version > numbers/years. Maybe not, but I see even less value in changing AARM notes that are already correct. That's essentially busywork, and I have too much of that to do as it is. **************************************************************** From: Bob Duff Sent: Thursday, March 31, 2011 12:11 PM > ... > > Existing sections of the AI (other than !wording) need to be updated. > > Could you be specific? The AI doesn't contain anything significant > other than the !wording, and I created all of those when I made this > AI. I'm not a mind reader... In !proposal: "Ask John Barnes to write a nice introduction." --> "See wording." Delete the !discussion: We're not making any changes to the language summary. [Should we make any changes? Do we need to? - Editor.] > > Intro(60/2): > > > > 60/2 !topic Title summarizing comment > > !reference Ada 2005 RMss.ss(pp) > > !from Author Name yy-mm-dd > > > > Section 1: Search for "1995" and "2005", and reword accordingly. > > Do you need me to type it all in? Seems like it could just be a set > > of editorial changes. > > I did that when I created this edition years ago. If I missed anything > that should be changed, then I need to know. (Other than the above.) > There are a lot of things that *shouldn't* be changed, IMHO. Single > section references with a short indication of a change are good enough > if you find any other changes. OK, I did a quick search, and I don't see anything wrong other than the above. > > I suggest limiting the verbosity, e.g. change: > > > > 39.d/3 This is not part of the definition of the language, and does > not > > appear in the Ada 95, Ada 2005, or Ada 2012 RM. > > > > to: > > > > 39.d/3 This is not part of the definition of the language, and does > not > > appear in the Ada RM. > > > > I don't see any value in listing out the various version > > numbers/years. > > Maybe not, but I see even less value in changing AARM notes that are > already correct. That's essentially busywork, and I have too much of > that to do as it is. OK. Remember to do it when you do Ada 2020 -- you'll need to change them anyway. ;-) **************************************************************** From: Bob Duff Sent: Monday, March 21, 2011 2:16 PM > Bob Duff: > > AI05-0245-1: Send comments on proposed wording, read the rest of the > Introduction for possible changes. [Phone meeting #43A.] OK, I read the entire Introduction. I'm going with "If it ain't broke, don't fix it." There are various half-truths and lies, which we're not going to fix. Introduction(10): "Languages that require over-elaborate compilers ..." Bwahaha! This completes my homework assignment. > Introduction > > > 1 This is the Ada Reference Manual. > > 2 Other available Ada documents include: > > 3/2 * Ada 95 Rationale. This gives an introduction to the new features of > Ada incorporated in the 1995 edition of this Standard, and explains the > rationale behind them. Programmers unfamiliar with Ada 95 should read > this first. > > 3.1/2 * Ada 2005 Rationale. This gives an introduction to the changes and > new features in Ada 2005 (compared with the 1995 edition), and explains > the rationale behind them. Programmers should read this rationale before > reading this Standard in depth. Why doesn't it mention the Ada 83 Rationale? Replace Introduction(3/2,3.1/2) with: * Ada 2012 Rationale. This gives an introduction to the changes and new features in Ada 2012, and explains the rationale behind them. Programmers should read this rationale before reading this Standard in depth. Ada 83, 95, and 2005 Rationales are also available. > Changes > > 72 The International Standard is the same as this version of the Reference > Manual, except: ... > 77.2/2 * The "Using this version of the Ada Reference Manual" clause is not > included in the International Standard. Add after Introduction(77.2/2): Paragraph numbers are not included in the International Standard. > Using this version of the Ada Reference Manual > > 77.3/3 This document has been revised with the corrections specified > in Technical Corrigendum 1 (ISO/IEC 8652:1995/COR.1:2001), Amendment 1 > (ISO/IEC 8652/AMD 1:2007), and Amendment 2 (ISO/IEC 8652/AMD 2:201z). > In addition, a variety of editorial errors have been corrected. > > 77.4/3 Changes to the original 8652:1995 can be identified by the > version number following the paragraph number. Paragraphs with a > version number of /1 were changed by Technical Corrigendum 1 or were > editorial corrections at that time, while paragraphs with a version > number of /2 were changed by Amendment 1 or were more recent editorial > corrections, and paragraphs with a version number of /3 were changed > by Amendment 2 or were still more recent editorial corrections. > Paragraphs not so marked are unchanged by Amendment 1, Amendment 2, > Technical Corrigendum 1, or editorial corrections. Paragraph numbers > of unchanged paragraphs are the same as in the original Ada Reference > Manual. In No, they're not. They're the same as the original Ada 95 RM, not the original Ada 83 RM. > addition, some versions of this document include revision bars near > the paragraph numbers. Where paragraphs are inserted, the paragraph > numbers are of the form pp.nn, where pp is the number of the preceding > paragraph, and nn is an insertion number. For instance, the first > paragraph inserted after paragraph 8 is numbered 8.1, the second > paragraph inserted is numbered 8.2, and so on. Deleted paragraphs are > indicated by the text This paragraph was deleted. Deleted paragraphs > include empty paragraphs that were numbered in the original Ada Reference > Manual. **************************************************************** From: Randy Brukardt Sent: Tuesday, March 22, 2011 12:59 AM > > AI05-0245-1: Send comments on proposed wording, read the rest of the > > Introduction for possible changes. [Phone meeting #43A.] > > OK, I read the entire Introduction. I'm going with "If it ain't > broke, don't fix it." There are various half-truths and lies, which > we're not going to fix. > Introduction(10): "Languages that require over-elaborate compilers > ..." > Bwahaha! That text is actually from the original Ada 83 standard (1.3(5)); apparently the Ada 95 team didn't feel like removing it. And that's funny, because if there was any valid complaint about Ada 83, it was that it required an "overly elaborate compiler". The point of having you read this was to get rid of any "lies". Especially technical lies. "Half-truths" I don't care about! > This completes my homework assignment. Are you sure there aren't any technical "lies"? I don't care about change the "design goals" section, but if the "language overview" has any lies, they ought to be fixed. ... > > 3/2 * Ada 95 Rationale. This gives an introduction to ... > Why doesn't it mention the Ada 83 Rationale? Because the Ada 95 document I started with didn't mention the Ada 83 Rationale. > Replace Introduction(3/2,3.1/2) with: > > * Ada 2012 Rationale. This gives an introduction to the changes and > new features in Ada 2012, and explains the rationale behind them. > Programmers should read this rationale before reading this Standard > in depth. Ada 83, 95, and 2005 Rationales are also available. I didn't previously mention this Ada 2012 Rationale here, because we've never talked about such a document at the ARG level (unlike the situation with previous versions of the standard). Moreover, we don't seem to be anywhere near having such a document available (John has only made a draft of one chapter so far, so far I know), while this document is going out to public distribution very soon (we hope). I don't want to be making false promises. Not sure what to do here. **************************************************************** From: Bob Duff Sent: Thursday, March 31, 2011 12:05 PM > > OK, I read the entire Introduction. I'm going with "If it ain't > > broke, don't fix it." There are various half-truths and lies, which > > we're not going to fix. > > Introduction(10): "Languages that require over-elaborate compilers > > ..." > > Bwahaha! > > That text is actually from the original Ada 83 standard (1.3(5)); > apparently the Ada 95 team didn't feel like removing it. Right, that's why I said "we're not going to fix". >... And that's funny, because if > there was any valid complaint about Ada 83, it was that it required an >"overly elaborate compiler". That's what I meant by "Bwahaha!". ;-) > The point of having you read this was to get rid of any "lies". > Especially technical lies. "Half-truths" I don't care about! > > > This completes my homework assignment. > > Are you sure there aren't any technical "lies"? Well, I read it all, and didn't notice anything other than what I reported. For compatibility reasons, we didn't make any major changes, other than adding new stuff. So it's not surprising if the language summary is correct (but incomplete -- John is fixing that part). >... I don't care about change > the "design goals" section, but if the "language overview" has any >lies, they ought to be fixed. > > ... > > > 3/2 * Ada 95 Rationale. This gives an introduction to > ... > > Why doesn't it mention the Ada 83 Rationale? > > Because the Ada 95 document I started with didn't mention the Ada 83 > Rationale. Maybe it should. No big deal. > > Replace Introduction(3/2,3.1/2) with: > > > > * Ada 2012 Rationale. This gives an introduction to the changes and > > new features in Ada 2012, and explains the rationale behind them. > > Programmers should read this rationale before reading this Standard > > in depth. Ada 83, 95, and 2005 Rationales are also available. > > I didn't previously mention this Ada 2012 Rationale here, because > we've never talked about such a document at the ARG level (unlike the > situation with previous versions of the standard). Moreover, we don't > seem to be anywhere near having such a document available (John has > only made a draft of one chapter so far, so far I know), while this > document is going out to public distribution very soon (we hope). I > don't want to be making false promises. Not sure what to do here. I suggest you do nothing, then. We can issue AI2012-000NN-1, which adds wording that mentions the Ada 2012 Rationale, if and when it exists. **************************************************************** From: Gary Dismukes Sent: Monday, April 4, 2011 1:11 PM In the update to the RM Introduction: > * A number of changes are made to parameters. Functions may now have > parameters of all modes. In order to mitigate consequent (and indeed > existing) problems of inadvertent order dependence, rules are > introduced to reduce aliasing. A parameter may now be explicitly > marked as aliased and incomplete types may be used as parameters in certain circumstances. I suggest changing: "incomplete types may be used as parameters" to: "incomplete types may be used as parameter types" > See clauses 3.10.1, 6.1, and 6.4.1. ****************************************************************