Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Avoid repeated live-root scans over growing lexical aggregates

未关闭
#1,860 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
52/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
java, perl

调研方向

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.

由索引模型根据 Issue 内容生成。

描述

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.
主要语言
Perl
星标
64
派生
8
平均合并
5 小时 47 分钟
30 天内合并 PR
197

环境准备

  • 提供 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

fglock/PerlOnJava 的其他 Issue

查看 fglock/PerlOnJava 的全部 Issue

相似的 Issue

更多 Perl Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。