-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Add definitions of tiers-of-support for Wasmtime #4479
Conversation
As-is this document is a work in progress and I would like to gather feedback from others about their thoughts on this classification. My hope is that most of the guidelines here are pretty uncontroversial, but if there are points of contention then I will close this and reopen it as an RFC for a more official venue of discussion. I also plan on talking about this in the upcoming days at the Cranelift and Wasmtime weekly meetings to cast a wide net for getting interest in this. |
docs/stability-tiers.md
Outdated
#### Tier 3 | ||
|
||
* Target - `aarch64-apple-darwin` | ||
* WASI Proposal - `wasi-nn` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think wasi-nn could arguably be in tier 2.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given the current list of requirements sketched out I believe that wasi-nn
is still largely missing tests. There's one example that is compiled and run but I think that we'd want more of a unit-test-like-suite otherwise.
At least personally this sort of tracks with my gut feeling about wasi-nn
and wasi-crypto
where they're present but don't feel all-that-well integrated/first-class. WASI itself isn't really all that first-class by requiring an extra wasmtime-wasi
crate which hasn't had much time put into its API design for stability too, though. I don't know how best to think about WASI proposals myself.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this sounds great; I just have a few clarifying edits.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm happy with this, and I feel it's useful to have these criteria written down.
This is a great overall idea, as I mentioned in the Wasmtime biweekly -- thanks for putting this together @alexcrichton! I had a few additional thoughts on the sorts of things that could be tiered, both related to Cranelift. Basically any large feature or piece of functionality could in theory be assigned a tier, and two that come to mind are:
And finally to write down something I said at the meeting here: I think it would be really useful to list "what is needed to graduate" alongside features/platforms at lower tiers. This serves both to capture some rationale, and to motivate: if I (as a potential contributor) see that all a given feature needs to be tier-1 and on by default is some more fuzzing, and I want that feature, maybe I will jump in and help. I wrote down some "to graduate" conditions above as examples. In particular I think some of the items in your list are pretty close: e.g. aarch64 really just needs fuzzing on real hardware to be tier-1 supported, if I understand correctly. |
Discussion of this in the Wasmtime/Cranelift meetings felt positive about the various bits here, so I'd like to give some more time in case anyone has feedback, otherwise I will merge later this week. |
This commit adds documentation of a Tiers-based system for classifying how supported a component is within Wasmtime. This was somewhat pioneered in the [Wasmtime 1.0 RFC][rfc] but the documentation here is expanded to include more than just API stability but additionally other components. Inspiration for this is drawn from Rust's definition of [support tiers][rust] as well. The motivation for this is to help clarify what exactly it means to live at each tier and what is expected. For example one thing this document clarifies is the requirements necessary for landing new major changes in Wasmtime at all. Additionally this helps clarify what it means to have the highest level of support vs "otherwise well supported". [rfc]: https://github.com/bytecodealliance/rfcs/blob/main/accepted/wasmtime-one-dot-oh.md#tier-1---api-stable-production-quality [rust]: https://doc.rust-lang.org/rustc/target-tier-policy.html
Ok there hasn't been any further discussion of this so I'm going to queue up its merge. PRs and tweaks over time are of course welcome though! |
This commit adds documentation of a Tiers-based system for classifying
how supported a component is within Wasmtime. This was somewhat
pioneered in the Wasmtime 1.0 RFC but the documentation here is
expanded to include more than just API stability but additionally other
components. Inspiration for this is drawn from Rust's definition of
support tiers as well.
The motivation for this is to help clarify what exactly it means to live
at each tier and what is expected. For example one thing this document
clarifies is the requirements necessary for landing new major changes in
Wasmtime at all. Additionally this helps clarify what it means to have
the highest level of support vs "otherwise well supported".