This blog is updated daily.
A general description is here.
The bundled BLAS and LAPACK sources have been updated to those shipped as part of january 2025's LAPACK 3.12.1.
It is intended that this will be the last update to BLAS and LAPACK in the R sources. Those building R from source are encouraged to use external BLAS and LAPACK and this will be required in future.
This update was mainly bug fixes but contained a barely documented major change. The set of BLAS routines has been unchanged since 1988, so throughout R's history. This update introduced two new BLAS routines ‘dgemmtr’ and ‘zgemmtr’ which are now used by LAPACK routines. This means that BLAS implementations are no longer interchangeable.
To work around this, R can be configured with option ‘--with-2025blas’ which arranges for the 2025 BLAS additions to be compiled into ‘libRlapack’ (the internal LAPACK, not built if an external LAPACK is used).
This option allows the continuation of swapping the BLAS in use by symlinking ‘lib/libRblas.*’. It has the disadvantage of using the reference BLAS version of the 2025 routines whereas an enhanced BLAS might have an optimized version (OpenBLAS does as from version 0.3.29).
Windows builds use the internal LAPACK and by default the internal BLAS: notes on how to swap the latter _via_ ‘Rblas.dll’ are in file ‘src/extra/blas/Makefile.win’.
The bundled BLAS and LAPACK sources have been updated to those shipped
with LAPACK 3.12.1.
This is mainly bug fixes, but includes a handful of new ancillary routines, including two new BLAS routines ‘dgemmtr’ and ‘zgemmtr’ which are now used by LAPACK routines. So an external BLAS to be used with the internal LAPACK (unusual) needs to provide those routines, and if an external LAPACK is 3.12.1 or later, the BLAS used must contain the 2025 additions.
There is a new ‘configure’ option ‘--with-2025blas’ which will compile
the 2025 BLAS additions in the internal LAPACK to allow an external
BLAS which lacks them to be used.
A C23 compiler (if available) is now selected by default for compilation of R and packages. R builds can opt out _via_ the ‘configure’ flag ‘--without-C23’, unless the specified or default (usually ‘gcc’) compiler defaults to C23: ‘gcc’ 15 does.
A C23 compiler is known to be selected with ‘gcc’ 13-15 (as used on Windows), LLVM ‘clang’ 18-20 (and 15 should), Apple ‘clang’ 15-16 and Intel 2024.2 (and 2022.2 should).
Current binary distributions on macOS use Apple ‘clang’ 14 and so do not use C23.
Many arguments which should be length-1 logical are checked more thoroughly. The most commonly seen errors are in ‘unlink(, recursive)’, ‘tempdir()’ and the ‘na.rm’ arguments of ‘max()’, ‘min()’, ‘sum()’, ....
‘grep()’, ‘strsplit()’ and similar took non-‘TRUE’/‘FALSE’ values of their logical arguments as ‘FALSE’, but these were almost always mistakes and are now reported as ‘NA’.