Port Scalar::Util::Numeric XS module

Đã đóng
#1,962 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Một pull request liên quan đã được merge.

  • #1983 của @fglock — đã merge

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
java, perl
Lĩnh vực
backend, testing

Hướng nghiên cứu

Start by reading the PerlOnJava XS loading path and the upstream Scalar::Util::Numeric 0.40 wrapper and XS implementation; the issue does not name project files or tests. Compare each exported predicate's behavior with system Perl, then add project-owned API regression coverage and run the Data-TableData-Object 0.116 suite on both backends. Done means the module loads without native XS and matches the stated classification and return conventions.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

area:cpan-port bug

Summary

Add PerlOnJava support for Scalar::Util::Numeric 0.40. This CPAN module currently fails to load because it is implemented in XS and PerlOnJava has no Java XS implementation for it.

Evidence

In CPAN random tester run 20261103-123832-91742, distribution Data-TableData-Object 0.116 passed its complete upstream suite under system Perl 5.42.2 (8 files, 102 tests). Under PerlOnJava, 5 of 8 test programs failed: the compile checks and the aoaos, aohos, aos, and hash tests. All failures stem from loading Scalar::Util::Numeric: Can't load loadable object ... no Java XS implementation available.

The MetaCPAN reverse dependency page reports 56 released dependent distributions, including 17 released on or after 2023-11-04 (the three-year recency window used by the project’s CPAN port-priority report). Recent examples include App-CSVUtils, Tk-AppWindow, App-pause, Bio-Gonzales, and Data-TableData-Object.

References:

Porting scope

The 0.40 Perl wrapper loads XS directly. The XS implementation calls Perl's grok_number and exposes numeric classification through isnum, isint, isuv, isbig, isfloat, isneg, isinf, and isnan. The module also contains Windows-specific recognition for 1.#INF, -1.#INF, and 1.#IND spellings. Provide compatible behavior on PerlOnJava, either through a pure-Perl-compatible provider or a Java implementation, without requiring native XS loading.

Acceptance criteria

  • use Scalar::Util::Numeric and all exported functions work on the JVM and interpreter backends without an XS load failure.
  • Classification results match the upstream module/system Perl for ordinary numbers, integer and UV boundaries, large values, decimal/exponent forms, signs, infinities, NaN, undefined values, and stringified or overloaded values where supported by the module.
  • Preserve the documented return conventions, including isint returning -1, 1, or 0 and the boolean return values of the other predicates.
  • Add project-owned regression coverage for the public API and validate expected behavior against system Perl.
  • Re-run the Data-TableData-Object 0.116 upstream suite on both PerlOnJava backends.
Ngôn ngữ chính
Perl
Star
65
Fork
8
Merge trung bình
5 giờ 54 phút
Pull request đã merge (30 ngày)
184

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của fglock/PerlOnJava

Tất cả issue của fglock/PerlOnJava

Issue tương tự

Thêm issue về Perl

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.