stdlib-js / stdlib-js/stdlib

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

オープン
#14,819 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
Accepted C Feature Native Addons RFC Tracking Issue
主要言語
JavaScript
スター
6k
フォーク
1.3k
平均マージ
1日 3時間
マージ済み PR(30日)
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 を短くまとめたダイジェスト。