WebAssembly / WebAssembly/WASI

[1.0] Replace `wasi:http@0.3` `handler` / `client` split with single interface using `implements`

Open
#948 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

P-http proposal
Dominant language
Rust
Stars
5.8k
Forks
333
Avg merge
2d 13h
Merged PRs (30d)
3

Description

This split was a workaround for the absence of implements which could be resolved in 1.0:

https://github.com/WebAssembly/WASI/blob/main/proposals/http/wit/worlds.wit#L104-L108

/// The type signature of `client.send` is the same as `handler.handle`. This
/// duplication is currently necessary because some Component Model tooling
/// (including WIT itself) is unable to represent a component importing two
/// instances of the same interface. A `client.send` import may be linked
/// directly to a `handler.handle` export to bypass the network.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the WIT definition linked at proposals/http/wit/worlds.wit, especially lines 104-108, and read the surrounding handler and client declarations. Determine how the 1.0 implements form should replace the duplicated split interface. Done means the HTTP proposal uses one interface with implements and no longer needs the workaround described in the issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
wasm
Domain
api
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.