275 lines
8.6 KiB
Markdown
275 lines
8.6 KiB
Markdown
# withr 3.0.2
|
|
|
|
* `local_language()` now never warns when set to `"C"` (#254).
|
|
This is a cross-platform and silent way of disabling `gettext()`
|
|
translations.
|
|
|
|
|
|
# withr 3.0.1
|
|
|
|
* Fixes for CRAN checks.
|
|
|
|
|
|
# withr 3.0.0
|
|
|
|
## Performance of withr
|
|
|
|
* `defer()` is now a thin wrapper around `base::on.exit()`. This is
|
|
possible thanks to two contributions that we made to R 3.5:
|
|
|
|
- We added an argument for LIFO cleanup: `on.exit(after = FALSE)`.
|
|
- Calling `sys.on.exit()` elsewhere than top-level didn't work. This
|
|
is needed for manual invocation with `deferred_run()`.
|
|
|
|
Following this change, `defer()` is now much faster (although still
|
|
slower than `on.exit()` which is a primitive function and about as
|
|
fast as it gets). This also increases the compatibility of `defer()`
|
|
with `on.exit()` (all handlers are now run in the expected order
|
|
even if they are registered with `on.exit()`) and standalone
|
|
versions of `defer()`.
|
|
|
|
|
|
## Breaking change
|
|
|
|
* When `source()` is used with a local environment, as opposed to
|
|
`globalenv()` (the default), you now need to set
|
|
`options(withr.hook_source = TRUE)` to get proper withr support
|
|
(running `defer()` or `local_` functions at top-level of a script).
|
|
This support is disabled by default in local environments to avoid a
|
|
performance penalty in normal usage of withr features.
|
|
|
|
|
|
## Other features and bugfixes
|
|
|
|
* `deferred_run()` now reports the number of executed expressions with
|
|
a message.
|
|
|
|
* `deferred_run()` can now be run at any point in a knitr file (#235).
|
|
|
|
* `local_tempfile()` now writes `lines` in UTF-8 (#210) and always uses
|
|
`\n` for newlines (#216).
|
|
|
|
* `local_pdf()` and friends now correctly restore to the previously
|
|
active device (#138).
|
|
|
|
* `local_()` now works even if withr isn't attached (#207).
|
|
|
|
* `local_par()` and `with_par()` now work if you don't set any parameters
|
|
(#238).
|
|
|
|
* `with_language()` now properly resets the translation cache (#213).
|
|
|
|
* Fixes for Debian packaging.
|
|
|
|
|
|
# withr 2.5.2
|
|
|
|
* Fixes for CRAN checks.
|
|
|
|
|
|
# withr 2.5.1
|
|
|
|
* Fixes for CRAN checks.
|
|
|
|
|
|
# withr 2.5.0
|
|
|
|
* `defer()` and all `local_*()` functions now work when run inside of
|
|
a `.Rmd`. The deferred expressions are executed when knitr exits.
|
|
|
|
* `defer()` and `local_` functions now work within `source()`.
|
|
The deferred expressions are executed when `source()` exits.
|
|
|
|
* `with_()` and `local_()` gain a `get` argument. Supply a getter
|
|
function to create `with` and `local` functions that are robust to
|
|
early exits.
|
|
|
|
When supplied, this restoration pattern is used:
|
|
|
|
```
|
|
old <- get()
|
|
on.exit(set(old))
|
|
set(new)
|
|
action()
|
|
```
|
|
|
|
Instead of:
|
|
|
|
```
|
|
old <- set(new)
|
|
on.exit(set(old))
|
|
action()
|
|
```
|
|
|
|
This ensures proper restoration of the old state when an early exit
|
|
occurs during `set()` (for instance when a deprecation warning is
|
|
caught, see #191).
|
|
|
|
* These `with_` and `local_` functions are now robust to early exits (see next bullet):
|
|
|
|
- `_locale()`
|
|
- `_envvar()`
|
|
- `_libpaths()`
|
|
- `_options()`
|
|
- `_par()`
|
|
- `_path()`
|
|
- `_seed()`
|
|
|
|
* `with_namespace()` and `local_namespace()` now pass `warn.conflicts`
|
|
to `attach()` (@kyleam, #185).
|
|
|
|
* `local_rng_version()` and `local_seed()` no longer warn when
|
|
restoring `sample.kind` to `"Rounding"` (#167).
|
|
|
|
* `with_seed()` now preserves the current values of `RNGkind()` (#167).
|
|
|
|
* `with_collate()` is no longer affected by the `LC_COLLATE`
|
|
environment variable set to "C" (#179).
|
|
|
|
* Local evaluations in the `globalenv()` (as opposed to top-level
|
|
ones) are now unwound in the same way as regular environments.
|
|
|
|
* `local_tempfile()` gains a lines argument so, if desired, you can pre-fill
|
|
the temporary file with some data.
|
|
|
|
|
|
# withr 2.4.3
|
|
|
|
* Lionel Henry is the new maintainer.
|
|
|
|
* Handlers registered with the global environment (as happens when `local_()`
|
|
is run at the top-level, outside a function) are now automatically run
|
|
when the R session ends (#173).
|
|
|
|
* New `with_language()` and `local_language()` to temporarily control the
|
|
language used for translations (#180).
|
|
|
|
* `with_seed()` now caches the check for R version, so is now faster (#170)
|
|
|
|
* `with_makevars()` and `local_makevars()` now eagerly evaluate the `path` argument (#169)
|
|
|
|
# withr 2.4.2
|
|
|
|
- `local_options()` now lets you set an option to `NULL` as intended (#156)
|
|
|
|
- `local_tempfile()` argument `envir` is deprecated, in favor of `.local_envir`.
|
|
All withr functions except `local_tempfile()` used `.local_envir` to specify environments, so this makes this function consistent with the rest. (#157)
|
|
|
|
- `with_environment()` now passing `pos` and `warn.conflicts` to `attach()`, as intended (#161).
|
|
|
|
- `with_seed()` now also sets the RNG via new arguments `.rng_kind`, `.rng_normal_kind` and `.rng_sample_kind`
|
|
(#162, @AshesITR).
|
|
|
|
- `with_timezone()` now works after recent changes to `Sys.timezone()` in R-devel (#165)
|
|
|
|
# withr 2.4.1
|
|
|
|
- Tests which require `capabilities("cairo")` are now skipped.
|
|
|
|
# withr 2.4.0
|
|
|
|
- withr is now licensed as MIT (#154).
|
|
|
|
- Tests for `with_cairo_pdf()` and `with_cairo_ps()` have been removed, as they fail if Cairo is not available, such as with M1 macOS systems (#158)
|
|
|
|
- `local_seed()` is now exported (#153)
|
|
|
|
# withr 2.3.0
|
|
|
|
## Deprecations
|
|
|
|
- `local_tempfile()` argument `new` is deprecated, in favor of returning the path to the new tempfile.
|
|
calls like `local_tempfile("xyz")` should be replaced with `xyx <- local_tempfile()` in your code (#141).
|
|
|
|
## New features
|
|
|
|
- New `local_seed()` function and `local_preserve_seed()` functions to correspond to `with_seed()` and `with_preserve_seed()` (#139).
|
|
|
|
- New `local_tempdir()` function added to create a temp directory (#140)
|
|
|
|
- `local_*()` functions now take dots (`...`), which can simplify calls in some cases, e.g. you can now use `local_options(foo = "bar")` rather than `local_options(c(foo = "bar"))`.
|
|
|
|
## Minor improvements and fixes
|
|
|
|
- `defer()` now throws an error if an error occurs in the deferred expression (#148)
|
|
|
|
- `with_file()` and `local_file()` can now work if the file is actually a directory (#144).
|
|
|
|
# withr 2.2.0
|
|
|
|
- `defer()` can set deferred events on `.GlobalEnv` to facilitate the interactive development of code inside a function or test.
|
|
Helpers `deferred_run()` (and `deferred_clear()`) provide a way to explicity run and clear (or just clear) deferred events (#76, @jennybc).
|
|
|
|
- `with_connection()` now works when existing objects or connections exist with the same names (#120)
|
|
|
|
- `with_makevars()` now uses `tools::makevars_user()` to determine the default user makevars file (#77, @siddharthab).
|
|
|
|
- `with_options()` no longer uses `do.call()`, so optiosn are not evaluated on exit (#73, @mtmorgan).
|
|
|
|
- `with_package()` no longer has the `help` argument (#94, @wendtke).
|
|
|
|
- `with_package()` now does not try to detach the package if it is already attached before calling `with_package()` (#107)
|
|
|
|
- `with_preserve_seed()` now restores `.Random.seed` if it is not set
|
|
originally (#124).
|
|
|
|
- Add `with_rng_version()` and `local_rng_version()` functions to change the version of the RNG (#90, @gaborcsardi).
|
|
|
|
- `with_svg()` documentation now is consistent across R versions (#129)
|
|
|
|
- Add `with_timezone()` and `local_timezone()` functions to change the time zone (#92, @gaborcsardi).
|
|
|
|
- `with_tempfile()` and `local_tempfile()` now delete recursively directories on exit (#84, @meta00).
|
|
|
|
# withr 2.1.2
|
|
|
|
- `set_makevars()` is now exported (#68, @gaborcsardi).
|
|
|
|
- `with_temp_libpaths()` gains an `action` argument, to specify how the
|
|
temporary library path will be added (#66, @krlmlr).
|
|
|
|
# withr 2.1.1
|
|
|
|
- Fixes test failures with testthat 2.0.0
|
|
|
|
- `with_file()` function to automatically remove files.
|
|
|
|
# withr 2.1.0
|
|
|
|
- `with_connection()` function to automatically close R file connections.
|
|
|
|
- `with_db_connection()` function to automatically disconnect from DBI database
|
|
connections.
|
|
|
|
- `with_gctorture2` command to run code with gctorture2, useful for testing
|
|
(#47).
|
|
|
|
- `with_package()`, `with_namespace()` and `with_environment()` (and equivalent
|
|
locals) functions added, to run code with a modified object search path (#38,
|
|
#48).
|
|
|
|
- Add `with_tempfile()` and `local_tempfile()` functions to create temporary
|
|
files which are cleanup up afterwards. (#32)
|
|
|
|
- Remove the `code` argument from `local_` functions (#50).
|
|
|
|
# withr 2.0.0
|
|
|
|
- Each `with_` function now has a `local_` variant, which reset at the end of
|
|
their local scope, generally at the end of the function body.
|
|
|
|
- New functions `with_seed()` and `with_preserve_seed()` for running code with
|
|
a given random seed (#45, @krlmlr).
|
|
|
|
# withr 1.0.2
|
|
- `with_makevars()` gains an `assignment` argument to allow specifying
|
|
additional assignment types.
|
|
|
|
# withr 1.0.1
|
|
- Relaxed R version requirement to 3.0.2 (#35, #39).
|
|
- New `with_output_sink()` and `with_message_sink()` (#24).
|
|
|
|
# withr 1.0.0
|
|
|
|
- First Public Release
|