Skip to content

Fill in initial details #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 21, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 25 additions & 22 deletions CHARTER.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,35 @@
# {{GROUP_NAME}} Charter
<!--
Provide an introduction summarising the goals and motivation behind your
project group.
-->
# Portable SIMD Charter

Build and stabilize a portable SIMD API to the standard library under `core::simd` and `std::simd`.
Draw elements from the existing portable SIMD implementations out in the ecosystem:

- [`generic-simd`]
- [`packed_simd`]
- [`wide`]

## Goals

<!--
Explain what changes you'd like to see your group your group to focus on, and
how you plan to approach these issues. Focus on explaining the highest possible
level of your change.
-->
- Determine the shape of the portable SIMD API.
- 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.
- Produce a stabilization plan to allow portions of the API to be stabilized when they're ready, and coordinate with other unstable features.
- Respond to user feedback and review contributions to the API.
- Update [RFC 2948] based on the final API and stabilization plan.
- Stabilize!

## Constraints And Considerations

<!--
Explain the scope of your group, what you have chosen not to include in
your goals, and your motivations behind making them non-goals.
-->

The initial implementation will be built on LLVM intrinsics directly rather than `core::arch`.
This is so we don't have to block the portable API on filling in a lot of missing intrinsics in `core::arch` on non-x86 platforms.
Migrating from LLVM intrinsics to `core::arch` is kept as a future possibility.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this would also require some sort of detection of #[target_feature], since LLVM intrinsics already interact with it correctly. Not sure if it's worth noting

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As far as I'm aware, you tell LLVM what you want and you tell it the features available and it solves the problem as best it can. Which is what makes intrinsics so powerful.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry--I meant that switching to core::arch would probably require a language change as well, to allow that same interaction.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, yes. Moving to a core::arch based implementation would be a Tall Task, to say the least.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess what I was trying to get at with this was consciously not painting ourselves into any corners that would make moving to core::arch totally infeasible instead of just lots of work. It probably goes without saying. Should I reword it or just cut it out?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that we should make it clear it's not exclusively possible with LLVM intrinsics, but I think this is potentially misleading when the language feature is probably a bigger hurdle than expanding core::arch. Not sure the best way of phrasing that, though! For reference, rust-lang/rust#42515 seems to be the associated issue.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It sounds like we’ll want to capture this, but probably not in the charter 🙂 I’ll just remove this note 👍


## Membership

<!--
Mention your initial membership and who has decided take the roles of
shepherd(s) and liason.
-->
**Shepherds:** @hsivonen, @KodrAus, @Lokathor
**Team Liason:** @KodrAus
**Members:** @BurntSushi, @calebzulawski, @hsivonen, @KodrAus, @Lokathor, @workingjubilee

**Shepherd:**
**Team Liason:**
**Members:**
[`packed_simd`]: https://github.com/rust-lang/packed_simd
[`wide`]: https://github.com/Lokathor/wide
[`generic-simd`]: https://github.com/calebzulawski/generic-simd
[RFC 2948]: https://github.com/rust-lang/rfcs/pull/2948
63 changes: 10 additions & 53 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,80 +1,37 @@
# {{GROUP_NAME}} {{GROUP_TYPE}} Group
<!--
This is the template for creating project groups in rust-lang. Be sure to go
through all sections marked with `**FIX ME**`, and make sure that the text is
correct, and feel free to replace/remove any part that's not relevant to
your group.
# Portable SIMD Project Group

All of the text across all of the initial files uses the same group of
variables to allow for easy search and replace. They are listed below.

Example sed command: `sed -i '' 's/{{GROUP_NAME}}/Inline ASM/g' ./**/*.md`
*Note* the `-i ''` is important as it is required on some platforms e.g. macOS

* {{GROUP_NAME}} -> The display name of your group e.g. "Inline ASM".
* {{GROUP_SLUG}} -> The url slug name of your group used for
`rust-lang/team` and repo name. e.g. "pg-inline-asm".
* {{CHAT_PLATFORM}} -> The name of your chat app e.g. "Zulip".
* {{CHAT_LINK}} -> The hyperlink to your discussions on the chat app
e.g. "https://rust-lang.zulipchat.com/#narrow/stream/216763-project-inline-asm".
-->

<!--
Status badge advertising the project as being actively worked on. When the
project has finished be sure to replace the active badge with a badge
like: https://img.shields.io/badge/status-archived-grey.svg
-->
![project group status: active](https://img.shields.io/badge/status-active-brightgreen.svg)
[![project group documentation](https://img.shields.io/badge/MDBook-View%20Documentation-blue)][gh-pages]


**FIX ME**

<!--
Provide a short introduction about your project group. Make sure to include any
relevant links to information about your group.
-->

Welcome the repository for the {{GROUP_NAME}} Project Group! This is the
Welcome the repository for the Portable SIMD Project Group! This is the
repository we use to organise our work. Please refer to our [charter] as well
as our [github pages website][gh-pages] for more information on our goals and
current scope.

[charter]: ./CHARTER.md
[gh-pages]: https://rust-lang.github.io/{{GROUP_SLUG}}

**/FIX ME**

[gh-pages]: https://rust-lang.github.io/portable-simd

## How Can I Get Involved?

**FIX ME**

<!--
List ways that people from outside your group can get involved and potentially
become members, include what meetings your team has, and how a person could
start participating and contributing. Make sure to mention the main platform
your group hosts its discussions. Be sure to also include links to any
other projects that your group maintains.
-->

[You can find a list of the current members available
on `rust-lang/team`.][team-toml]

If you'd like to participate be sure to check out any of our [open issues] on this
repository.

We also participate on [{{CHAT_PLATFORM}}][chat-link], feel free to introduce
We also participate on [Zulip][chat-link], feel free to introduce
yourself over there and ask us any questions you have.

Group meetings happen every two weeks via [Zulip][chat-link].
You can find them on the [Libs team calendar][calendar]!

[open issues]: /issues
[chat-link]: {{CHAT_LINK}}
[team-toml]: https://github.com/rust-lang/team/blob/master/teams/{{GROUP_TYPE}}-{{GROUP_SLUG}}.toml

**/FIX ME**
[chat-link]: https://rust-lang.zulipchat.com/#narrow/stream/257879-project-portable-simd
[team-toml]: https://github.com/rust-lang/team/blob/master/teams/project-portable-simd.toml
[calendar]: https://calendar.google.com/calendar/u/0/[email protected]

## Building Documentation

This repository is also an mdbook project. You can view and build it using the
following command.

Expand Down
6 changes: 3 additions & 3 deletions book.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[book]
authors = ["{{GROUP_NAME}} Members"]
authors = ["Portable SIMD Members"]
language = "en"
multilingual = false
src = "."
title = "{{GROUP_NAME}} {{GROUP_TYPE}} Group"
title = "Portable SIMD Project Group"

[output.html]
no-section-label=true
git-repository-url="https://github.com/rust-lang/{{GROUP_SLUG}}"
git-repository-url="https://github.com/rust-lang/portable-simd"