|
| 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