bytecodealliance / bytecodealliance/component-docs

What changes to WIT are "compatible" and which are not?

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

説明

Suppose I have a WIT definition, and some old WebAssembly components built/defined using the old definition, and then I want to make a change to my interface without requiring the component to be modified or rebuilt. Or perhaps I want to do the same in the reverse direction—make a change to my WASM component that remains backward-compatible with a host using an older WIT.

What changes to the WIT could be considered "compatible", if any, and which are not?

In essence, I'm looking for guidance similar to what Protobuf offers in their [Updating a Message Type](https://protobuf.dev/programming-guides/proto3/#updating) documentation.

A few example questions/scenarios I can think of: are the following compatible in one or both directions (old host/new guest vs. new guest/old host)?

1. Removing an argument to a function
2. Adding a new optional argument to a function
3. Adding a new optional field to a struct
4. Removing a field from a struct
5. Adding a new case to a variant
6. Removing a case from a variant

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

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

評価

この issue はまだ評価されていません。

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

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