NEWS in package ‘R.cache’
Changes in version 0.15.0 (2021-04-27)
SIGNIFICANT CHANGES
- The location of the root cache folder as introduced in R.cache 0.14.0 has
been updated to match that of tools::R_user_dir(), which was introduced
in R 4.0.0. On Linux, this was already the case in R.cache 0.14.0,
whereas on macOS and MS Windows, the folder locations have changed
slightly. If an old cache folder location is detected, then the user will
be queried what action to take, i.e. abort, ignore the old folder, remove
the old folder, or move the old folder to the new location. In
non-interactive mode, the default action is always to ignore.
- The package will no longer ask for permission to create the cache folder
as long as the cache folder is compatible with tools::R_user_dir().
Changes in version 0.14.0 (2019-12-05)
SIGNIFICANT CHANGES
- Now R.cache uses a default cache path that adheres to the standard cache
location on the current operating system, whereas in previous versions it
defaulted to ~/.Rcache. On Unix, the 'XDG Base Directory Specification'
is followed, which means that the R.cache folder will typically be
~/.cache/R/R.cache/. On macOS, it will be ~/Library/Caches/R/R.cache/.
On modern versions of Microsoft Windows, environment variables such
as 'LOCALAPPDATA' will be used, which typically resolves to
'%USERPROFILE%/AppData/Local, e.g. 'C:/Users/alice/AppData/Local'.
If R.cache fails to find a proper OS-specific cache folder, it will fall
back to using ~/.Rcache as previously done.
Importantly, if ~/.Rcache already exists, then that will be used by
default. This is done in order to not lose previously cached files.
Users with an existing folder who wish to move to the new standard need
to move or remove the ~/.Rcache folder manually.
NEW FEATURES
- Add generateCache() to generate cache pathnames from a key without creating
the cache file. This function was previously not exported.
- Option 'R.cache.rootPath' now defaults to environment variable
'R_CACHE_ROOTPATH' if it is set.
- evalWithMemoization() gained argument 'drop' to specify which attributes
to drop from the expression object. The default is to now drop any
source-reference attributes.
BUG FIXES
- evalWithMemoization(expr) failed to memoize in knitr documents because
although the same 'expr' was specified they differed internally due to
source-reference attributes.
- evalWithMemoization() used partial dollar name matching in one place.
DEPRECATED & DEFUNCT
- Previously deprecated options 'R.cache::rootPath', 'R.cache::touchOnLoad',
and 'R.cache::compress' are now defunct. Likewise, environment variable
'R_CACHE_PATH' and argument onError="print" for loadCache() are now defunct.
SOFTWARE QUALITY
- Now a temporary cache root path is always set when running 'R CMD check',
unless one is explicitly set via an option or an environment variable.
Changes in version 0.13.0 (2018-01-03)
SIGNIFICANT CHANGES
- Package now formally requires R (>= 2.14.0) released October 2011.
NEW FEATURES
- Now package gives a more informative error message in the rare cases it
fails to create the cache root directory or fails to save a cache file.
- Updated loadCache() to recognize new file-format version 3 coming to R.
- Added options 'R.cache.enabled', which defaults to TRUE, for controlling
whether loadCache() and saveCache() should read/write from cache or not.
This provides an easy mechanism for temporarily disabling R.cache.
- Harmonized R.cache options to all have names prefixed with 'R.cache.'.
- clearCache() now prompts the user via readline(), which is always visible,
i.e. it can neither be captured nor sinked.
SOFTWARE QUALITY
- TESTS: Increased test coverage.
DEPRECATED & DEFUNCT
- Using onError = "print" for loadCache() is deprecated and replaced by
new onError = "message".
- Deprecated R.cache options 'R.cache::rootPath', 'R.cache::touchOnLoad',
and 'R.cache::compress'. Use 'R.cache.rootPath', 'R.cache.touchOnLoad',
and 'R.cache.compress' instead.
Changes in version 0.12.0 (2015-11-12)
NEW FEATURES
- Now all prompt and verbose messages are send to the standard error (instead
of the standard output).
- SPEEDUP: Now memoizedCall() generates cache pathname only once.
SOFTWARE QUALITY
- TESTS: Increased test coverage from 64% to 86%.
DEPRECATED & DEFUNCT
- CLEANUP: Dropped argument 'verbose' from memoizedCall().
Changes in version 0.11.1 (2014-09-10)
DOCUMENTATION
- Clarified in help that function calls that returns ("has value") NULL will
not be cached.
SOFTWARE QUALITY
- TESTS: Added package system tests for memoizeCall() and addMemoization().
BUG FIXES
- addMemoization() will no longer memoize an already memoized function.
Changes in version 0.11.0 (2014-09-05)
SIGNIFICANT CHANGES
- Now package imports rather than suggests the 'digest' package. This
simplifies installation/usage of the package.
Changes in version 0.10.0 (2014-06-10)
SOFTWARE QUALITY
- Bumped package dependencies.
Changes in version 0.9.5 (2014-05-01)
NEW FEATURES
- The textual prompt used to ask new R.cache users for approval on creating a
persistent cache directory is now using the standard error (stderr) rather
than the standard output (stdout). This lowers the risk for issues with
report generators.
Changes in version 0.9.4 (2014-04-26)
SOFTWARE QUALITY
- Minimizing the use of '::'.
Changes in version 0.9.3 (2014-01-30)
SOFTWARE QUALITY
- Bumped package dependencies.
Changes in version 0.9.2 (2014-01-13)
- All call to internal generateCache() with key = NULL would give a
hard-to-understand error message. Now it's more informative.
SOFTWARE QUALITY:
- Bumped package dependencies.
Changes in version 0.9.1 (2013-12-21)
- Added arguments 'path' and 'rootPath' to getCachePath().
- Added argument 'pathname' to saveCache().
Changes in version 0.9.0 (2013-10-17)
BUG FIXES
- If the package was only loaded but not attached, the cache root path would
default to ~/.Rcache/, which in turn could cause that path to be create
without asking the user. For instance, R.cache::loadCache(list()) would do.
Thanks to Kurt Hornik at Vienna University of Economics and Business for
reporting on this.
Changes in version 0.8.4 (2013-10-14)
BUG FIXES
- Adjusted package dependencies and NAMESPACE to work with the package
versions available on CRAN.
SOFTWARE QUALITY
- Now DESCRIPTION's 'Authors' field matches 'Authors@R'.
Changes in version 0.8.3 (2013-10-03)
SOFTWARE QUALITY
- Bumped package dependencies.
Changes in version 0.8.2 (2013-09-28)
NEW FEATURES
- Now the 'R.cache' Package object is also available when the package is only
loaded (but not attached).
Changes in version 0.8.1 (2013-09-15)
SOFTWARE QUALITY
- Now only importing a minimal set of functions needed from the 'R.oo' and
the 'R.utils' packages.
- Bumped package dependencies.
Changes in version 0.8.0 (2013-08-21)
SIGNIFICANT CHANGES
- Now R.utils is no longer attached ("loaded") - only imported.
SOFTWARE QUALITY
- TESTS: Added system tests.
Changes in version 0.7.4 (2013-08-20)
SOFTWARE QUALITY
- Now explicitly importing one function from 'utils' in NAMESPACE.
Changes in version 0.7.3 (2013-08-18)
SOFTWARE QUALITY
- Now clearCache() is exported (re-exported from R.oo).
Changes in version 0.7.2 (2013-08-03)
SOFTWARE QUALITY
- Bumped package dependencies.
BUG FIXES
- R.cache:::.assertDigest() called from within another package would give an
error that packageVersion() of 'utils' was not found.
Changes in version 0.7.1 (2013-07-11)
SOFTWARE QUALITY
- Updated the title and the description of the package.
Changes in version 0.7.0 (2013-07-03)
NEW FEATURES
- Now getChecksum() passes '...' to digest(), e.g. argument 'algo'.
SOFTWARE QUALITY
- Bumped package dependencies.
Changes in version 0.6.10 (2013-05-25)
SOFTWARE QUALITY
- Minor speedup of loadCache() - replaced an rm() call with NULL assignment.
Changes in version 0.6.9 (2013-05-20)
SOFTWARE QUALITY
- CRAN POLICY: Now all Rd \usage{} lines are at most 90 characters long.
- Bumped package dependencies.
Changes in version 0.6.8 (2012-12-19)
NEW FEATURES
- Utilizing new startupMessage() of R.oo.
Changes in version 0.6.7 (2012-11-28)
NEW FEATURES
- Added support for clearCache(..., recursive = TRUE).
Changes in version 0.6.6 (2012-11-27)
BUG FIXES
- clearCache() would give error "object 'dirs' not found".
Changes in version 0.6.5 (2012-11-18)
SIGNIFICANT CHANGES
- Package now only imports R.methodsS3 and R.oo, no long depends (attaches)
them. It still needs to load R.utils.
- Now package exports a smaller set of the methods.
SOFTWARE QUALITY
- ROBUSTNESS: Now package declares S3 methods in the namespace.
- Added internal .assertDigest(), which originates from aroma.core.
Changes in version 0.6.4 (2012-10-16)
SIGNIFICANT CHANGES
- Package now imports R.methodsS3 and R.oo.
BUG FIXES
- ROBUSTNESS: No longer passing '...' to NextMethod(), cf. R-devel thread
'Do *not* pass '...' to NextMethod() - it'll do it for you; missing
documentation, a bug or just me?' on Oct 16, 2012.
Changes in version 0.6.3 (2012-09-12)
SIGNIFICANT CHANGES
- Renamed the installed .Rcache/ directory to _Rcache/ to avoid R CMD check
NOTEs.
SOFTWARE QUALITY
- CRAN POLICY: Removed one last call to .Internal() for loading saved data.
This could be done in a backward-compatible way using readRDS().
Changes in version 0.6.2 (2012-03-20)
SOFTWARE QUALITY
- CRAN POLICY: Dropped an explicit call to an .Internal() function.
Changes in version 0.6.1 (2012-01-22)
NEW FEATURES
- Updated the README that is copied to the .Rcache directory.
Changes in version 0.6.0 (2011-12-30)
SIGNIFICANT CHANGES
- As before, the cache root path defaults to ~/.Rcache/. However, if it does
not exists, then it is created when the package is loaded, but only after
approval by the user (via a textual prompt). If not approved, or it is not
possible to prompt the user (e.g. in a non-interactive session), then a
session-specific temporary directory is used.
Changes in version 0.5.3 (2011-12-29)
NEW FEATURES
- Now getCachePath() and setCacheRootPath() add a README.txt file to the root
path, iff missing. It explains why the directory structure exists, what
created it, and that it is safe to delete.
Changes in version 0.5.2 (2011-10-05)
BUG FIXES
- For R v2.13.0 only: Applying the same fix that was done for R v2.12.2 and
before in R.cache v0.5.1.
Changes in version 0.5.1 (2011-08-31)
BUG FIXES
- For R v2.12.2 and before: After adding support for compressed files in
R.cache v0.5.0, we would get the 'Error in seek.connection(con, origin
= "current", where = -5) : whence = "end" is not implemented for gzfile
connections' in readCacheHeader() iff running R v2.12.2 or before.
Thanks to Uwe Ligges (R core) for reporting on this.
Changes in version 0.5.0 (2011-08-16)
NEW FEATURES
- Added support for saving and loading compressed cache files.
- Now package uses packageStartupMessage() instead of cat().
SOFTWARE QUALITY
- ROBUSTNESS: Now findCache() asserts that any identified cache file is
really a file.
Changes in version 0.4.3 (2011-07-21)
DOCUMENTATION
- Clarified how argument 'dirs' (in methods using it) specifies the
subdirectory of the cache root directory.
Changes in version 0.4.2 (2011-05-19)
NEW FEATURES
- Now argument 'prompt' for clearCache() defaults to TRUE iff interactive()
is TRUE, otherwise FALSE.
DOCUMENTATION
- Added a help page to clearCache().
Changes in version 0.4.1 (2011-04-02)
NEW FEATURES
- Now generateCache() utilizes a generic function getChecksum() to obtain the
checksum. This makes it possible to customize how checksums are calculated
for different classes of objects.
- Added a default getChecksum() which utilizes digest::digest().
- Added getChecksum() for the Object, which first clears the cache of the
object and the calls the default ditto.
- Added trial version of evalWithMemoization().
BUG FIXES
- clearCache() would also report on subdirectories.
Changes in version 0.4.0 (2011-02-14)
NEW FEATURES
- Added trial versions of memoizedCall() and addMemoization().
Changes in version 0.3.0 (2010-03-13)
SOFTWARE QUALITY
Changes in version 0.2.0 (2009-10-16)
BUG FIXES
- In R v2.10.0 and newer, we would get an error reporting that internal
function loadFromConn() does not exists.
Changes in version 0.1.9 (2009-09-11)
NEW FEATURES
- Added argument 'onError' to loadCache(), to specify the action when an
error occurs. The default used to be to print the error message
(onError = "print"), but now it generates a warning ("warning"). The other
alternatives are do silently ignore it, or to throw the error ("error").
Except for onError = "error", loadCache() always returns NULL if an error
occurs.
Changes in version 0.1.8 (2009-08-11)
NEW FEATURES
- Now readCacheHeader() reports the "pathname" in error/warnings messages, if
argument 'file' refers to a file and the "description" if it refers to a
connection.
SOFTWARE QUALITY
- ROBUSTNESS: Added sanity check to readCacheHeader() testing that the read
header identifier is non-empty. This results in a clearer error message
that before.
- Renamed the HISTORY file to NEWS.
Changes in version 0.1.7 (2008-02-27)
NEW FEATURES
- Added option to updated the "last-modified" timestamp of cache files
whenever they are loaded via loadCache(). This will help identified what
cache files have not been used for a long time. To turn this on, use
options("R.cache::touchOnLoad" = TRUE).
- Now error messages specifies the pathname, if available.
BUG FIXES
- The throw() for invalid identifiers was trying to put the connection object
in the output and not the identifier.
Changes in version 0.1.6 (2007-07-02)
NEW FEATURES
- Now environments, in addition to lists, may be used as keys for generating
cache names.
SOFTWARE QUALITY
- Package passes R CMD check on R v2.6.0 devel. Minor mods.
Changes in version 0.1.5 (2007-03-11)
NEW FEATURES
- Added getCacheRootPath() to the help index page.
SOFTWARE QUALITY
- Package passes R CMD check on R v2.5.0.
Changes in version 0.1.4 (2007-03-07)
NEW FEATURES
- Added getCacheRootPath() and setCacheRootPath() to specify where the root
of the file path is located.
Changes in version 0.1.3 (2007-01-24)
NEW FEATURES
- Now saveCache() and loadCache() takes optional argument 'dirs' for caching
data to subdirectories of the root cache directory.
- Added setCacheRootPath() to set the root cache directory.
Changes in version 0.1.2 (2006-05-25)
NEW FEATURES
- Added argument 'pathname' to loadCache() in order to load "unknown" cache
files for which the key is unknown.
BUG FIXES
- Work around for not saving "promises" (non-evaluated arguments) in
base::save(), which otherwise includes all of the surrounding environment
if 'sources' is not evaluated/missing. For more details see code and my
email to r-devel on 2006-05-25. Thanks to Brian Ripley for explaining what
was going on.
Changes in version 0.1.1 (2006-05-22)
SIGNIFICANT CHANGES
- Added header comment for file format > v0.1.
NEW FEATURES
- Added readCacheHeader().
- Added detection of file format version.
Changes in version 0.1.0 (2005-12-16)
NEW FEATURES
- Using a special binary file format now. It allows you to check if cache is
up-to-date to a source file. If not, the rest of the cache binary file is
not loaded.
- Added loadCache() and saveCache() methods.
- Created.