Dear Bob,

First, regarding the ABI vs. API question: there is no consistent API for how 
to pass between Fortran and C strings, unless one uses Fortran 2003’s 
ISO_C_BINDING. It’s an ABI detail, in the sense that every compiler will choose 
to do things their own way: most compilers who pass a hidden length parameter, 
although its size (32-bit or 64-bit or size_t) and position (either after the 
char pointer, or at the end of the argument list) are variable between 
compilers. So, any code that does this is already compiler-specific.

Second, there are good reasons we might want to change this. One is possible 
use cases (although there are few, by definition, because we simply don’t 
support those right now). The second one is compatibility with C 
string-handling functions, who operate on size_t arguments, which means we can 
now use those functions without casting types around all the time.

Finally, if we’re making this change, we welcome any feedback on how to make it 
as easy as possible to handle in user code. Documentation, preprocessor macros, 
etc.

In particular, one of the things we will need to address is on helping widely 
used code to adapt to the change, so that. One example I am thinking of, that 
uses old-style C/Fortran interfaces, is MPI libraries (openmpi & mpich). We 
definitely need to test those to make sure nothing breaks if we are going to 
proceed — or they need to be fixed upstream well before we release, and with 
due note of the incompatibility in our release notes.


Cheers,
FX

Reply via email to