bytecodealliance / bytecodealliance/wstd

Tracking issue for WASIp3

Aperta
#141 6 commenti 1 reazione 0 assegnatari Vedi su GitHub
Lingua principale
Rust
Stelle
133
Fork
19
Merge medio
6g 19h
PR unite (30g)
5

Descrizione

## Plan

The ultimate goal is to have `wstd` use WASIp2 when compiled to `wasm32-wasip2` and WASIp3 when compiling to `wasm32-wasip3`, with essentially the same APIs.

Until https://github.com/rust-lang/rust/pull/161940 has landed we'll create mutually exclusive `p2` and `p3` features on `wstd`, where `p2` will be enabled by default and `p3` will only be run in CI during development, not meant for actual use. Then we can switch the `feature` directives to `target_env` directives when the work is complete and `wasm32-wasip3` is tier 2.

## Breaking Changes

- The stream APIs in `io` and TCP APIs in `net` work with `&` references and will switch to requiring `&mut`. This is because `p2` is a single threaded environment, whereas `p3` is not. This change will be made to both targets to keep them in sync.
- Some APIs expose the underlying WASIp2 types (e.g. [`AsyncInputStream::new`](https://docs.rs/wstd/latest/wstd/io/struct.AsyncInputStream.html#method.new) takes a `wasip2::InputStream`) these will naturally change to use the equivalent WASIp3 types. This will only be breaking when upgrading to the WASIp3 target.
- (Up for discussion) The `wasip3` crate has its own `Task` type which `wstd` could use directly instead of `async_task::Task`. If done this would be another breaking change between the two targets.

## Checklist
- [x] #144
- [ ] #145
- [ ] #148
- [ ] Implement `runtime` on WASIp3
- [ ] Implement `rand` on WASIp3
- [ ] Implement `time` on WASIp3
- [ ] Implement `io` on WASIp3
- [ ] Implement `net` on WASIp3
- [ ] Implement `http` on WASIp3
- [ ] Implement `wstd-axum` on WASIp3
- [x] #147
- [ ] (Optional) Switch from `async_task::Task` to `wasip3::Task`
- [ ] #151

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Read the Plan and Breaking Changes, then open one unchecked checklist item such as #145, #148, or #151 and inspect the corresponding WASIp2 implementation in the named subsystem. Compare its current target and feature handling with the WASIp3 requirements. Done means the selected subsystem is implemented for WASIp3 and its development CI path works.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
rust, wasm
Ambito
operating-systems
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Attiva
Chiarezza
Abbastanza chiara
Idoneità per principianti
32/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.