Skip to content

Commit 1aa4590

Browse files
Merge pull request #2977 from KodrAus/simd-pg
[RFC]: Portable SIMD Libs Project Group
2 parents d4688ec + 9b3e975 commit 1aa4590

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed

text/2977-stdsimd.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
- Feature Name: stdsimd_project_group
2+
- Start Date: 2020-08-28
3+
- RFC PR: [rust-lang/rfcs#2977](https://github.com/rust-lang/rfcs/pull/2977)
4+
- Rust Issue: [rust-lang/rust-libs#4](https://github.com/rust-lang/libs-team/issues/4)
5+
6+
# Summary
7+
[summary]: #summary
8+
9+
This is a project group RFC version of [`lang-team#29`].
10+
11+
This RFC establishes a new project group, under the libs team, to produce a portable SIMD API in a new `rust-lang/stdsimd` repository, exposed through a new `std::simd` (and `core::simd`) module in the standard library in the same manner as [`stdarch`]. The output of this project group will be the finalization of [RFC 2948] and stabilization of `std::simd`.
12+
13+
# Motivation
14+
[motivation]: #motivation
15+
16+
The current stable `core::arch` module is described by [RFC 2325], which considers a portable API desirable but out-of-scope. The current [RFC 2948] provides a good motivation for this API. Various ecosystem implementations of portable SIMD have appeared over the years, including [`packed_simd`], and [`wide`], each taking a different set of trade-offs in implementation while retaining some similarities in their public API. The group will pull together a "blessed" implementation in the standard library with the explicit goal of stabilization for the [2021 edition].
17+
18+
# Charter
19+
[charter]: #charter
20+
21+
## Goals
22+
23+
- Determine the shape of the portable SIMD API.
24+
- Get an unstable `std::simd` and `core::simd` API in the standard library. This may mean renaming `packed_simd` to `stdsimd` and working directly on it, or creating a new repository and pulling in chunks of code as needed.
25+
- Produce a stabilization plan to allow portions of `std::simd` to be stabilized when they're ready, and coordinate with other unstable features.
26+
- Respond to user feedback and review contributions to the API.
27+
- Update [RFC 2948] based on the final API and stabilization plan.
28+
- Stabilize `std::simd`!
29+
30+
## Non Goals
31+
32+
- This group isn't directly attempting to build out more `core::arch` APIs.
33+
34+
## Membership Requirements
35+
36+
- Group membership is open, any interested party can participate in discussions, repeat contributors will be added to appropriate teams.
37+
38+
## Additional Questions
39+
40+
### What support do you need, and separately want, from the Rust organization?
41+
42+
Support scaffolding a space to work and integrating `stdsimd` into `libcore` and input from engineers who are familiar with this space.
43+
44+
### Why should this be a project group over a community effort?
45+
46+
Community efforts have already produced libraries that are in use, but pulling those together in the standard library needs a group with permissions to get things merged.
47+
48+
### What do you expect the relationship to the team be?
49+
50+
The project group will regularly update libs on how things are going, whether there are any blockers
51+
52+
### Who are the initial shepherds/leaders? (This is preferably 2–3 individuals, but not required.)
53+
54+
- @BurntSushi
55+
- @calebzulawski
56+
- @hsivonen
57+
- @KodrAus
58+
- @Lokathor
59+
60+
### Is your group long-running or temporary?
61+
62+
Temporary
63+
64+
### If it is temporary, how long do you see it running for?
65+
66+
Until the 2021 edition, which is probably mid 2021.
67+
68+
### If applicable, which other groups or teams do you expect to have close contact with?
69+
70+
The project group will interact with:
71+
72+
- libs
73+
- compiler
74+
75+
### Where do you see your group needing help?
76+
77+
There will be lots of feedback to gather from users and input from compiler developers on how to approach implementation.
78+
79+
[`packed_simd`]: https://github.com/rust-lang/packed_simd
80+
[`wide`]: https://github.com/Lokathor/wide
81+
[`stdarch`]: https://github.com/rust-lang/stdarch
82+
[2021 edition]: https://github.com/rust-lang/rfcs/pull/2966
83+
[RFC 2948]: https://github.com/rust-lang/rfcs/pull/2948
84+
[RFC 2325]: https://rust-lang.github.io/rfcs/2325-stable-simd.html
85+
[`lang-team#29`]: https://github.com/rust-lang/lang-team/issues/29

0 commit comments

Comments
 (0)