Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Package stash iteration hides named subs from runtime traversal

Offen
#1,700 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
java, perl
Bereich
backend, compilers

Rechercherichtung

The bug is in PerlOnJava's stash iteration, so start with the code that implements %{*{"::"}} and per-package stash hashes, checking whether named subroutine CODE slots are exposed. Reproduce with the four-line Perl script in the issue, expecting found=Bar1::bar. Done means that script prints the expected output and a focused regression test for enumerating a declared package sub passes on both JVM and interpreter backends.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

area:runtime bug

Root cause

Aspect 1.04 discovers statically matched subs in Aspect::Pointcut::match_all by iterating package stashes (each %{*{"::"}} and then each package stash) and checking defined *ENTRY{CODE}. PerlOnJava's stash iteration does not expose named subroutine entries through that traversal: with Bar1::bar declared, Aspect::Pointcut::Call->new('Bar1::bar')->match_all prints Bar1::bar on system Perl but an empty list on PerlOnJava. As a result, Aspect installs no advice wrapper for the target; before, after, and around advice never run. The same behavior occurs on both JVM and interpreter backends.

Reproducer

use strict;
use Aspect;
package Bar1;
sub bar { 'value' }
package main;
my $p = Aspect::Pointcut::Call->new('Bar1::bar');
print 'found=', join(',', $p->match_all), "\n";

Expected: found=Bar1::bar

Actual on PerlOnJava: found=

Evidence

  • Distribution: Aspect 1.04, CPAN run 20261008-181412-1954.
  • System Perl 5.42.2: full upstream suite passed, 28 files / 873 tests.
  • PerlOnJava 5.44.1, JVM and interpreter: full run failed 22/28 files, 168/671 subtests; focused t/31_feature_caller.t failed the nine expected advice-count assertions on both backends.
  • Root cause confirmed directly by comparing match_all output for the reproducer on system Perl and PerlOnJava.
  • Environment: macOS arm64, OpenJDK 24.0.2.

Fix package-stash iteration so named CODE entries are visible to Aspect's runtime stash traversal. Add focused regression coverage for enumerating a declared package sub through this traversal, then rerun the Aspect suite on both backends.

Vorherrschende Sprache
Perl
Sterne
64
Forks
7
Ø Merge
5 Std. 25 Min.
Gemergte PRs (30 T.)
178

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus fglock/PerlOnJava

Alle Issues in fglock/PerlOnJava

Ähnliche Issues

Weitere Issues zu Perl

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.