CVS difference for ai12s/ai12-0302-1.txt

Differences between 1.7 and version 1.8
Log of other versions for file ai12s/ai12-0302-1.txt

--- ai12s/ai12-0302-1.txt	2020/06/11 03:54:28	1.7
+++ ai12s/ai12-0302-1.txt	2020/06/17 00:20:21	1.8
@@ -1,6 +1,7 @@
-!standard A(15)                                  20-06-10  AI12-0302-1/05
+!standard A(15)                                  20-06-15  AI12-0302-1/06
 !class Amendment 19-01-10
 !status Amendment 1-2012 19-10-30
+!status ARG Approved 10-0-3  20-06-13
 !status work item 20-04-30
 !status ARG Approved 9-0-1  19-10-06
 !status work item 19-01-10
@@ -20,10 +21,12 @@
 
 !problem
 
-In the absence of a Global aspect, the default is "Global => in out all"
+In the absence of a Global aspect, the default is "Global => unspecified"
 unless a package is declared Pure. This is not consistent
 with the requirement of RM A(3/5) that language-defined (generic)
-packages be reentrant.
+packages be reentrant, nor is it consistent with portability (as we do not
+want the legality of code using the language-defined units to depend on
+implementation-defined mechanisms).
 
 !proposal
 
@@ -104,15 +107,15 @@
 
 So to summarize the wording, each library unit will have a well-defined
 Global aspect at the package level, being either implicitly "null" for
-pure library units, or explicitly "in out synchronized for impure
+pure library units, or explicitly "in out synchronized" for impure
 library units (see list of impure units below).
 
 And then within the impure units, individual subprograms may override
 this default with "null" when they are certain to have no side effects
 other than those represented by the modes of their formal parameters
-(not clear it is worth defining these at this stage),
-with "in [out] <unit_name>" when they refer to implicit state that is
-*not* synchronized.
+(not clear it is worth defining these at this stage). Alternatively, 
+subprograms may overide with "in [out] <unit_name>" when they refer to 
+implicit state that is *not* synchronized.
 
 For operations within a generic, we may want to specify "use null" for certain
 operations we know do not use the generic formals, though that seems relatively
@@ -199,7 +202,7 @@
 ---
 
 ---------------
-The Pure group:
+The following units are Pure and do not need a Global specification:
 ---------------
 
 Standard -- A.1
@@ -282,7 +285,8 @@
     Storage_Elements -- 13.7.1
 
 -----------------
-The impure group:
+The following units are not Pure and need a Global specification of
+Global => in out synchronized:
 -----------------
 
   [Ada]

Questions? Ask the ACAA Technical Agent