# slider 0.3.2

* Removed usage of non-API `STRING_PTR()` (#209).

* R >=4.0.0 is now required, inline with tidyverse guidelines.

* Updated snapshot tests to use the latest version of cli.

# slider 0.3.1

* Fixed tests that failed under valgrind due to `NA` vs `NaN` peculiarities
  (#198).

* Bumped required versions of vctrs, cli, and rlang to their current CRAN
  versions.

* Bumped required R version to >= 3.6.0.

# slider 0.3.0

* Improved reported error calls and error messages throughout the package, and
  switched from glue to cli (#168, #188).

* Index (`.i`) types that aren't explicitly understood by vctrs are now handled
  slightly better (#182).

* The `slide_index_*()` and `hop_index_*()` families now use `vctrs::vec_rank()`
  internally to compute a dense rank, which should be a little faster than the
  previous home grown approach (#177).

* New `slider_plus()` and `slider_minus()` developer facing helpers that allow
  package authors to register custom double dispatch methods to override the
  default computation of `.i - .before` and `.i + .after` when generating index
  bounds internally. This is intended to allow the clock and almanac packages to
  register methods so their custom types can be used natively in slider (#91).

* Removed ellipsis in favor of using the equivalent functions in rlang (#185).

* Removed `R_forceAndCall()` fallback now that R >=3.4.0 is required (#172).

* Fixed `-Wstrict-prototypes` warnings as requested by CRAN (#173).

* Bumped minimal version of R to >=3.4.0 to align with tidyverse standards.

* Bumped minimal version of rlang to >=1.0.6 and vctrs to >=0.5.0 (#165, #174).

* Fixed redirecting URLs.

# slider 0.2.2

* Updated internal usage of `vec_order()` to prepare for a breaking change
  in vctrs (#153).

# slider 0.2.1

* Fixed a C alignment issue detected by CRAN's USBAN machine related to
  allocating vectors of `long double`.

* Fixed a test that relied too strongly on the size of the C type,
  `long double`, which can vary across platforms (#147).

* Fixed an out of sync vignette entry (#148).

# slider 0.2.0

* New family of very fast specialized sliding functions:

  - `slide_sum()`, `slide_index_sum()`: for rolling sums

  - `slide_mean()`, `slide_index_mean()`: for rolling averages

  - `slide_prod()`, `slide_index_prod()`: for rolling products

  - `slide_min()`, `slide_index_min()`: for rolling minimums

  - `slide_max()`, `slide_index_max()`: for rolling maximums

  - `slide_any()`, `slide_index_any()`: for rolling any

  - `slide_all()`, `slide_index_all()`: for rolling all

* The `slide_index_*()` family now allows `.before` and `.after` to be
  functions of 1 argument (the index) that compute the boundaries of the
  sliding window. This can be extremely useful when the default, which computes
  `.i - .before` and `.i + .after`, is not applicable or correct for your needs.
  One use case is to set `.before = ~.x %m-% months(1)` rather than
  `.before = months(1)` to perform a 1 month rolling window in a way that won't
  generate `NA` values on invalid dates (like 1 month before 2019-03-31) (#139).

* The `slide_index_*()` family has undergone some internal changes to make it
  more compatible with custom vctrs classes that could be provided as the
  index (`.i`), such as the date-time classes in the clock package (#133, #130).

* For the `slide_index_*()` family, it is now required that `.i - .before` and
  `.i + .after` be castable to `.i` by `vctrs::vec_cast()`. Similarly, for
  the `hop_index_*()` family, `.starts` and `.stops` must both be castable to
  `.i` (#132).

* New vignette, `vignette("tsibble")`, explaining how to transition from tsibble
  to slider (#128).

* `vignette("rowwise")` has been updated to use `cur_data()` from dplyr 1.0.0,
  which makes it significantly easier to do rolling operations on data frames
  (like rolling regressions) using slider in a dplyr pipeline.

# slider 0.1.5

* `slide_period()` and friends have slightly better handling of size zero
  input when `.complete = TRUE` (#111).

* Better error messages for `NA` input with `.before`, `.after`, `.step` and
  `.complete` have been added (#110).

* A few instances of possibly unsafe C protection usage have been fixed (#112).

* Tests have been updated to use only numeric values in the `vctrs::new_date()`
  constructor (#113).

# slider 0.1.4

* As a followup to a change in slider 0.1.3, edge cases with size zero input
  in `hop()` have also been fixed.

* C code has been refactored to be less reliant on vctrs internals.

# slider 0.1.3

* Updated to stay compatible with vctrs 0.3.0.

* A few edge cases with size zero input in the index functions have been fixed.

* The default for the `.names_to` argument of `*_dfr()` variants has been
  updated to `rlang::zap()` to match the default of the function it is passed
  on to, `vctrs::vec_rbind()`.

* All `*_vec()` variants now maintain size stability when auto-simplifying
  (i.e. when `.ptype = NULL`) (#78, #93).

* `hop()` and its variants no longer place the names of `.x` on the output.
  Because there is no _size_ guarantee on the output, the size of `.x` can
  be different than the size of the output, meaning that the names might not
  line up. This also affects `slide_period()`, which is implemented using
  a `hop()` variant (#75).

* With data frames containing row names, `slide()` and its variants now copy
  those row names onto the output. This is an implicit benefit from vctrs
  gaining better support for data frame row names.

# slider 0.1.2

* Updated to stay compatible with the latest version of vctrs.

# slider 0.1.1

* Fixed a "multiple definition" C issue when compiling with gcc10.

# slider 0.1.0

* Added a `NEWS.md` file to track changes to the package.
