Port Data::Alias for CPAN compatibility

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

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
35/100
Issue 类型
功能
描述清晰度
描述清楚
活跃度
活跃
技术栈
java, perl
领域
backend, compilers

调研方向

Read the PerlOnJava parser and runtime entry points that implement Perl syntax and operations, then compare them with Data::Alias 1.30's Alias.xs and documented API. Start by reproducing the pop our @ISA failure and use system Perl as the behavior reference. Done means the documented alias, copy, and deref semantics pass the upstream Data::Alias and Data::Reuse 0.13 suites on supported backends, with unsupported cases and tested versions recorded.

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

描述

area:cpan-port area:parser bug

Summary

Port Data::Alias so CPAN distributions that rely on its aliasing API can run on PerlOnJava. Data::Reuse is one confirmed consumer. Data::Alias 1.30 contains XS code (Alias.xs) and its Perl module bootstraps that extension; the current CPAN MakeMaker path installs only the .pm file and cannot compile the XS component.

Reproduction and evidence

  • Distribution: Data-Alias 1.30, module Data::Alias.
  • In CPAN run 20261104-151051-20617, the PerlOnJava test run fails to load Data::Alias across 31 of 33 test programs with Type of arg 1 to pop must be array (not constant item) at the pop our @ISA statement in Data/Alias.pm line 18. This is the first observed blocker; the package also needs an implementation for its XS-provided aliasing behavior.
  • On system Perl 5.42.2 (macOS), the same distribution compiled its XS extension and passed all available tests: 637 tests across 33 files. Two optional test files were skipped because Devel::CallParser and Test::Pod::Coverage were unavailable.
  • Data::Reuse 0.13 requires Data::Alias 1.16+. In CPAN run 20261106-154847-45334, its four test files all fail during dependency loading at the same pop our @ISA diagnostic. The system-Perl oracle built Data::Alias and passed all 127 Data::Reuse tests.
  • Targeted MetaCPAN reverse-dependency lookup: 14 unique released distributions have a runtime dependency on Data::Alias; 2 are recent. Examples: Data::Reuse, Alias-Any, PerlX-Window, and XML-Dataset.

Scope

Implement the Data::Alias surface needed by real consumers, including alias, copy, and deref, with Perl-compatible parsing and runtime semantics. The upstream distribution documents context-transparent operations and aliasing of variables, elements, arguments, and aggregates. Do not treat successful parsing alone as completion: exercise the upstream suite and Data::Reuse against the implementation.

Acceptance criteria

  • use Data::Alias loads without native XS and provides the supported API through PerlOnJava implementation code.
  • Focused tests cover pop our @ISA parsing and the documented API semantics, validated against system Perl.
  • Relevant upstream Data::Alias tests and the Data::Reuse 0.13 suite pass on PerlOnJava; test on both JVM and interpreter backends where supported.
  • Document any unsupported API cases and keep the tested distribution versions and results in the compatibility evidence.

Evidence references

主要语言
Perl
星标
65
派生
8
平均合并
5 小时 57 分钟
30 天内合并 PR
177

环境准备

  • 提供 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 摘要。