This blog is updated daily.
A general description is here.
Visibility macros such as ‘C_VISIBILITY’ can now be user-set, e.g. in ‘config.site’.
The list of compilers searched for ‘F95’ has been modernized, and that chosen for ‘FC’ will be used as the default. in particular, ‘gfortran’ is now the first choice, not ‘f95’: set ‘FC’ in ‘config.site’ to override this if necessary.
New macro ‘FC_VISIBILITY’ analogous to ‘F77_VISIBILITY’.
*N.B.*: The handling of Fortran is *work in progress*, with further changes under test. Code and documentation may not be in sync.
Packages with code in ‘src’ with extensions ‘.f90’ or ‘.f95’ are now linked using the C or C++ compiler rather than the Fortran 9x compiler. This is consistent with fixed-form Fortran code and allows mixing of C++ and free-form Fortran.
Consequentially, packages including free-form Fortran 9x which uses OpenMP should include ‘SHLIB_OPENMP_CFLAGS’ (or the ‘CXX’ version) in ‘PKG_LIBS’ rather than ‘SHLIB_OPENMP_FCFLAGS’ - fortunately on current platforms they are the same. [Docs and R CMD check have not yet been updated.]
Make macro ‘F_VISIBILITY’ is now preferred for both fixed-form and free-form Fortran.
The interpretation of source code with extension ‘.f’ is changing. Previously this denoted FORTRAN 77 code, but current compilers no longer have a FORTRAN 77 mode and interpret it as ‘fixed-form’ Fortran 90 (or later where supported) code. Extensions ‘.f90’ and ‘.f95’ continue to indicate ‘free-form’ Fortran code.
Legal FORTRAN 77 code is also legal fixed-form Fortran 9x; however this change legitimizes the use of later features, in particular to replace features marked ‘obsolescent’ in Fortran 95 which ‘gfortran’ 8.x has started to warn about.
The deprecated legacy support of ‘make’ macros such as ‘CXX1X’ has been removed: use the ‘CXX11’ forms instead.
Make macro ‘F77_VISIBILITY’ is deprecated in favour of ‘F_VISIBILITY’.
‘var(f)’ and hence ‘sd(f)’ now give an error for ‘factor’ arguments; they gave a deprecation warning since R 3.2.3, PR#16564.
New macro ‘CXX_VISIBILITY’ analogous to ‘C_VISIBILITY’ (which several packages have been misusing for C++ code) for the default C++ compiler (but not necessarily one used for non-default C++ dialects like C++14).