Skip to content

Releases: mihaiconstantin/parabar

parabar v1.1.1

05 Feb 21:56
52234ba
Compare
Choose a tag to compare

What's Changed

Added

  • Add tests for progress tracking context when executed tasks throw an error. In relation to #44.

Changed

  • Update action versions in GitHub workflows.

Fixed

  • Fix hanging progress bar on errors in the ProgressTrackingContext.R class. Closes #44.
  • Remove duplicated lines in UserApiConsumer class. Closes #41.
  • Fix indentation in UML design diagram. Closes #45.
  • Add missing apply operation to README documentation.

Full Changelog: v1.1.0...v1.1.1

parabar v1.1.0

07 May 09:52
949e191
Compare
Choose a tag to compare

What's Changed

Added

  • Update implementations of Service$apply operation for Backend classes to validate the provided margin argument before running the parallel operation.
  • Add helper Helper$check_array_margins to validate the margins provided to the Service$apply operation.
  • Add exception Exception$array_margins_not_compatible for using improper margins in the Service$apply operation.
  • Add exception Exception$primitive_as_task_not_allowed for trying to decorate primitive functions with progress tracking in the ProgressTrackingContext class.
  • Add helper Helper$is_of_class to check if an object is of a given class.
  • Add optional arguments to the get_output operation of SyncBackend for consistency.
  • Add more tests to improve coverage.
  • Add implementation for Service$lapply and Service$apply operations for all classes that implement the Service interface.
  • Add par_lapply and par_apply functions to the user API. These functions can be used to run tasks in parallel akin to parallel::parLapply and parallel::parApply, respectively. Closes #30.
  • Add UserApiConsumer R6 class that provides an opinionated wrapper around the developer API of the parabar package. All parallel operations (e.g., par_sapply and par_lapply) follow more or less the same pattern. The UserApiConsumer encapsulates this pattern and makes it easier to extend parabar with new parallel functions (e.g., par_apply) while avoiding code duplication. The UserApiConsumer class can also be used as a standalone class for parallel operations, however, its primary purpose is to be used by the parallel task execution functions in the user API.

Changed

  • Force early evaluation for the x argument of task execution functions in ProgressTrackingContext class.
  • Update the log file for progress tracking to include parabar in the file name.
  • Disable warnings for file.create in ProgressTrackingContext class. This warning is superfluous since the code handles creation failures.
  • Refactor test helpers to avoid code duplication.
  • Update par_sapply to use the UserApiConsumer class.
  • Update the developer API R6 classes to implement the lapply parallel operation.

Fixed

  • Ensure task execution errors are propagated to the main session in AsyncBackend. Closes #35.
  • Fixed the rendering of CC BY 4.0 license icons in README.md for the package website.
  • Update .decorate method of ProgressTrackingContext to be more flexible. More specifically, the method will now throw when primitive functions are provided for decoration. The method can now handle both inline functions (i.e., function(x) x) and functions that have a body defined in terms of compound expressions (i.e., function(x) { x }). Closes #32.
  • Fix the export operation in the SyncBackend and Context classes to fall back to the parent environment if the argument environment is not provided.

Full Changelog: v1.0.3...v1.1.0

parabar v1.0.3

24 Apr 06:17
Compare
Choose a tag to compare

Fixed

  • Fixed moved URL in package NEWS.md per CRAN request.

Full Changelog: v1.0.2...v1.0.3

parabar v1.0.2

23 Apr 09:09
Compare
Choose a tag to compare

Fixed

  • Fixed URLs in package documentation per CRAN request.

Full Changelog: v1.0.1...v1.0.2

parabar v1.0.1

23 Apr 08:40
Compare
Choose a tag to compare

Fixed

  • Update logo version from v0.x.x to v1.x.x.

Full Changelog: v1.0.0...v1.0.1

parabar v1.0.0

23 Apr 08:21
Compare
Choose a tag to compare

What's Changed

Added

  • Add CC BY 4.0 license for package documentation, vignettes, and website content.
  • Add code coverage GitHub workflow via codecov and badge in README.
  • Add tests for end-user API and developer API.
  • Add vignette comparison.Rmd to compare parabar to the pbapply package, and provide rough benchmarks. The comparison.Rmd vignette is locally build from the comparison.Rmd.orig file (i.e., see this resource for more information).
  • Add active biding Options$progress_log_path to handle generation of temporary files for tracking the execution progress of tasks ran in parallel. Using a custom path (e.g., for debugging) is also possible by setting this active binding to a desired path.

