The MPI Forum did not address any mixed-language programming issues. At least for MPI-1, Fortran programs must pass messages to Fortran programs, and the same for C. Yet, it is clearly possible to support both C-to-C and Fortran-to-Fortran message passing in a single application. We call this a ``horizontal mixed-language portability.'' As long as there is no interest in transferring anything other than user data between Fortran and C strata of the parallel application, the horizontal model can be satisfied, provided that MPI_Init provides a consistent single initialization of MPI for both languages, regardless of which language is used actually to initialize MPI. Current practice centers on this ``horizontal'' model, but it is clearly insufficient, as we have observed from user feedback.
Two additional levels of support are possible, staying still with the restriction of C and Fortran 77 as the mixed languages. The first is the ability to pass MPI opaque objects locally within a process between C and Fortran. As noted earlier, C and Fortran representations for MPI objects will often be arbitrarily different, as will addresses. Although user-accessible interoperable functions already are required in MPICH (for the benefit of its Fortran interface), the MPI Standard does not require them. Such functionality is likely to appear in MPI-2 (as a result of our users' experience) and with other MPI systems as well. Such functionality has the added benefit of enhancing the ability of third parties to provide add-on tools for both C and Fortran users, without working with inside knowledge of the MPICH implementation (for instance, see [6]).
The second level of ``vertical'' support is to allow a C routine to transmit data to a Fortran routine. This requires some correspondence between C and Fortran datatypes, as well as a common format for performing the MPI operations (e.g., the C and Fortran implementations must agree on how to send control information and perform collective operations). The MPI Forum is preparing a proposal that addresses the issues of interlanguage use of MPI datatypes for MPI-2.