# Changelog

- 0.3.0 (2026-01-10)
  * The HMAC functions now produce a value of type MAC, which is a
    newtype over a ByteString. The 'Eq' instance for MAC compares values
    in constant time.

- 0.2.5 (2026-01-08)
  * We now check if the ARM cryptographic extensions are available, and,
    if so, use them to calculate hashes. If they're unavailable we
    simply use the pure implementation as a fallback. This yields about
    a 5x performance boost for 'hash' and 3.5x boost for 'hmac' (again,
    when available).

  * Allocation for both the 'hash' and 'hmac' functions has been reduced
    dramatically, mostly by optimising the padding internals, and is now
    constant with respect to input.

- 0.2.4 (2025-12-28)
  * Adds an 'llvm' build flag and tests with GHC 9.10.3.

- 0.2.3 (2025-01-21)
  * Improves padding handling for the strict bytestring case, yielding
    performance increases for both 'hash' and 'hmac'.

- 0.2.2 (2025-01-07)
  * Minor bytestring-handling optimisations.

- 0.2.1 (2024-10-13)
  * Adds an INLINE pragma to an internal step function.

  * 'hmac' no longer calls 'hmac_lazy', which has no practical effect
    other than to clean up profiling reports generated by GHC.

- 0.2.0 (2024-10-07)
  * 'hmac' and 'hmac_lazy' now hash long keys before computing a HMAC,
    instead of throwing an error, matching RFC 2104's suggested behaviour.

- 0.1.0 (2024-09-14)
  * Initial release, supporting SHA256 and HMAC-SHA256 on strict and lazy
    bytestrings.
