|
| 1 | +# jcpan Compiler and Tooling Batch |
| 2 | + |
| 3 | +## Goal |
| 4 | + |
| 5 | +Remove reusable compiler/runtime/tooling blockers found while testing: |
| 6 | + |
| 7 | +- `Dist::Zilla::Plugin::Manifest::Read` |
| 8 | +- `Plack::App::Proxy::Selective` |
| 9 | +- `Text::MetaText` |
| 10 | +- `Test::Class::Filter::Tags` |
| 11 | +- `Catmandu::Exporter::HTML` |
| 12 | +- `Map::Tube::Sydney` |
| 13 | +- `App::SQLiteUtils` |
| 14 | +- `Char::Latin2` |
| 15 | + |
| 16 | +Distributions which also fail under system Perl are recorded and excluded from |
| 17 | +PerlOnJava-specific fixes. |
| 18 | + |
| 19 | +## Progress Tracking |
| 20 | + |
| 21 | +### Current Status: implementation complete (2026-08-16) |
| 22 | + |
| 23 | +### Completed Phases |
| 24 | + |
| 25 | +- [x] Phase 1: System-Perl eligibility baseline (2026-08-15) |
| 26 | + - `Dist::Zilla::Plugin::Manifest::Read` passes system Perl. |
| 27 | + - `Plack::App::Proxy::Selective`, `Text::MetaText`, |
| 28 | + `Test::Class::Filter::Tags`, `Catmandu::Exporter::HTML`, and |
| 29 | + `Map::Tube::Sydney` fail in system Perl or in their prerequisite closure and |
| 30 | + require no PerlOnJava-specific distribution workaround. |
| 31 | + - `App::SQLiteUtils` is excluded because its required system-Perl closure |
| 32 | + fails in Data::Sah/lib::filter and cannot provide a valid comparison. |
| 33 | + - `Char::Latin2` passes system Perl (210 files / 5,725 tests). |
| 34 | + |
| 35 | +- [x] Phase 2: Shared Dist::Zilla blockers (2026-08-15) |
| 36 | + - Added structural translation for supported `(*PRUNE)` regex forms. |
| 37 | + - Made the Unix and Windows launchers cache and reuse an absolute Java path, |
| 38 | + allowing nested `$^X` calls after build tools replace `PATH`. |
| 39 | + - Preserved Perl's `((), @array)` iteration-list snapshot idiom in the parser |
| 40 | + and both execution backends. |
| 41 | + - Made direct array iteration follow the live array length when the loop body |
| 42 | + mutates its structure. |
| 43 | + - `Dist::Zilla::Plugin::Manifest::Read` now passes 2 files / 8 tests with its |
| 44 | + complete CPAN prerequisite path. |
| 45 | + - Files: `jperl`, `jperl.bat`, `RegexPreprocessor.java`, `ParseInfix.java`, |
| 46 | + `EmitLiteral.java`, `BytecodeCompiler.java`, `InlineOpcodeHandler.java`, |
| 47 | + `RuntimeArray.java`, `RuntimeList.java`, and focused tests. |
| 48 | + |
| 49 | +- [x] Phase 3: Char::Latin2 compatibility and final validation (2026-08-16) |
| 50 | + - Reused the established Char::Latin7/Char::Windows1258 compatibility design |
| 51 | + for the historical `jperl` executable-name collision and Perl regex-code |
| 52 | + source transformer. |
| 53 | + - Registered the generic patch through CPAN bootstrap configuration; no |
| 54 | + installed-user preference edits are required. |
| 55 | + - `Char::Latin2` passes PerlOnJava (210 files / 5,725 tests). |
| 56 | + - A clean `jcpan -t Dist::Zilla::Plugin::Manifest::Read` passes (2 files / 8 |
| 57 | + tests) and exits successfully. |
| 58 | + - Full `make` passes. |
| 59 | + |
| 60 | +### Next Steps |
| 61 | + |
| 62 | +1. Monitor pull-request CI. |
| 63 | +2. Merge after review when CI is green. |
| 64 | + |
| 65 | +### Open Questions |
| 66 | + |
| 67 | +- None. |
| 68 | + |
| 69 | +## Related Skills and Documents |
| 70 | + |
| 71 | +- `.agents/skills/debug-perlonjava/SKILL.md` |
| 72 | +- `AGENTS.md` |
0 commit comments