Add portable replacement tests for excluded XS::APItest bigmem stack tests
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 45/100
Research direction
The issue requires adding new tests to src/test/resources/unit. First, examine the excluded upstream tests perl5_t/t/bigmem/stack.t and perl5_t/t/bigmem/stack_over.t to understand the portable behaviors they represent. Then, design new Perl-level tests that validate list-context propagation, argument counts, list operations, and bounded stack behavior without XS::APItest. Ensure tests pass under system Perl, the JVM backend, and the interpreter backend. The acceptance criteria include running within CI limits and documenting the exclusions.
Written by the indexing model from the issue text.
Description
Summary
Add PerlOnJava-owned replacement coverage for the portable behavior represented
by the Perl core tests:
perl5_t/t/bigmem/stack.tperl5_t/t/bigmem/stack_over.t
Those upstream tests are now excluded from dev/tools/perl_test_runner.pl
because they require the native XS::APItest extension and directly test
Perl 5 C-level value-stack/MARK implementation details. They also require
multi-gigabyte allocations that are unsuitable for the PerlOnJava test suite.
The exclusion is intentional, but it must not remove all coverage of the
observable list, argument-stack, and bounded overflow behavior that is
portable across Perl implementations.
Current upstream-test classification
bigmem/stack.t depends on XS::APItest functions including wide_marks,
xs_items, eval_sv, and call_sv, and creates arrays with indices beyond
0x8000_0000. It exercises native mark-stack offsets, XS argument counts,
large list operations, split, repeat, tie, and related C implementation paths.
bigmem/stack_over.t also depends on XS::APItest and specifically checks
32-bit MARK behavior on a 64-bit native Perl build while allocating an array
with a 2-billion-element index.
These implementation-specific assertions cannot be ported verbatim to the
JVM or interpreter backend.
Proposed replacement coverage
Add focused tests under src/test/resources/unit for Perl-level behavior that
does not depend on XS, native pointers, or enormous allocations. At minimum,
cover:
- List-context propagation through nested calls and expressions.
- Correct item counts for bounded list construction, list assignment, and
list-returning functions. - List slicing and negative indexes after a list-producing call.
split,join,grep, and repetition with bounded inputs.- Argument counts observed by ordinary Perl subs through
@_, including
nested calls and calls returning multiple values. evalandrequirepaths that occur while a list/argument stack is active.- Bounded recursive or deeply nested calls that verify the runtime reports a
controlled stack/resource failure rather than hanging or corrupting values.
Use sizes large enough to expose indexing and context bugs but small enough for
ordinary CI machines. Do not reproduce the 2-billion-element allocation or the
60/17 GB memory requirements.
Test requirements
- Validate every new Perl-level test with system Perl first.
- Require success on both JVM and interpreter backends.
- Keep the tests deterministic and independent of
XS::APItest. - Do not weaken or modify the upstream Perl core tests.
- Preserve the runner exclusions for the two native-only upstream files.
- Add comments documenting which native
XS::APItestassertions are
intentionally not represented by the portable replacements.
Acceptance criteria
- A project-owned test suite covers the portable semantics listed above.
- The suite passes under system Perl, PerlOnJava JVM, and PerlOnJava
interpreter execution. - The tests run within normal CI memory and time limits.
- The compatibility documentation or test-runner notes explain why the two
upstream XS tests remain excluded.
- Dominant language
- Perl
- Stars
- 64
- Forks
- 6
- Avg merge
- 5h 11m
- Merged PRs (30d)
- 168
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from fglock/PerlOnJava
-
area:cpan-port area:unicode bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
fglock/PerlOnJava#1341 ·
-
area:backend area:runtime enhancement
Difficulty 4/5 3-5 days Newbie friendliness 45/100
fglock/PerlOnJava#1494 ·
-
area:parser bug
Difficulty 3/5 1-2 days Newbie friendliness 65/100
fglock/PerlOnJava#1491 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
fglock/PerlOnJava#1487 ·
-
area:backend area:cpan-port area:runtime bug
Difficulty 4/5 3-5 days Newbie friendliness 45/100
fglock/PerlOnJava#1482 · 1 comment ·
All issues in fglock/PerlOnJava
Similar issues
-
documentation Needs Triage
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
objectionary/eolang.sty#159 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
corazawaf/coraza-nginx#140 · 4 comments ·
-
1.severity: security
Difficulty 2/5 1-3 hours Newbie friendliness 68/100