This blog is updated daily.
A general description is here.
‘untar(tar = "internal")’ has some support for ‘pax’ headers as produced by e.g. ‘gnutar --posix’ or ‘bsdtar --format pax’, including long path and link names.
New simple ‘provideDimnames()’ utility function.
‘aspell()’ gains filters for R code, Debian Control Format and message catalog files, and support for R level dictionaries. In addition, package ‘utils’ now provides functions ‘aspell_package_R_files()’ and ‘aspell_package_C_files()’ for spell checking R and C level message strings in packages.
The ‘print()’ method for class ‘"htest"’ gives fewer trailing spaces (wish of PR#15124).
Also print output from ‘HoltWinters()’, ‘nls()’ and others.
There is support for vectors longer than 2^31 - 1 elements on 64-bit platforms. This applies to raw, logical, integer, double, complex and character vectors, as well as lists. (Elements of character vectors remain limited to 2^31 - 1 bytes.)
Not all aspects of such vectors are completely implemented (nor completely tested).
Most operations which can sensibly be done with long vectors now work: others may return the error ‘long vectors not supported yet’. Most of these are because they explicitly work with integer indices (e.g. ‘anyDuplicated()’ and ‘match()’) or because of other limits (e.g. of character strings or matrix dimensions) would be exceeded or the operations would be extremely slow.
More use has been made of R objects representing registered entry points, which is more efficient as the address is provided by the loader once only when the package is loaded.
This has been done for packages ‘base’, ‘methods’, ‘splines’ and ‘tcltk’: it was already in place for the other standard packages.
Since these entry points are always accessed by the R entry points they do not need to be in the load table which can be substantially smaller and hence searched faster. This does mean that ‘.C’ / ‘.Fortran’ / ‘.Call’ calls copied from earlier versions of R may no longer work - but they were never part of the API.
The transitional support for installing packages without namespaces (required since R 2.14.0) has been removed. ‘R CMD build’ will still add a namespace, but a ‘.First.lib()’ function will need to be converted.
‘R CMD INSTALL’ no longer adds a namespace (so installation will fail), and a ‘.First.lib()’ function in a package will be ignored (with an installation warning for now).
As an exception, packages without a ‘R’ directory and no ‘NAMESPACE’ file can still be installed.
Packages can specify in their ‘DESCRIPTION file’ a line like
ForceBiarch: yes
to be installed on Windows with ‘--force-biarch’.
Support for the converters for use with ‘.C()’ is not compiled in by
default: compile ‘src/main/dotcode.c’ with ‘-DSUPPORT_CONVERTERS’ to
re-enable this (untested as we know of no examples in packages).
Support for the converters for use with ‘.C()’ has been removed.
The long-defunct functions ‘Rd_parse()’, ‘anovalist.lm()’, ‘clearNames()’, ‘glm.fit.null()’, ‘lm.fit.null()’, ‘lm.wfit.null()’, ‘mauchley.test()’, ‘package.contents()’, ‘print.coefmat()’, ‘reshapeLong()’, ‘resapeWide()’, ‘tkclose()’, ‘tkcmd()’, ‘tkfile.dir()’, ‘tkfile.tail()’, ‘tkopen()’, ‘tkputs()’, ‘tkread()’, ‘trySilent()’, ‘zip.file.extract()’ have been removed entirely (but are still documented in the help system).
The C code underlying base graphics has been migrated to the ‘graphics’ package (and hence no longer uses ‘.Internal()’ calls).
Most of the ‘.Internal()’ calls used in the ‘stats’ package have been migrated to C code in that package.
This means that a number of ‘.Internal()’ calls which have been used by packages no longer exist, including ‘.Internal(cor)’ ‘.Internal(cov)’, ‘.Internal(optimhess)’ and ‘.Internal(update.formula)’.
The ‘REPROTECT’ macro now checks that the protect index is valid.
A few recently added C entry points were missing the remapping to ‘Rf_’, notably ‘[dpq]nbinom_mu’.
‘PACKAGE = ""’ is now an error in ‘.C()’ etc calls: it was always contrary to the documentation.
The internal functions implementing ‘parse()’, ‘tools::parseLatex()’ and ‘tools::parse_Rd()’ were not reentrant, leading to errors in rare circumstances such as a garbage collection triggering a recursive call.
In Windows, tcltk windows were not always properly constructed. (PR#15150)
The internal methods for ‘tar()’ and ‘untar()’ do a slightly more general job for ‘ustar’-style handling of paths of more than 100 bytes.