Fix jcpan compiler storage and fixed-length reads - #908
Merged
Conversation
Keep source-filtered subroutine locals fresh instead of recovering them from BEGIN/eval storage, and preserve fixed-length input record separator semantics when $/ is dynamically localized. This fixes Class::Std and Getopt::Param teardown behavior as well as DateTime::TimeZone::Tzfile fixed-length header reads. Generated with [Codex](https://openai.com/codex/) Co-Authored-By: Codex <codex@openai.com>
Restore the established evalBeginIds storage path for ordinary closure captures. The separate persistent declaration map caused file-scope lexicals captured by helper subs to arrive empty, aborting dozens of Perl core tests. Instead, use the variable collector to capture only lexicals referenced by each BEGIN block. This prevents stale source-filter symbol entries from making Class::Std subroutine locals persistent while preserving legitimate closure and generated eval captures. Generated with [Codex](https://openai.com/codex/) Co-Authored-By: Codex <codex@openai.com>
fglock
force-pushed
the
fix/jcpan-compiler-tooling-modules
branch
from
August 10, 2026 09:26
77874a7 to
436f32c
Compare
Give the subprocess-heavy Perl core croak test a 600-second minimum allowance while retaining larger caller-supplied timeouts. Keep ordinary tests on the configured base timeout and document the distinction in the runner output and help. Generated with [Codex](https://developers.openai.com/codex/) Co-Authored-By: Codex <codex@openai.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
BEGINcapture to lexicals actually referenced by the block, preventing stale source-filter symbols from making Class::Std subroutine locals persistent$/ = \Nis dynamically localized, fixing DateTime::TimeZone::TzfileVerification
make— PASSe22f32805) comparison confirms all five residual count differences are pre-existing./jcpan -t Getopt::Param— PASS, including Class::Std 275 tests and Getopt::Param 45 tests./jcpan -t DateTime::TimeZone::Tzfile— PASS, 1926 testsPlack::Runner
Plack::Runner's remaining failures are socket bind/listen failures caused by the execution environment. The equivalent minimal bind also fails under system Perl with
Operation not permitted, so these are outside PerlOnJava compiler/tooling behavior.