Releases: ropensci/drake
`future`-powered parallelism, examples for clusters, subgraph visualization, and a lot more speed
- Extend
plot_graph()
to display subcomponents. Check out argumentsfrom
,mode
,order
, andsubset
. The graphing vignette has demonstrations. - Add
"future_lapply"
parallelism: parallel backends supported by the future and future.batchtools packages. See?backend
for examples and the parallelism vignette for an introductory tutorial. More advanced instruction can be found in thefuture
andfuture.batchtools
packages themselves. - Cache diagnostic information of targets that fail and retrieve diagnostic info with
diagnose()
. - Add an optional
hook
argument tomake()
to wrap aroundbuild()
. That way, users can more easily control the side effects of distributed jobs. For example, to redirect error messages to a file inmake(..., parallelism = "Makefile", jobs = 2, hook = my_hook)
,my_hook
should be something likefunction(code){withr::with_message_sink("messages.txt", code)}
. - Remove console logging for "parLapply" parallelism.
Drake
was previously using theoutfile
argument for PSOCK clusters to generate output that could not be caught bycapture.output()
. It was a hack that should have been removed before. - Remove console logging for "parLapply" parallelism.
Drake
was previously using theoutfile
argument for PSOCK clusters to generate output that could not be caught bycapture.output()
. It was a hack that should have been removed before. - If 'verbose' is 'TRUE' and all targets are already up to date (nothing to build), then
make()
andoutdated()
print "All targets are already up to date" to the console. - Add new examples in 'inst/examples', most of them demonstrating how to use the
"future_lapply"
backends. - New support for timeouts and retries when it comes to building targets.
- Failed targets are now recorded during the build process. You can see them in
plot_graph()
andprogress()
. Also see the newfailed()
function, which is similar toin_progress()
. - Speed up the overhead of
parLapply
parallelism. The downside to this fix is thatdrake
has to be properly installed. It should not be loaded withdevtools::load_all()
. The speedup comes from lightening the firstclusterExport()
call inrun_parLapply()
. Previously, we exported every single individualdrake
function to all the workers, which created a bottleneck. Now, we just loaddrake
itself in each of the workers, which works becausebuild()
anddo_prework()
are exported. - Change default value of
overwrite
toFALSE
inload_basic_example()
. - Warn when overwriting an existing
report.Rmd
inload_basic_example()
. - Tell the user the location of the cache using a console message. Happens on every call to
get_cache(..., verbose = TRUE)
. - Increase efficiency of internal preprocessing via
lightly_parallelize()
andlightly_parallelize_atomic()
. Now, processing happens faster, and only over the unique values of a vector. - Add a new
storr
namespace calledimports
to be used inis_imported()
. That way, the whole object need not be read toclean()
is.clean()
is much faster and safer.
Reproducible random numbers, knitr awareness, more docs, minor bugfixes
Most critically of all, this release readies drake
for the upcoming testthat version 2.0.0.
Predict runtimes, externalize caches/hashes
There are several improvements to code style and performance. In addition, there are new features such as cache/hash externalization and runtime prediction. See the new storage and timing vignettes for details. This release has automated checks for back-compatibility with existing projects, and I also did manual back-compatibility checks on serious projects.
Fixes plus build times
This is mainly a bugfix release, but it also contains @dapperjapper's build_times()
, @AlexAxthelm's testing with tempdir()
, and a TON of linting by @AlexAxthelm.
Fix vignettes
...so they render well on CRAN.
Interactive visualizations with plot_graph()!
Plus useful utilities like deps()
, max_useful_jobs()
, and in_progress()
. Also MUCH improved documentation and examples in the help files of every user-side function.
Fixes issues 35, 36, 37, and 39
patch: packages and workflow plans
- Warn rather than quit in error when one of the user's packages fails to load.
- Allow
drake::make()
,drake::check()
etc. when drake is not actually loaded/attached. - Sanitize workflow plan data frames.
patch
Fixed some (mostly interface-related) bugs and idiosyncrasies in version 2.1.0. Version 2.1.1 is cleaner and back-compatible, and it should work better with projects with hundreds of targets or more.
Parallel computing with parLapply
- Parallel computing with parLapply.
- Improvements to the documentation, including a "caution" vignette.
- The
tracked()
function, which lists the objects in a workflow that are reproducibly tracked.