Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Avoid repeated live-root scans over growing lexical aggregates

Ouverte
#1,860 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
52/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
java, perl

Piste de recherche

Start with the reachability tests and the cleanup path around ReachabilityWalker.LiveRootSnapshot.build(), identified by the profiling evidence; inspect the regression work in #1642 for context. Add deterministic coverage that counts snapshot traversal while a lexical root graph grows, preserving weak-reference, scope-exit, and root-mutation behavior. Run the Perl-level test with system Perl, then verify both PerlOnJava backends and the unchanged Data-Tumbler-0.010 stress test.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

area:memory area:performance area:runtime bug

Summary

Data-Tumbler 0.010's t/90-stress.t times out under PerlOnJava although the complete upstream suite passes under system Perl. The stress test emits 4^8 (65,536) leaves and appends each result to a lexical output array.

Evidence

  • CPAN random-tester regression run: 20261021-223510-14962.
  • System Perl 5.42.2, Temurin Java 24.0.2, macOS arm64.
  • System Perl: PASS, 4 files / 5 tests; the stress test completes in under one second.
  • PerlOnJava at parent 8bc1c9d1708de1381be6c042d6530c0c318e24f4: t/00-basic.t, t/10-simple.t, and t/20-examples.t pass, then the harness produces no output and exceeds its 120-second soft limit while running the stress test.
  • Reproduction on both PerlOnJava backends: 4^8 exceeds 180 seconds on JVM and 60 seconds on interpreter. On JVM, 4^6 takes 1.2 seconds and 4^7 takes 38.8 seconds, showing a sharp superlinear increase.
  • JFR samples identify ReachabilityWalker.LiveRootSnapshot.build() and its traversal as a major hot path during deferred aggregate cleanup. The stress test's lexical output array grows with every leaf, so repeated live-root snapshots revisit an increasingly large graph.
  • Data::Tumbler is pure Perl and requires no native library, service, or display. This is related to the root-walk performance work in #1642, but this reproduction exercises repeated live lexical snapshots over a growing output graph after that fix.

Acceptance criteria

  • Add deterministic regression coverage for repeated cleanup while a lexical root graph grows; assert bounded snapshot traversal work rather than elapsed time.
  • Preserve weak-reference, scope-exit, and root-mutation semantics covered by the existing reachability tests.
  • Run the new Perl-level test with system Perl, then verify JVM and interpreter behavior.
  • The unchanged Data-Tumbler-0.010 stress test completes on both PerlOnJava backends without the observed superlinear slowdown.
Langage dominant
Perl
Étoiles
64
Forks
8
Merge moyen
5 h 42 min
PR mergées (30 j)
205

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de fglock/PerlOnJava

Toutes les issues de fglock/PerlOnJava

Issues similaires

Plus d'issues Perl

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.