Changed

  • Refactor Specification for testing purposes.
  • Replace \dontrun{} statements in examples with try() calls.
  • Update example for Options class to feature the progress_log_path active binding.
  • Update progress logging injection approach in .decorate method of ProgressTrackingContext to use bquote instead of substitute.
  • Breaking. Rename class ProgressDecorator to ProgressTrackingContext to be more consistent with the idea of backends that run in contexts.
  • Add ... optional arguments to signature of get_output method in Service interface.
  • Update private method .make_log of ProgressDecorator to use the progress_log_path option.
  • Update UML diagram to include missing classes and changed methods. Also updated the corresponding diagram figure in the package documentation.

Fixed

  • Update Specification to prevent incompatible cluster types (e.g., FORK) on Windows platforms. For such cases, a warning is issues and the cluster type defaults to PSOCK.
  • Ensure make_logo can be ran on all platforms.

Full Changelog: v0.10.2...v1.0.0

parabar v0.10.2

07 Mar 17:26
dc622b7
Compare
Choose a tag to compare

What's Changed

Changed

  • Update README to add CRAN installation instructions and new badges.

Fixed

  • Corrected expression for all files and folders in `.Rbuildignore.

Full Changelog: v0.10.1...v0.10.2

parabar v0.10.1

27 Feb 19:16
2e06f5e
Compare
Choose a tag to compare

What's Changed

Changed

  • Initially removed \dontrun{} from make_logo function examples as per CRAN request in commit 87678fe. However, this results in the examples failing the R-CMD-check workflow. Reverted the change in commit a9d11ac.
  • Update version for constant LOGO from v1.x.x to v0.x.x.

Fixed

  • Add missing environment in examples for SyncBackend class.

Full Changelog: v0.10.0...v0.10.1

parabar v0.10.0

27 Feb 11:42
Compare
Choose a tag to compare

What's Changed

Added

  • Add new exported wrappers to the pkgdown reference section.
  • Add several exported wrappers to the user API:
    • clear: to clean a provided backend instance.
    • export: to export variables from a given environment to the .GlobalEnv of the backend instance.
    • peek: to list the variables names available on the backend instance.
    • evaluate: to evaluate arbitrary expressions on the backend instance.
  • Add type checks for the exported functions (i.e., the user API).
  • Add helper method for checking and validating the type of an object. The Helper$check_object_type method checks if the type of an object matches an expected type. If that is not the case, the helper throws an error (i.e., Exception$type_not_assignable).

Changed

  • Add .scss styles to override the table column width for the exported wrappers table in the pkgdown website.
  • Update README and package documentation to mention new exported wrappers.
  • Update the order of topics for the website reference section generated via pkgdown.
  • Update roxygen2 @examples for exported wrappers. The code for the examples is located in the documentation for the start_backend function. All other exported wrappers (i.e., clear, export, peek, evaluate, and par_sapply) inherit the @examples section from start_backend.
  • Update references in @seealso documentation sections.
  • Change backend argument of par_sapply to backend = NULL. This implies, that par_sapply without a backend behaves identically to base::sapply.

Fixed

  • Update export method to use the .GlobalEnv as fallback when exporting variables.

Full Changelog: v0.9.4...v0.10.0

parabar v0.9.4

23 Feb 19:46
20e096c
Compare
Choose a tag to compare

What's Changed

Added

  • Add custom styles to extra.scss to improve the documentation website.
  • Add S3 print method for the LOGO object.

Changed

  • Improve documentation for exported objects.
  • Merge documentations of get_option, set_option, and set_default_options.
  • Improved README. More specifically, added a description for Service interface methods and enabled documentation linking (i.e., via ?) for pkgdown website.

Fixed

  • Add missing export for Options class.
  • Ensure the examples in ProgressBar use wait = TRUE when fetching the output.
  • Fix bug in the evaluate backend operation. The expression passed to evaluate was not correctly passed down the function chain to parallel::clusterCall. See this question on StackOverflow for clarifications. Closes #9.

Full Changelog: v0.9.3...v0.9.4