stdlib-js / stdlib-js/stdlib

[RFC]: add C implementations for `blas/ext/base/ndarray` packages

Đang mở
#14,819 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
Accepted C Feature Native Addons RFC Tracking Issue
Ngôn ngữ chính
JavaScript
Star
6k
Fork
1.3k
Merge trung bình
1 ngày 3 giờ
Pull request đã merge (30 ngày)
611

Mô tả

## Purpose

This issue tracks the initiative to add native C implementations for typed ndarray APIs in `blas/ext/base/ndarray`. It serves as a central reference point for contributors so that work can be coordinated, PRs can be linked back here, and duplicate effort can be avoided.

---

## Summary

In `blas/ext/base/ndarray`, if a typed ndarray API is missing a native C implementation, it is fair game to add one. This issue serves as a general tracking reference for this ongoing initiative.

Candidates for C implementations typically include packages handling the following data types (indicated by their prefixes):
- `d` (double-precision)
- `s` (single-precision)
- `c` (complex single-precision)
- `z` (complex double-precision)

Since new strided APIs are constantly being added to `blas/ext/base`, this is intentionally kept as a generalized issue rather than an enumerated checklist, which would become outdated quickly.

## What to Do

If you find a package under `blas/ext/base/ndarray` that has a JavaScript implementation but is missing a native C addon (`src/`, `include/`, `manifest.json`, `binding.gyp`, etc.), you may go ahead and add the C implementation.

## Reference Library

To help contributors understand exactly what is required when adding a native C implementation, we have compiled a "Reference Library" of merged PRs. Please refer to the PR that best matches the type of package you are working on:

- **`d*`** (double-precision): [PR #10065](https://github.com/stdlib-js/stdlib/pull/10065)
- **`dnan*`** (double-precision with NaNs): [PR #10715](https://github.com/stdlib-js/stdlib/pull/10715)
- **`s*`** (single-precision): [PR #10078](https://github.com/stdlib-js/stdlib/pull/10078)
- **`snan*`** (single-precision with NaNs): [PR #10777](https://github.com/stdlib-js/stdlib/pull/10777)
- **`c*`** (complex single-precision): [PR #10696](https://github.com/stdlib-js/stdlib/pull/10696)
- **`z*`** (complex double-precision): [PR #10699](https://github.com/stdlib-js/stdlib/pull/10699)

## PR Title Convention

When opening a pull request for this work, please use the following title format so others can easily search GitHub and avoid duplicate PRs:

```text
feat: add C implementation for blas/ext/base/ndarray/
```

## You are Advised

- **Before starting**, please leave a comment on this issue mentioning which package you are working on (e.g., _"I am working on `dsum`"_). This helps avoid two contributors working on the same package simultaneously.
- **Reference this issue** in your PR description if you are adding a C implementation for any `blas/ext/base/ndarray` package. This helps reviewers understand the context and track progress against this initiative.
- **Check the PR tracker** before starting to make sure there is no existing open PR for the same package.

---

### Related Issues

None.

### Questions

No.

### Other

No.

### Checklist

- [x] I have read and understood the [Code of Conduct](https://github.com/stdlib-js/stdlib/blob/develop/CODE_OF_CONDUCT.md).
- [x] Searched for existing issues and pull requests.
- [x] The issue name begins with `RFC:`.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Choose an unclaimed package under blas/ext/base/ndarray and first compare its JavaScript implementation with the matching reference PR. Check the package's src/, include/, manifest.json, and binding.gyp files, then use the PR tracker and comment on this issue before starting. Done means the package has the corresponding native C implementation and a linked PR.

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

Đánh giá

Công nghệ
c, javascript
Lĩnh vực
backend, data
Loại issue
Tính năng
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
48/100

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.