What changes to WIT are "compatible" and which are not?
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 50/100
- Issue type
- Documentation
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- wasm
- Domain
- documentation
Research direction
Start by reviewing the WIT compatibility scenarios listed in the issue and the linked Protobuf “Updating a Message Type” guidance. Document whether each of the six changes is compatible in the old-host/new-guest and new-host/old-guest directions, including the relevant conditions and limitations.
Written by the indexing model from the issue text.
Description
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 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)?
- Removing an argument to a function
- Adding a new optional argument to a function
- Adding a new optional field to a struct
- Removing a field from a struct
- Adding a new case to a variant
- Removing a case from a variant
- Dominant language
- Rust
- Stars
- 137
- Forks
- 88
- Avg merge
- 10h 38m
- Merged PRs (30d)
- 2
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from bytecodealliance/component-docs
-
Difficulty 2/5 Half a day Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
bytecodealliance/component-docs#294 · 1 comment ·
-
Fix Python Tutorial Openbug lang/python
Difficulty 3/5 1-2 days Newbie friendliness 55/100
bytecodealliance/component-docs#348 · 2 comments ·
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
All issues in bytecodealliance/component-docs
Similar issues
-
todo:perf
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
ACP agents get no MCP servers when the thread is created before the project's first worktree loads Openstate:needs triage
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
zed-industries/zed#64611 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
ontola/atomic-server#1625 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
objectionary/phie#154 ·