Skip to content

fix: unblock jcpan -t Reply (PerlIO::utf8_strict stub)#636

Merged
fglock merged 1 commit intomasterfrom
fix/jcpan-reply-deps
Apr 30, 2026
Merged

fix: unblock jcpan -t Reply (PerlIO::utf8_strict stub)#636
fglock merged 1 commit intomasterfrom
fix/jcpan-reply-deps

Conversation

@fglock
Copy link
Copy Markdown
Owner

@fglock fglock commented Apr 30, 2026

Summary

./jcpan -t Reply failed because PerlIO::utf8_strict (XS) has no Java implementation. It is pulled in by Mixin::Linewise::Readers, which Config::INI::Reader (and therefore Config::INI::Reader::Ordered, a direct prereq of Reply) requires at compile time. Without it, Config::INI::Reader::Ordered's own test suite and most of Reply's t/00-compile.t fail to load.

Changes

  • Add src/main/perl/lib/PerlIO/utf8_strict.pm as a load-only stub.
  • Treat :utf8_strict as an alias for :utf8 in LayeredIOHandle.addLayer — the JVM's UTF-8 CharsetDecoder already rejects malformed input, which matches the XS module's "strict" semantics.

Not in this PR

Reply::Plugin::LexicalPersistence still fails its compile test because it uses PadWalker (XS lexical-pad introspection). PadWalker's API cannot be meaningfully emulated without a real Perl-style pad model, so a stub would be misleading. Left out intentionally — only that one subtest of t/00-compile.t remains failing.

Test plan

  • make — full unit test suite passes.
  • ./jcpan -t ReplyConfig::INI::Reader::Ordered 0.022 t/reader-ordered.t passes; Reply 0.42 t/00-compile.t goes from 5 failures down to 1 (the PadWalker one above).

Generated with Devin

`./jcpan -t Reply` failed because PerlIO::utf8_strict (XS) has no Java
implementation. It is pulled in by Mixin::Linewise::Readers, which
Config::INI::Reader (and therefore Config::INI::Reader::Ordered, a
direct prereq of Reply) requires at compile time. Without it,
Config::INI::Reader::Ordered's own test suite and Reply's
t/00-compile.t both fail to load most of the Reply tree.

Changes:

  * Add `src/main/perl/lib/PerlIO/utf8_strict.pm` as a load-only stub.
  * Treat `:utf8_strict` as an alias for `:utf8` in
    `LayeredIOHandle.addLayer` — the JVM's UTF-8 CharsetDecoder already
    rejects malformed input, which matches the XS module's "strict"
    semantics.

After this change:

  * `Config::INI::Reader::Ordered` 0.022 — t/reader-ordered.t passes.
  * `Reply` 0.42 — 23/24 of t/00-compile.t pass; the only remaining
    failure is `Reply/Plugin/LexicalPersistence.pm loaded ok`, which
    requires PadWalker (XS lexical-pad introspection). Stubbing
    PadWalker is left out of this PR because the module's API cannot
    be meaningfully emulated without a real Perl-style pad model.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@fglock fglock force-pushed the fix/jcpan-reply-deps branch from ca403af to 09ecb8b Compare April 30, 2026 10:52
@fglock fglock changed the title fix: unblock jcpan -t Reply (PerlIO::utf8_strict + PadWalker stubs) fix: unblock jcpan -t Reply (PerlIO::utf8_strict stub) Apr 30, 2026
@fglock fglock merged commit 66bda46 into master Apr 30, 2026
2 checks passed
@fglock fglock deleted the fix/jcpan-reply-deps branch April 30, 2026 10:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant