CVS difference for ais/ai-00362.txt

Differences between 1.6 and version 1.7
Log of other versions for file ais/ai-00362.txt

--- ais/ai-00362.txt	2004/07/27 23:01:06	1.6
+++ ais/ai-00362.txt	2004/11/14 06:37:20	1.7
@@ -1,4 +1,4 @@
-!standard  03.09(06)                                   04-06-29  AI95-00362/04
+!standard  03.09(06)                                   04-11-08  AI95-00362/05
 !standard  11.04.01(02)
 !standard  11.04.01(03)
 !standard  13.07(03)
@@ -42,7 +42,7 @@
 Specific problems that have been identified include:
   * Ravenscar and other restricted environments map naturally to preelaborated
     units, but most real-time packages can't be used in preelaborated units.
-  * raising and handling exceptions with information is needed in preelaborated
+  * Raising and handling exceptions with information is needed in preelaborated
     units; but Ada.Exceptions is not usable in such units;
   * All forms of I/O are prohibited in preelaborated units (no predefined I/O
     package is preelaborated), making it difficult to use preelaborated units
@@ -52,7 +52,7 @@
 !proposal
 
 Ada.Asynchronous_Task_Control is declared preelaborated.
-Ada.Characters.Handlers is declared pure.
+Ada.Characters.Handling is declared pure.
 Ada.Dynamic_Priorities is declared preelaborated.
 Ada.Exceptions is declared preelaborated.
 Ada.Strings.Maps is declared pure.
@@ -88,15 +88,13 @@
    package System is
       pragma Pure(System);
 
-Remove the last sentence of 13.7(36). [Editor's note: This may need to be
-replaced by a pragma Remote_Types permission.]
+Remove the last sentence of 13.7(36).
 
-Change 13.7.1(3) to
+Change 13.7.1(2) to
    package System.Storage_Elements is
-      pragma Pure(System.Storage_Elements);
+      pragma Pure(Storage_Elements);
 
-Remove 13.7.1(15). [Editor's note: This may need to be
-replaced by a pragma Remote_Types permission.]
+Remove 13.7.1(15).
 
 Change A.3.2(2) to
    package Ada.Characters.Handling is
@@ -120,7 +118,7 @@
 
 Change D.5(3) to
    with System;
-   with Ada.Task_Identification;
+   with Ada.Task_Identification; -- See C.7.1
    package Ada.Dynamic_Priorities is
       pragma Preelaborate(Dynamic_Priorities);
 
@@ -129,6 +127,7 @@
       pragma Preelaborate(Synchronous_Task_Control);
 
 Change the head of D.11(3) to
+   with Ada.Task_Identification;
    package Ada.Asynchronous_Task_Control is
       pragma Preelaborate(Asynchronous_Task_Control);
 
@@ -143,8 +142,8 @@
 The run-time implementation of two compilers (GNAT and Janus/Ada) also are
 examined for impacts of any proposed change.
 
-Remember that any dependencies of a Pure unit must be Pure and any dependencies
-of a Preelaborated unit must be Pure or Preelaborate.
+Remember that any dependences of a pure unit must be pure and any dependences
+of a preelaborated unit must be pure or preelaborate.
 
 We also asked implementers for comments on the difficulty of implementing
 the first version of this proposal. Two implementers responded. DDCI reported
@@ -161,7 +160,7 @@
 when a package depends on complex state initialized at elaboration time.)
 They were concerned that a simple version of this (using a simple Boolean
 flag) would be fragile in the face of tasking. (Two tasks could trigger
-execution of the initialization at the same time). To fix that, an protected
+execution of the initialization at the same time). To fix that, a protected
 object (and its overhead) would be required. In addition, such a technique
 could be needed in a host of support units. Thus, restructuring of large
 parts of the runtime could be needed.
@@ -193,11 +192,8 @@
   use this technique. Thus, making the package Preelaborated could cause an
   intolerable performance incompatibility.
 
-  [Note: If this decision is reversed, Float_Random and Discrete_Random also
-  should be made Preelaborated, the latter only if A.5.2(39) is also changed.]
-
   Oddly, AI-161 declares Ada.Calendar.Time as a type that has preelaborable
-  initialization, even though it is in a non preelaborated package. The text
+  initialization, even though it is in a non-preelaborated package. The text
   of the AI suggests that this is a mistake (it claims that these types are
   declared in preelaborated packages).
 Ada.Characters -- A.3.1; Pure
@@ -273,9 +269,9 @@
   Depends on Ada.Text_IO; see that unit for discussion.
 Ada.Integer_Wide_Text_IO -- A.11; not categorized
 Ada.Interrupts -- C.3.2; not categorized
