Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Avoid repeated live-root scans over growing lexical aggregates

Aberta
#1,860 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
52/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
java, perl

Direção de pesquisa

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.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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.
Linguagem predominante
Perl
Estrelas
64
Forks
8
Merge médio
5h 42min
PRs com merge (30d)
205

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de fglock/PerlOnJava

Todas as issues de fglock/PerlOnJava

Issues semelhantes

Mais issues de Perl

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.