bytecodealliance / bytecodealliance/wstd

Tracking issue for WASIp3

オープン
#141 コメント 6 件 リアクション 1 件 担当者 0 名 GitHub で見る
主要言語
Rust
スター
133
フォーク
19
平均マージ
6日 19時間
マージ済み PR(30日)
5

説明

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

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

Plan と Breaking Changes を読み、次に #145、#148、#151 などの未チェックのチェックリスト項目を 1 つ開き、指定されたサブシステムの対応する WASIp2 実装を調べます。現在の target と feature の扱いを WASIp3 の要件と比較します。選択したサブシステムが WASIp3 向けに実装され、その開発用 CI パスが機能すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
rust, wasm
領域
operating-systems
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
活発
明瞭さ
おおむね明確
初心者へのやさしさ
32/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。