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)
ci: modernize CI matrix and add Windows testingΒ #24 β Modernize CI matrix and add Windows testing (1 file, trivial)
fix: packaging and code hygiene fixesΒ #25 β Packaging: cpanfile fix, 3-arg open, URL casing (4 files, three one-liners)
fix: prevent code injection in digest-benchΒ #16 β Fix code injection in digest-bench (3 files, straightforward)
Phase 2: Bug fixes
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)
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
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)
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)
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
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)
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:
eval "require $mod"code injection in digest-benchSuggested 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)
Phase 2: Bug fixes
Digest.pm new()(5 files, +172/β16)digest_file_ctx(5 files, +65/β18)Phase 3: Test coverage
b64digestarg forwarding + edge case tests β modifiesDigest/base.pm(4 files, +234/β13)Phase 4: Features (depend on earlier PRs)
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. Touchesbase.pm,file.pm,t/base.t,t/file.t. (6 files, +104/β18)Digest->new()(issue character-sets [rt.cpan.org #80306]Β #3) β conflicts with fix: encode UTF-8 flagged strings to bytes in Digest->add()Β #11 onDigest.pm new(). (5 files, +277/β13)Phase 5: Docs
Review Effort Summary
Conflict Map
PRs that touch the same files (will need rebase if merged out of order):
lib/Digest.pmnew()new(). Merge #11 first.lib/Digest/base.pmb64digest arealib/Digest/file.pmexports + POD@ISAβuse base, #23 adds new export. Merge #26 first.t/base.topen()call, #23 adds test. Low conflict risk.t/file.tMANIFESTCI Status (2026-07-23)
All PRs are mergeable (no conflicts with
main).Notes
main(v1.20 release).Cross-repo cleanup (2026-05-26)
Duplicate PRs on upstream (gisle/digest) have been closed:
CVE-2016-1238: Digest may load an optional module from the current directory [rt.cpan.org #116512]Β #5β fix: prevent code injection in digest-benchΒ #16,uses barewords for file handles. we should fix this.Β #8β feat: add URL-safe base64 digest method (b64url_digest)Β #23,Missing version info for module 'Digest'Β #9β test: add edge case tests for Digest::base and fix b64digest arg forwardingΒ #22,fix: Add encoding option to Digest->new() for charset normalizationΒ #10β ci: modernize CI matrix and add Windows testingΒ #24,fix: use 3-arg open in t/base.tΒ #13β fix: add AUTOLOAD DESTROY guard, document digest_file_ctxΒ #26π€ Updated by KΕan β added review effort estimates and quick-win recommendations (2026-07-23)