# rslurm 0.6.1

This is a patch release to initiate automatic generation of DOIs by Zenodo with each future release.

## New features and fixes

* Argument `job_array_task_limit` included in `slurm_*()` functions to 
allow the user to set `JobArrayTaskLimit`
([#70](https://github.com/SESYNC-ci/rslurm/issues/70)).

* `get_job_status()` now checks whether `slurm_*.out` files exist
before attempting to open them, avoiding an error
([#72](https://github.com/SESYNC-ci/rslurm/issues/72)).

# rslurm 0.6.0

## New features and fixes

* New function `slurm_map()` with similar syntax to `lapply()`
([#48](https://github.com/SESYNC-ci/rslurm/pull/48)).

* Better handling of additional arguments to `f` in `slurm_apply()`, and
of how R objects are made available to the Slurm jobs
([#48](https://github.com/SESYNC-ci/rslurm/pull/48)).

* Slurm jobID added to `slurm_job` objects
([#55](https://github.com/SESYNC-ci/rslurm/pull/55)).

* `processes_per_node` argument added to support hyperthreading
([#57](https://github.com/SESYNC-ci/rslurm/pull/57)).

* `get_slurm_out())` is now compatible with partitions that cannot
accept interactive jobs and with newer releases of Slurm,
though there is a potential incompatibility with versions of Slurm older than 16.05.0, 
which was released on May 2016
([#65](https://github.com/SESYNC-ci/rslurm/pull/65)).

* Miscellaneous minor bug fixes 
([#49](https://github.com/SESYNC-ci/rslurm/pull/49),
[#51](https://github.com/SESYNC-ci/rslurm/pull/51),
[#53](https://github.com/SESYNC-ci/rslurm/issues/53)).

# rslurm 0.5.0

### New features and fixes

* Improved status with `get_job_status`, deprecating `print_job_status` 
([#37](https://github.com/SESYNC-ci/rslurm/pull/37)).

* Use `mclapply` within `get_slurm_out` to gather results 
([#30](https://github.com/SESYNC-ci/rslurm/pull/30)).

* Allow user to provide custom .R and .sh templates 
([#47](https://github.com/SESYNC-ci/rslurm/pull/47)).

* Allow user to specify path to `Rscript` ([#45](https://github.com/sesync-ci/rslurm/pull/45)) 
and number of CPUS per task ([#36](https://github.com/SESYNC-ci/rslurm/pull/36)).

* Allow user to disable core prescheduling if tasks have high variance in 
completion time ([816b40e](https://github.com/SESYNC-ci/rslurm/commit/816b40e)).


# rslurm 0.4.0

### New features and fixes

* Pass (serialized) functions to Slurm nodes without stringifying.

* Save `add_objects` objects from correct environment.

* Package tests evaluate on a cluster when available.

* Include reverse dependency check in release process.

### Reversions

* README now separate from package documentation.

* Vignette can be built on CRAN tests again (no slurm submissions).

* Returned to `parallel::mcmapply`, without SIMPLIFY, to prevent
`mc.cores` error when checking on Windows.

# rslurm 0.3.3

### New features and fixes

* Create README from R/slurm.R.

# rslurm 0.3.2

### New features and fixes

* `wait` argument adds option to `slurm_apply` and `slurm_call` to
block the calling script until the submitted job completes. This
option can be used to allow immediate processing of a submitted
job's output ([#2](https://github.com/SESYNC-ci/rslurm/pull/2)).

* Use ".RDS" file extension, rather than ".RData", for
serialized objects ([#4](https://github.com/SESYNC-ci/rslurm/pull/4)).

* Minor bug fixes ([#4](https://github.com/SESYNC-ci/rslurm/pull/4)).


# rslurm 0.3.1

### New features and fixes

* Minor bug fix: specify full path of 'Rscript' when running batch scripts.


# rslurm 0.3.0

*First version on CRAN*

### New features and fixes

* Added a `submit` argument to `slurm_apply` and `slurm_call`. If `submit = FALSE`,
the submission scripts are created but not run. This is useful if the files need
to be transferred from a local machine to the cluster and run at a later time.

* Added new optional arguments to `slurm_apply` and `slurm_call`, allowing users to give
informative names to SLURM jobs (`jobname`) and set any options understood by
`sbatch` (`slurm_options`).

* The `data_file` argument to `slurm_apply` and `slurm_call` is replaced with 
`add_objects`, which accepts a vector of R object names from the active workspace
and automatically saves them in a .RData file to be loaded on each node.

* `slurm_apply` and `slurm_call` now generate R and Bash scripts through
[whisker](https://github.com/edwindj/whisker) templates. Advanced users may want
to edit those templates in the `templates` folder of the installed R package 
(e.g. to set default *SBATCH* options in `submit.sh`).

* Files generated by the package (scripts, data files and output) are now saved
in a subfolder named `_rslurm_[jobname]` in the current working directory.

* Minor updates, including reformatting the output of `print_job_status` and
removing this package's dependency on `stringr`.


# rslurm 0.2.0

*2015-11-23*

### New features and fixes

* Changed the `slurm_apply` function to use `parallel::mcMap` instead of `mcmapply`, 
which fixes a bug where list outputs (i.e. each function call returns a list) 
would be collapsed in a single list (rather than returned as a list of lists).

* Changed the interface so that the output type (table or raw) is now an argument
of `get_slurm_out` rather than of `slurm_apply`, and defaults to `raw`.

* Added `cpus_per_node` argument to `slurm_apply`, indicating the number of 
parallel processes to be run on each node.


# rslurm 0.1.3

*2015-07-13*

### New features and fixes

* Added the `slurm_call` function, which submits a single function evaluation
on the cluster, with syntax similar to the base function `do.call`.

* `get_slurm_out` can now process the output even if some files are missing,
in which case it issues a warning.


# rslurm 0.1.2

*2015-06-29*

### New features and fixes

* Added the optional argument `pkgs` to `slurm_apply`, indicating which packages
should be loaded on each node (by default, all packages currently attached to
the user's R session).


# rslurm 0.1.1

*2015-06-24*

### New features and fixes

* Added the optional argument `output` to `slurm_apply`, which can take the 
value `table` (each function evaluation returns a row, output is a data frame) or
`raw` (each function evaluation returns an arbitrary R object, output is a list).

* Fixed a bug in the chunk size calculation for `slurm_apply`. 


# rslurm 0.1.0

*2015-06-16*

### Initial release

* First version of the package released on GitHub.
