Skip to content

Preserve named typeglob stringification in package stash values #1927

Closed

Description

@fglock

Summary

Carp::Notify 1.13's export regression tests show that typeglobs read back from a package symbol table lose their names when stringified on PerlOnJava. This is a pure-Perl compatibility regression.

CPAN evidence

  • CPAN random-tester run: 20261029-123650-2402
  • Previous passing run: 2026-10-07 at commit 66b868f89
  • System Perl 5.42.2: all 75 tests pass.
  • PerlOnJava: 68/75 assertions pass; 7 fail in t/00_regression.t.
  • Each failing assertion compares a package symbol-table hash after use Carp::Notify and gets *null for the exported explode glob where Perl expects the fully qualified name (for example, *t::Carp::Notify::a::explode). The same mismatch appears for packages a through g.
  • The distribution is pure Perl; no XS, external service, or platform prerequisite is involved.

The other assertions in t/00_regression.t pass, including checks that the exported code references are the expected functions. The observed failure is specifically the typeglob value exposed through the package stash hash.

Related work

Related typeglob and symbol-table work is tracked in #1119, but that issue does not document this typeglob stringification failure. Please check for overlap while investigating the root cause.

Acceptance criteria

  • Add a focused project-owned regression that reads exported glob values from a package stash and compares their stringification with system Perl.
  • Validate the regression with standard Perl first.
  • Make the focused test pass on JVM and interpreter backends.
  • Rerun Carp::Notify 1.13's unchanged upstream suite on both PerlOnJava backends.

Activity

  1. added
    bugSomething isn't working
    area:runtimeCore Perl runtime semantics
    area:cpan-portCPAN compatibility ports and providers
    on Oct 29, 2026
  2. fglock commented on Oct 29, 2026

    @fglock
    OwnerAuthor

    State: complete
    Agent/session: codex-20261029-carp-notify-glob
    Scope: #1927, preserve typeglob names when package stash entries are copied; permanent regression, runtime fix, changelog, validation.
    Work: PR #1928 merged into master as d76b95e4093b24d9af782a69b2619a52d0b5ae6c from tested head 36006093557016bee8943d68d0c72eac6ebb392e.
    Checkpoint: 2026-10-30; RuntimeStash.snapshotStashEntry now retains source display-name metadata on detached copied globs while detached slot lookup remains independent. The focused regression compares stringification of a copied package glob and passes under system Perl, JVM, and interpreter. The unchanged Carp::Notify 1.13 t/00_regression.t passed on both PerlOnJava backends (75 tests, one upstream skip). op/pack.t passed through test 14726 on both backends after rebasing onto the checksum fix in master. nice -n 19 make and nice -n 19 make check-links passed on the resolved current-master candidate. GitHub CI passed on Windows and Ubuntu for the merged PR head.
    Blocked by: none.
    Next: none; issue closed automatically when PR #1928 merged.

  3. added 2 commits that reference this issue on Oct 29, 2026
    af4d7f1
    3600609
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:cpan-portCPAN compatibility ports and providersarea:runtimeCore Perl runtime semanticsbugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions