Skip to content

Releases: ropensci/drake

`future`-powered parallelism, examples for clusters, subgraph visualization, and a lot more speed

05 Nov 05:20
Compare
Choose a tag to compare
  • Extend plot_graph() to display subcomponents. Check out arguments from, mode, order, and subset. 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 the future and future.batchtools packages themselves.
  • Cache diagnostic information of targets that fail and retrieve diagnostic info with diagnose().
  • Add an optional hook argument to make() to wrap around build(). That way, users can more easily control the side effects of distributed jobs. For example, to redirect error messages to a file in make(..., parallelism = "Makefile", jobs = 2, hook = my_hook), my_hook should be something like function(code){withr::with_message_sink("messages.txt", code)}.
  • Remove console logging for "parLapply" parallelism. Drake was previously using the outfile argument for PSOCK clusters to generate output that could not be caught by capture.output(). It was a hack that should have been removed before.
  • Remove console logging for "parLapply" parallelism. Drake was previously using the outfile argument for PSOCK clusters to generate output that could not be caught by capture.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() and outdated() 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() and progress(). Also see the new failed() function, which is similar to in_progress().
  • Speed up the overhead of parLapply parallelism. The downside to this fix is that drake has to be properly installed. It should not be loaded with devtools::load_all(). The speedup comes from lightening the first clusterExport() call in run_parLapply(). Previously, we exported every single individual drake function to all the workers, which created a bottleneck. Now, we just load drake itself in each of the workers, which works because build() and do_prework() are exported.
  • Change default value of overwrite to FALSE in load_basic_example().
  • Warn when overwriting an existing report.Rmd in load_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() and lightly_parallelize_atomic(). Now, processing happens faster, and only over the unique values of a vector.
  • Add a new storr namespace called imports to be used in is_imported(). That way, the whole object need not be read to clean() is. clean() is much faster and safer.

Reproducible random numbers, knitr awareness, more docs, minor bugfixes

17 Oct 21:45
Compare
Choose a tag to compare

Most critically of all, this release readies drake for the upcoming testthat version 2.0.0.

Predict runtimes, externalize caches/hashes

29 Sep 20:54
Compare
Choose a tag to compare

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

01 Sep 21:40
Compare
Choose a tag to compare

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

06 Aug 14:12
Compare
Choose a tag to compare

...so they render well on CRAN.

Interactive visualizations with plot_graph()!

04 Aug 19:25
Compare
Choose a tag to compare

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

09 May 21:44
Compare
Choose a tag to compare

This major release fixes some internal environment and scoping problems in versions 2.X.X. Most users will see no change. However, behavior will change in the edge cases described in issues #35, #36, #37, and #39, which is why this is a major version bump instead of a mere patch.

patch: packages and workflow plans

01 May 15:00
Compare
Choose a tag to compare
  • 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

14 Apr 12:49
Compare
Choose a tag to compare

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

31 Mar 19:04
Compare
Choose a tag to compare
  • 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.