It’s a problem when arguably the most important library for a language is maintained by people with no interest in exploiting the benefits of the current version of the language.
I noticed that they are starting to modernize BLAS/LAPACK in the most recent releases.
Consider zlassq.f from version 3.9.0:
SUBROUTINE ZLASSQ( N, X, INCX, SCALE, SUMSQ )
*
* -- LAPACK auxiliary routine (version 3.7.0) --
* -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* December 2016
*
* .. Scalar Arguments ..
INTEGER INCX, N
DOUBLE PRECISION SCALE, SUMSQ
* ..
* .. Array Arguments ..
COMPLEX*16 X( * )
...
and the same subroutine (now zlassq.f90) from version 3.11:
subroutine ZLASSQ( n, x, incx, scl, sumsq )
use LA_CONSTANTS, &
only: wp=>dp, zero=>dzero, one=>done, &
sbig=>dsbig, ssml=>dssml, tbig=>dtbig, tsml=>dtsml
use LA_XISNAN
!
! -- LAPACK auxiliary routine --
! -- LAPACK is a software package provided by Univ. of Tennessee, --
! -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
!
! .. Scalar Arguments ..
integer :: incx, n
real(wp) :: scl, sumsq
! ..
! .. Array Arguments ..
complex(wp) :: x(*)
...
It’s going to be a long effort though and I doubt they’ll use anything which will restrict the library from being called exclusively from Fortran, such as optional arguments or assumed shape or rank arrays.