(j3.2006) TKR for C Interop

Bill Long longb
Wed Feb 28 20:29:51 EST 2007

Aleksandar Donev wrote:

>I believe that an important goal of interop TR should be binary compatibility. 
>That is, I believe one should be able to compile a C routine and then switch 
>different Fortran compilers (and libraries of course) without recompiling 
>(and vice versa). If the C struct is fully specified (no opaque components), 
>and the handles for the Fortran descriptors are pointers (void *), I think we 
>have achieved that goal. Essentially the whole TR header file will be 
>specified from Fortran, and the vendor will only provide the library that 
>implements the specified API. For efficiency, we may want to allow a vendor 
>to replace the header file with something that makes the routines macros, for 

I do not see how this sort of binary compatibility is possible in any 
reasonable way.  Vendor dope vectors have different formats, so the size 
of the corresponding C descriptor will be different from one Fortran 
compiler to the next. Unless you want the C struct to include separate 
regions for each vendor's specifics, in which case the struct will be in 
the 1000+ word range. And all the vendors have to agree on the layout, 
and they would be prohibited from changing their dope vectors in the 
future.  I'm seeing epsilon probability here.  Calling sequence 
conventions are not even necessarily the same among Fortran compilers.  
A Fortran implementation can interoperate with the C compiler specified 
at compile time, but that's it.  This is true of the current interop - 
nothing special about the new extensions.


Bill Long                                   longb at cray.com
Fortran Technical Support    &              voice: 651-605-9024
Bioinformatics Software Development         fax:   651-605-9142
Cray Inc., 1340 Mendota Heights Rd., Mendota Heights, MN, 55120


More information about the J3 mailing list