stdlib-js / stdlib-js/stdlib

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

未关闭
#14,819 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
Accepted C Feature Native Addons RFC Tracking Issue
主要语言
JavaScript
星标
6k
派生
1.3k
平均合并
1 天 3 小时
30 天内合并 PR
611

描述

## 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:`.

贡献指南

打开贡献指南

调研方向

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.

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

评估

技术栈
c, javascript
领域
backend, data
Issue 类型
功能
难度
4/5
预计耗时
3-5 天
活跃度
活跃
描述清晰度
基本清楚
新手友好度
48/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。