-  This package depends on System, so it cannot be pure. This package may need
-  to execute code and/or system calls to gather the initial state (the default
-  handlers) of interrupts. Thus, the package cannot be preelaborated.
+  This package may need to execute code and/or system calls to gather the
+  initial state (the default handlers) of interrupts. Thus, the package cannot
+  be preelaborated.
 Ada.Interrupts.Names -- C.3.2; not categorized
   Depends on Ada.Interrupts; see the discussion of that unit.
 Ada.IO_Exceptions -- A.13; Pure
@@ -347,11 +343,9 @@
   But it's large and complex, and many of the operations are not conceptually
   pure (they do in-place updates), so no change is recommended.
 Ada.Strings.Fixed -- A.4.3; Preelaborate
-  This package contains no state, no dependence on non-pure units, no
-  other items that prevent the package from being pure, and does not declare
-  any types that would be a problem for Annex E, so it could be declared pure.
-  But it's large and complex, and many of the operations are not conceptually
-  pure (they do in-place updates), so no change is recommended.
+  This package is similar to Ada.Strings.Bounded. For similar reasons,
+  no change is recommended; see the discussion on Ada.Strings.Bounded for
+  details.
 Ada.Strings.Maps -- A.4.2; Preelaborate
   This package contains a named access-to-subprogram type. AI-366 makes
   it possible for such packages to be pure.
@@ -360,7 +354,7 @@
   any types that would be a problem for Annex E.
   This package should be declared pure.
 Ada.Strings.Maps.Constants -- A.4.6; Preelaborate
-  Since Ada.Strings.Maps is not pure, this package can be as well.
+  Since Ada.Strings.Maps is now pure, this package can be as well.
 Ada.Strings.Unbounded -- A.4.5; Preelaborate
   Any implementation will have to depend on Ada.Finalization.
 Ada.Strings.Wide_Bounded -- A.4.7; Preelaborate
@@ -447,20 +441,20 @@
   Thus, it cannot be pure.
 Interfaces.Fortran -- B.5; Pure
 System -- 13.7; Preelaborate
-  Ada 95 already *allows* this to be Pure. It did not require this to be pure
+  Ada 95 already *allows* this to be pure. It did not require this to be pure
   because we did not want to require System.Address to be transmitted between
   partitions. However, all of the existing compiler implementers that responded
-  reported that System was already Pure in their compiler (and thus
+  reported that System was already pure in their compiler (and thus
   transmitting was supported). Since that is not considered an issue by
   implementers, we should simply define this package as pure.
 
-  Note that making this Pure may require some implementations to support
+  Note that making this pure may require some implementations to support
   explicit 'Read/'Write redefinitions, as AI-366 requires that of any
   type which has an access type part. It is known that some implementations
   implement Address as a private type with a full type that is an access type.
   This is not a problem, as 13.7(36) allows anything to be added to System.
 System.Address_To_Access_Conversions -- 13.7.2; Preelaborate
-  Declares a named access type with a non-empty pool; thus it cannot be Pure.
+  Declares a named access type with a non-empty pool; thus it cannot be pure.
 System.Machine_Code -- 13.8; unspecified
   This package's contents and thus categorization are implementation-defined.
 System.RPC -- E.5; not categorized
@@ -468,8 +462,8 @@
   channel when it elaborates, thus it cannot be Preelaborable.
 System.Storage_Elements -- 13.7.1; Preelaborate
   This depends on System, which we are changing the categorization of.
-  It also had a permission to be Pure in Ada 95; and it does nothing
-  that would be a problem. Thus we require that it be Pure.
+  It also had a permission to be pure in Ada 95; and it does nothing
+  that would be a problem. Thus we require that it be pure.
 System.Storage_Pools -- 13.11; Preelaborate
   Doesn't need to be pure because only empty storage pools are allowed in
   Pure packages.
@@ -538,14 +532,14 @@
 implementation to provide additional functionality via implementation-defined
 children of System.
 
-!corrigendum 13.7.1(03)
+!corrigendum 13.7.1(02)
 
 @drepl
 @xcode<@b<package> System.Storage_Elements @b<is>
    @b<pragma> Preelaborate(System.Storage_Elements);>
 @dby
 @xcode<@b<package> System.Storage_Elements @b<is>
-   @b<pragma> Pure(System.Storage_Elements);>
+   @b<pragma> Pure(Storage_Elements);>
 
 !corrigendum 13.7.1(15)
 

Questions? Ask the ACAA Technical Agent