Skip to content
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

Renaming the WASI target in Rust 1.71.0 #1099

Closed
wants to merge 4 commits into from
Closed
Changes from 3 commits
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
46 changes: 46 additions & 0 deletions posts/2023-05-01-wasi-target-rename-1.71.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
layout: post
title: "Renaming the WASI target in Rust 1.71.0"
author: Yoshua Wuyts
---
In Rust 1.71 the existing `wasm32-wasi` target will be renamed
to `wasm32-wasi-preview1`. This matches the naming introduced in the [WASI
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
to `wasm32-wasi-preview1`. This matches the naming introduced in the [WASI
to `wasm32-wasip1`. This matches the naming introduced in the [WASI

Preview Framework][wpf], whose scheme has already been adopted by other
language toolchains such as [Golang] and [Node.js]. It is expected that
eventually WASI will eventually stabilize far enough that it will reach a 1.0
status. By freeing up the `wasm32-wasi` target name now, it enables us to
reintroduce it in the future as the target name for an eventual 1.0 stable WASI
Copy link
Member

Choose a reason for hiding this comment

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

I hesitate to use the term stable here since these targets are also stable they just hint that they will be superseded by a future release. Perhaps instead of call the eventual 1.0 release "stable" we can say something akin to:

By freeing up the wasm32-wasi target name now, it enables us to
reintroduce it in the future as the target name for an eventual 1.0 WASI release where evolution of WASI is expected to slow considerably in pace. All wasi targets are in and of themselves stable, but it's important to note that future wasi releases are expected to supersede previous versions which will not receive feature updates.

release.

While we don’t have any immediate plans to deprecate the Preview 1 target, the
reality is that most of the development of WASI in recent years has centered
around WASI Preview 2 and [Wasm Components][components]. The expectation is that
Preview 2 will eventually supplant Preview 1, and support across the WASI
ecosystem will gradually wind down for Preview 1. By adopting “preview” in the
Copy link
Member

Choose a reason for hiding this comment

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

By adopting “preview” in the target names

Note: "preview" isn't actually used in the target names just "p" which stands for preview.

target names, we can begin to more clearly communicate that the current WASI
targets should be considered development snapshots, and will eventually be
superseded.

Work on adding a WASI Preview 2 target to the compiler is currently underway,
but is not yet complete. We expect this to land in a future release of Rust. The
target triple for this target will be `wasm32-wasi-preview2`.
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
target triple for this target will be `wasm32-wasi-preview2`.
target triple for this target will be `wasm32-wasip2`.


## Migrating Targets

To upgrade to the new WASI target on Rust 1.71 nightly you can run the
following commands using [rustup](https://rustup.rs):

```bash
$ rustup +nightly target remove wasm32-wasi
$ rustup upgrade nightly
$ rustup +nightly target add wasm32-wasi-preview1
```
yoshuawuyts marked this conversation as resolved.
Show resolved Hide resolved

Once beta and stable builds are available (expected in ~6 and ~12 weeks
respectively) you should be able to replace the word `nightly` in the
instructions with either `beta` or `stable`.

[Golang]: https://github.com/golang/go/issues/58141
[Node.js]: https://nodejs.org/en/blog/announcements/v20-release-announce#progress-on-web-assembly-system-interface-wasi
[wpf]: https://github.com/WebAssembly/meetings/blob/main/wasi/2023/presentations/2023-02-09-gohman-wasi-roadmap.pdf
[components]: https://www.youtube.com/watch?v=phodPLY8zNE