Skip to content

Review guide: 9 green PRs ready to merge (quick wins take ~5 min)Β #21

Description

@toddr-bot

Overview

There are currently 9 open PRs covering all known issues in this repository. This issue serves as a review guide with a conflict-aware merge order.

🎯 Quick Wins β€” Start Here

These PRs take under 3 minutes to review and have zero risk:

PR What Size Risk
#24 Modernize CI matrix (drop yanked Docker images, add 5.34–5.40, add Windows) 1 file, +34/βˆ’12 None β€” CI only
#25 Three one-liner fixes: cpanfile dep, 3-arg open, URL casing 4 files, +39/βˆ’17 Trivial
#16 Fix eval "require $mod" code injection in digest-bench 3 files, +55/βˆ’18 Low β€” security fix in non-installed script

Suggested Merge Order

Some PRs modify the same files and will conflict if merged in the wrong order. The order below minimizes rebase friction β€” each PR applies cleanly when the ones above it are already merged.

Phase 1: Infrastructure (no conflicts with anything)

  1. ci: modernize CI matrix and add Windows testingΒ #24 β€” Modernize CI matrix and add Windows testing (1 file, trivial)
  2. fix: packaging and code hygiene fixesΒ #25 β€” Packaging: cpanfile fix, 3-arg open, URL casing (4 files, three one-liners)
  3. fix: prevent code injection in digest-benchΒ #16 β€” Fix code injection in digest-bench (3 files, straightforward)

Phase 2: Bug fixes

  1. fix: encode UTF-8 flagged strings to bytes in Digest->add()Β #11 β€” Fix broken UTF-8 string handling (issue Broken handling of unicode strings [rt.cpan.org #54369]Β #2) β€” modifies Digest.pm new() (5 files, +172/βˆ’16)
  2. fix: add AUTOLOAD DESTROY guard, document digest_file_ctxΒ #26 β€” AUTOLOAD DESTROY guard, modernize Digest::file, document digest_file_ctx (5 files, +65/βˆ’18)

Phase 3: Test coverage

  1. test: add edge case tests for Digest::base and fix b64digest arg forwardingΒ #22 β€” Fix b64digest arg forwarding + edge case tests β€” modifies Digest/base.pm (4 files, +234/βˆ’13)

Phase 4: Features (depend on earlier PRs)

  1. feat: add URL-safe base64 digest method (b64url_digest)Β #23 β€” URL-safe base64 (b64url_digest, RFC 4648) β€” conflicts with test: add edge case tests for Digest::base and fix b64digest arg forwardingΒ #22 and fix: add AUTOLOAD DESTROY guard, document digest_file_ctxΒ #26 if they haven't merged first. Touches base.pm, file.pm, t/base.t, t/file.t. (6 files, +104/βˆ’18)
  2. fix: Add encoding option to Digest->new() for charset normalizationΒ #10 β€” Encoding option for Digest->new() (issue character-sets [rt.cpan.org #80306]Β #3) β€” conflicts with fix: encode UTF-8 flagged strings to bytes in Digest->add()Β #11 on Digest.pm new(). (5 files, +277/βˆ’13)

Phase 5: Docs

  1. test: add dispatch tests and CLAUDE.mdΒ #19 β€” Add dispatch tests and CLAUDE.md (5 files, +194/βˆ’12)

Review Effort Summary

PR Files Lines Changed Review Time Category
#24 1 +34/βˆ’12 ~1 min CI
#25 4 +39/βˆ’17 ~2 min Packaging
#16 3 +55/βˆ’18 ~2 min Security
#26 5 +65/βˆ’18 ~5 min Bug fix
#23 6 +104/βˆ’18 ~5 min Feature
#11 5 +172/βˆ’16 ~10 min Bug fix
#19 5 +194/βˆ’12 ~10 min Tests
#22 4 +234/βˆ’13 ~10 min Tests + fix
#10 5 +277/βˆ’13 ~15 min Feature

Conflict Map

PRs that touch the same files (will need rebase if merged out of order):

Files PRs Notes
lib/Digest.pm new() #10, #11 Both modify the return path in new(). Merge #11 first.
lib/Digest/base.pm b64digest area #22, #23 #22 fixes forwarding, #23 adds adjacent method. Merge #22 first.
lib/Digest/file.pm exports + POD #23, #26 #26 modernizes @ISA→use base, #23 adds new export. Merge #26 first.
t/base.t #23, #25 #25 fixes open() call, #23 adds test. Low conflict risk.
t/file.t #23, #26 Both add tests. Merge #26 first.
MANIFEST #10, #11, #19, #22 All add entries. Trivial to resolve.

CI Status (2026-07-23)

PR Status Notes
#10 βœ… all checks passing
#11 βœ… all checks passing
#16 βœ… all checks passing
#19 βœ… all checks passing
#22 βœ… all checks passing
#23 βœ… all checks passing
#24 βœ… all checks passing
#25 βœ… all checks passing
#26 βœ… all checks passing

All PRs are mergeable (no conflicts with main).

Notes

Cross-repo cleanup (2026-05-26)

Duplicate PRs on upstream (gisle/digest) have been closed:


πŸ€– Updated by Kōan β€” added review effort estimates and quick-win recommendations (2026-07-23)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions