(j3.2006) (SC22WG5.3835) WG5 letter ballot 5 on technical content of N1761
Mon Jan 5 16:53:14 EST 2009
Although my ballot did not make the deadline, perhaps the comments
are still of use so I pass them on for what they are worth.
No with comments:
0) The file ISO_Fortran_binding.h does not appear to be included
with N1761. I assume this is an oversight?
1) The general approach of standardizing a data structure (incompletely)
seems awkward compared to the approach of standardizing the particular
sorts of APIs that programmers will want (e.g. what is the rank?
what is the base address? please change the base address, etc.)
Standardizing a structure might make it difficult to change the
structure from one compiler release to the next, as the structure is
"frozen" in the ABI.
2) There is no "version" query for the structure or the ABI. If a vendor
makes changes from one release to the next, does the user have any
portable way of detecting differences?
3) If C descriptors and Fortran descriptors are in true correspondence,
then it is hard to understand the reason for an asymmetry where the
C descriptor has an fdesc field but the Fortran descriptor need not have
a cdesc field or equivalent.
4) An assumed-rank variable cannot appear in many contexts. It therefore
seems like too radical a syntax change for the benefit obtained.
Some such syntax as %REF for passing addresses of objects might be
simpler and has some actual deployment history.
5) A TR advancing interoperability of Fortran with C should make some
mention of variadic functions.
6) The user model seems needlessly complex, or I am not understanding
all of it. It is called a "two descriptor model" but given that the API
supplies ways of synthesizing multiple descriptors to refer to the same
"physical" data object, it seems that there are really any number of
descriptors. The API allows "efficient" access to objects defined by
descriptors, but does not permit a full calculus of descriptors (do
two descriptors describe the same object?). Since some user-initiated
actions like deallocation require an implementation to be able to
distinguish descriptors, it's not clear that the API is complete enough.
More information about the J3