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

Differences between 1.1 and version 1.2
Log of other versions for file ai12s/ai12-0235-1.txt

--- ai12s/ai12-0235-1.txt	2017/06/10 04:19:47	1.1
+++ ai12s/ai12-0235-1.txt	2018/01/18 20:36:47	1.2
@@ -81,3 +81,48 @@
 Pure.
 
 ***************************************************************
+
+From: Randy Brukardt
+Sent: Thursday, November 30, 2017  6:50 PM
+
+Here's a note for the author of AI12-0235-1 (that would be Tucker):
+
+In Ada 2020, changing a package from Preelaborate to Pure potentially has more
+consequences than just the categorization change, since the values of contract
+aspects are specified differently for Pure packages by default.
+
+For instance, changing:
+
+package System.Storage_Pools is
+    pragma Preelaborate (Storage_Pools);
+    ...
+
+to:
+
+package System.Storage_Pools with Pure is
+    ...
+
+is actually the same as:
+
+package System.Storage_Pools with Pure, Nonblocking is
+    ...
+
+But this latter would be wildly incompatible, as all existing overridings of
+Allocate/Deallocate would have to be changed to be Nonblocking. (One cannot 
+override a Nonblocking => True subprogram with a Nonblocking => False, lest a
+dispatching call violate the declaration's promise.) You actually need to
+explicitly declare:
+
+package System.Storage_Pools with Pure, Nonblocking => False is
+    ...
+
+in order to avoid any compatibility problem. (Note that AI12-0064-2 only
+changes library units that require a change currently, which does not include
+Storage_Pools, since Nonblocking defaults to False -- which is what we want --
+for non-pure library units.)
+
+I believe there is a similar issue for Global (or will be when it is finished),
+since it defaults to Global => null for pure units and thus the root primitive
+operations.
+
+***************************************************************

Questions? Ask the ACAA Technical Agent