Revision history for Perl extension Crypt::RIPEMD160.

0.14 2026-04-23

  Maintenance:
    - Use GNU tar (gtar) on macOS when building the dist tarball to avoid
      PaxHeader/ entries that fail the CPANTS no_pax_headers kwalitee
      check. Falls back to system tar on non-macOS platforms. PR #66
    - Update MANIFEST. PR #66

0.13 2026-04-23

  Bug fixes:
    - Use SvPVbyte in XS add() so wide-character strings are handled
      consistently rather than relying on the caller's UTF-8 flag. PR #56
    - Add binmode to addfile() for cross-platform consistency on Windows. PR #57
    - Return $self from Perl-level add() and addfile() to enable method
      chaining at the Perl layer (XS already returned $self). PR #54
    - Zero MAC key material (key, k_ipad, k_opad) in DESTROY to reduce
      the window for key material leaking into freed memory. PR #62
    - Use dead-store-proof memset loop for zeroing sensitive memory so the
      compiler cannot optimise away the wipe. PR #50
    - Define PERL_NO_GET_CONTEXT in the XS file for correctness under
      threaded Perl builds. PR #60
    - Silence -Wall -Wextra compiler warnings in XS code. PR #49
    - Include t/03streaming.t in MANIFEST so it is shipped in CPAN
      distributions. PR #48

  Improvements:
    - Inherit from Digest::base to support the standard Perl Digest API:
      b64digest, add_bits, and loading via Digest->new('RIPEMD-160'). PR #58
    - Return $self from XS-level add() and reset() to allow method
      chaining: $ctx->reset->add($data)->digest(). PR #53
    - Delegate MAC addfile() to the inner RIPEMD-160 addfile() to avoid
      duplicating the read loop and binmode handling. PR #64

  Maintenance:
    - Add proper =head2 method sections to MAC.pm POD. PR #51
    - Add comprehensive MAC test suite covering HMAC correctness, reset,
      addfile, and long-key hashing. PR #55
    - Add streaming consistency tests verifying that single-call and
      multi-call add() produce identical digests. PR #46
    - Move X[] scratch buffer from the RIPEMD-160 state struct to the
      stack, reducing per-context memory usage. PR #52
    - Add #!include_default to MANIFEST.SKIP for robust exclusion of
      build artefacts. PR #59
    - Fix CI author-test failures on older Perls: install develop deps
      and skip tests for methods unavailable before Digest::base
      integration. PR #61
    - Narrow .gitignore *.c pattern to only the XS-generated C file. PR #63

0.12 2026-04-02

  Bug fixes:
    - Fix MAC reset() after mac()/hexmac() by preserving the key so the
      inner pad can be recomputed. PR #23
    - Prevent STRLEN-to-dword truncation for large inputs on 64-bit
      platforms in the XS add() method. PR #26
    - Croak on read errors in addfile() instead of silently truncating
      the hash input. GH #35, PR #35
    - Zero sensitive memory (hash state) on destroy and reset to avoid
      leaking intermediate digests. PR #39
    - Zero MDfinish stack buffer after final compression to prevent
      transient data from lingering on the stack. PR #44

  Improvements:
    - Add clone() method for copying mid-computation state, enabling
      efficient digest of data sharing a common prefix. PR #27
    - Simplify digest byte extraction and MAC reset internals. PR #36
    - Add const qualifiers to C function signatures and remove unused
      includes. PR #24

  Maintenance:
    - Add LICENSE file and =head1 LICENSE sections to module POD. PR #29
    - Add LICENSE section to MAC.pm POD and exclude .claude/ from dist.
      PR #37
    - Remove executable permission and shebang from Makefile.PL. PR #28
    - Modernize Makefile.PL metadata: add META_PROVIDES, test
      dependencies, and MIN_PERL_VERSION. PR #25, PR #33
    - Modernize misc/ scripts and clean up MANIFEST.SKIP. PR #34
    - Modernize README and clean cpanfile. PR #25
    - Add CONTRIBUTING.md. PR #31
    - Add SECURITY.md with vulnerability reporting contact. PR #32
    - Add AI_POLICY.md for AI policy.
    - Add CLAUDE.md with generated file warnings. PR #45
    - Add author tests for POD validation and coverage. PR #42
    - Add padding boundary test vectors. PR #43

0.11 2026-03-22

  Bug fixes:
    - Replace platform-dependent C typedefs (unsigned char, unsigned int)
      with C99 fixed-width types (uint8_t, uint32_t) from <stdint.h>.
      This eliminates the class of portability bug from 0.04_01 where
      dword was 8 bytes on 64-bit systems by guaranteeing exact widths
      at the type level. PR #22

  Maintenance:
    - Remove unused `word` (unsigned short) typedef from rmd160.h. PR #22
    - Fix cpanfile to reference XSLoader instead of replaced DynaLoader.
      PR #22

0.09 2026-03-20

  Bug fixes:
    - Fix stray semicolon in RMD160_DIGESTSIZE macro that would cause
      compilation failures if used in expressions. GH #9
    - Fix CI workflow to use supported Docker images, proper container
      format, and correct perl-versions action. GH #14, PR #15
    - Remove debug printf left in wrap_160.c. PR #11
    - Remove dead preprocessor conditionals and unused variable from
      wrap_160.c and wrap_160.h. PR #19
    - Fix rand bug, bareword filehandle, and stale print in t/01test.t.
      PR #18
    - Cast unsigned char* to const char* in newSVpv() call to silence
      -Wpointer-sign compiler warning on macOS/clang. GH #20, PR #21

  Improvements:
    - Modernize DynaLoader to XSLoader. PR #19
    - Correct POD examples in MAC.pm and RIPEMD160.pm for modern Perl
      practices. PR #8, PR #19
    - Remove unnecessary AutoLoader from MAC.pm @ISA. GH #6, PR #4, PR #7
    - Add use warnings to modules. PR #19
    - Add comprehensive method and edge case test suite (t/02methods.t).
      PR #13
    - Update META files to correct repository URLs. PR #8

  Maintenance:
    - Modernize GitHub Actions CI to current versions. PR #10
    - Remove stale .travis.yml and fix cpanfile. PR #12
    - Remove META.json and META.yml from git tracking.
    - Add .perltidyrc and update .gitignore.

0.07 Wed Oct 21 2020

  Bug fixes:
    - Rename internal C subroutine compress() to rmd160_compress() to avoid
      symbol conflict with libz on CentOS 8.

  Improvements:
    - Replace indirect object notation (new Crypt::RIPEMD160) with direct
      method calls (Crypt::RIPEMD160->new) in code and POD examples.
    - Drop unused Exporter and 'use vars' in favor of 'our' declarations.
    - Move bug tracking metadata from rt.cpan.org to GitHub Issues.

  Maintenance:
    - Move modules to standard lib/Crypt/RIPEMD160/ directory layout.
    - Add MANIFEST.SKIP file and update MANIFEST and .gitignore.
    - Add CI testing via GitHub Actions and Travis CI.

0.06 Tue June 9 2015
    - Fix for Compiler warnings about printf statement - Thanks flichtenheld

0.05 Mon April 10 2011
    - Release to CPAN without changes

0.04_01 Mon April 4 2011
    - Fix bug in Module for 64 bit systems where dword was undesirably an 8 byte not 4 byte integer.

--- Change log does not exist for 0.04 and prior