Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Port Devel::Size for PerlOnJava

オープン
#1,880 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
45/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
活発
技術スタック
java, perl
領域
backend

調査の方向性

This is a substantial port: reimplement the XS-based Devel::Size as a pure-Perl module plus a Java runtime implementation inside PerlOnJava, following the project's existing module-registration pattern (look at how other bundled CPAN modules are registered). Start by running a minimal use Devel::Size qw(size total_size) to see the lookup failure, then study an existing small module port for the wiring, and adapt upstream 0.87 tests (cycle, shared-reference, export-tag cases) as project-owned tests run on both backends. Done means the acceptance criteria pass on JVM and interpreter backends; this needs real familiarity with the PerlOnJava runtime, so it suits a contributor who already knows the codebase rather than a first-timer.

索引モデルが issue の本文から書いたものです。

説明

area:cpan-port enhancement help wanted

Summary

Port Devel::Size for PerlOnJava so CPAN modules that use it as a runtime dependency can load and estimate Perl object sizes on the JVM and interpreter backends.

Devel::Size is currently absent from PerlOnJava's bundled modules. A minimal use fails during module lookup:

use Devel::Size qw(size total_size);

The missing module blocks consumers that declare it as a runtime prerequisite. One concrete consumer observed during CPAN testing is DBG 0.4.1.

Upstream behavior and expected API

The current CPAN release is Devel-Size 0.87, released 2026-03-31. Its Perl wrapper exports size and total_size on request (and via the :all tag), and exposes $Devel::Size::warn and $Devel::Size::dangle controls. The implementation currently loads XS and traverses Perl values, including aggregate/reference structures.

On PerlOnJava, size($value) should return a useful estimate for the value's PerlOnJava representation, and total_size($value) should estimate the reachable structure while counting shared referents once and handling cycles. Estimates should be stable enough for comparisons and diagnostics, but need not match Perl's C allocator byte-for-byte. The module should load without XS and work on both execution backends.

Porting scope

  • Add a bundled Devel::Size Perl module and Java runtime implementation, following the existing PerlOnJava module-registration pattern.
  • Traverse PerlOnJava runtime values and account for scalars, arrays, hashes, references, code/glob-like values where supported, shared references, and cyclic graphs.
  • Preserve the documented exports and warning/dangling-reference controls where applicable; document any deliberate limitations of the Java object model.
  • Adapt the upstream tests as project-owned tests, including recursion/cycle and shared-reference cases, and run them on system Perl before relying on them for PerlOnJava behavior.
  • Document that these values estimate PerlOnJava-managed object footprints, not process RSS or exact native Perl allocation sizes.

Reverse-dependency estimate

MetaCPAN's reverse-dependency endpoint currently reports 24 distinct distributions mentioning Devel::Size across prerequisite phases. Filtering the latest release metadata to direct runtime requires gives an estimated 22 direct runtime dependants; 6 of those latest releases were updated in the two years before 2026-10-24. These are distribution-level metadata counts, not a count of active users or all transitive consumers. The runtime dependants include diagnostic, profiling, benchmark, GUI, and application distributions.

Sources: MetaCPAN reverse dependencies API and MetaCPAN API documentation.

Acceptance criteria

  • use Devel::Size qw(size total_size) succeeds without an installed native Devel::Size on both JVM and interpreter backends.
  • size and total_size return non-negative numeric estimates for supported values; aggregate size grows as contained data grows.
  • Shared referents are not counted repeatedly by total_size, and cyclic structures terminate.
  • Export/tag behavior and documented controls have focused regression coverage, with unsupported behavior documented.
  • The adapted project-owned tests pass with system Perl as an oracle where the semantics are standard Perl behavior, and on both PerlOnJava backends.

Related: #1873 (a separate FileHandle/IO::Seekable porting issue whose CPAN investigation also encountered this missing prerequisite).

主要言語
Perl
スター
65
フォーク
8
平均マージ
5時間 56分
マージ済み PR(30日)
184

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

fglock/PerlOnJava のほかの issue

fglock/PerlOnJava の issue をすべて見る

似ている issue

Perl の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。