(j3.2006) [MPI3 Fortran] Feedback from Fortran J3 meeting

William B. Clodius wclodius
Thu May 29 22:18:48 EDT 2008

On May 29, 2008, at 11:35 AM, Bill Long wrote:

> I generally agree with Aleks here.  We should not embed particular
> libraries like MPI in the standard - it is possibly subject to
> obsolescence (we might have picked PVM before), and inevitably subject
> to incompleteness (...I want LaPack!).  Instead, we have chosen to
> interface with C under the assumption that the combination of C and
> Fortran calling conventions should cover most libraries.  The problem
> with some C library routines (including many in MPI)  is that our
> interface does not handle (void *) dummy arguments well.  Fixing  
> that is
> a big part of the current discussion.
> Vendors, for performance reasons, of course, can recognize MPI  
> routines
> as additional intrinsics and optimize their calls.  Ditto for BLAS and
> LaPack routines.  But I think this sort of thing should remain outside
> the Fortran standard.  We're in the business of defining a language,  
> not
> writing people's programs or picking their library packages for them.
> (Yeah, I know there is a gray area with the Fortran intrinsics, but  
> most
> of those are not really library routines.)
I disagree. Picking library packages for users is an important part of  
defining a language. A large part of any language is the vocabulary,  
and in computer languages the vocabulary is largely provided by  
libraries. A problem with many language definitions is a failure to  
define a sufficiently large and useful set of libraries. Wirth's  
languages in particular had that problem.

For its first few decades Fortran could get by with a relatively small  
set of standard defined intrinsics, because as the first relatively  
useful language it quickly built up a set of public domain libraries  
that serve as defacto standards, but those libraries were not well  
integrated, have often not kept up with the time, and are not commonly  
discussed in Fortran texts. Some of those libraries, SLATEC comes to  
mind, make assumptions about such thing as argument passing that are  
not standard conforming. As a result people recreate similar libraries  
whose unfamiliar names and structure complicate the understanding of  
programs, and often rely on the quirks of specific compilers making  
portability harder. Identifying and documenting useful libraries  
within a (alternate?) standard is a relatively easy way of improving  
the language's functionality, particularly if the libraries are  
already in existence. 

More information about the J3 mailing list