pperl 0.6.25 - 童年的终结
内容提要
pperl 0.6.25 已发布,其内部库和软件套件全部运行在 pperl 上。基于 MetaCPAN 2026 年 10 月 15 日 CPAN River 前 499 个发行版的测试显示,99.9% 权重通过:122 个内置,374 个经 --cpan 安装并通过自身测试,仅 XML-LibXML、YAML-Syck、XS-Parse-Keyword 三个失败。主要工作是让 pperl 在编译器检测、回退 Perl、纯 Perl 构建、@INC 钩子、%Config 等方面表现得像 perl。目前仍处早期阶段,不建议生产切换,未来将支持 perlbrew 及容器等分发方式。
延伸解读
“自用”不等于“可生产”
文章强调 PetaMem 和 PetaJoule 的内部库与软件套件已完整运行在 pperl 上,但明确说明“运行”不代表生产环境可用,也不建议任何人切换。这提醒读者:作者自用是重要信号,但成熟度仍需独立验证。当前 pperl 更像一个通过大规模兼容性测试的早期实现,而非可替代 perl 的生产运行时。
CPAN River 测试的边界
99.9% 的权重通过率基于 MetaCPAN 2026-10-15 的 CPAN River 前 499 个发行版,且测试环境隔离了系统 perl 库。但失败的三项 XML-LibXML、YAML-Syck、XS-Parse-Keyword 都是直接针对 perl 内部 C 接口的模块,说明 pperl 对 XS 生态的兼容仍有硬缺口。读者应关注这些失败是否影响自身依赖链,而非只看总体百分比。
兼容性工作集中在“被检查”的细节
文章指出大部分工作不是 Perl 语言本身,而是让 pperl 在编译器检测、回退消息、纯 Perl 构建、@INC 钩子、%Config 和 -v 输出等方面表现得像 perl。这些细节决定了模块安装脚本能否正确判断环境。对开发者而言,这意味着 pperl 的成熟度取决于对 perl 运行时行为的模拟精度,而不仅是语法兼容。
分发方式尚未定型
目前 pperl 仅提供二进制下载,未来计划支持 perlbrew 多实现并存,再考虑容器、发行版包或 AppImage,但均无时间表。文章还提到部分替代模块从作者服务器在安装时获取,这带来可用性与信任依赖。读者在评估采用时,需考虑分发渠道和外部依赖的长期稳定性。
Q&A
pperl 0.6.25 在 CPAN 兼容性测试中的通过率是多少?
基于 MetaCPAN 2026 年 10 月 15 日 CPAN River 前 499 个发行版的测试,99.9% 权重通过:122 个内置,374 个经 --cpan 安装并通过自身测试,仅 XML-LibXML、YAML-Syck、XS-Parse-Keyword 三个失败。
pperl 目前适合在生产环境使用吗?
不适合。文章明确表示 pperl 仍处早期阶段,不建议任何人切换,虽然童年已结束,但尚未成熟,最多算青少年。
pperl 如何让依赖 C 编译器的模块(如 Moose)通过安装?
pperl 不运行 XS,当模块检查 C 编译器时,pperl 仅在所需编译部分已内置时回答“是”,例如 Moose 的 Package::Stash::XS、List::MoreUtils::XS 等已内置并通过自身测试。
对于没有 Perl 实现的 XS 模块,pperl 如何处理?
对于十多个这样的发行版,pperl --cpan 会从作者服务器获取替代品,用 Perl 或 pperl 内置模块完成相同工作,例如 Text::CSV_XS 和 JavaScript::QuickJS。替代品在安装时获取,因此新发布的替代品也会生效。
pperl 未来计划通过哪些方式分发?
第一步是支持 perlbrew,让多个 Perl 实现(perl、jperl、pperl)并存;之后是容器、发行版包或 AppImage,具体取决于哪种方式更适用。目前尚无时间表。
pperl 0.6.25 的开发规模如何?
pperl 0.6.25 包含自 0.6.23 以来约 14 天的开发,约 288 万行变更,涉及 35,000 个文件,由 1 位作者完成。排除自动生成文件等后,约 16.1 万行变更涉及 1,800 个 .rs、.pl、.pm 和 .t 文件。