feat(p3): add client interface#17
Merged
badeend merged 3 commits intoWebAssembly:mainfrom Feb 18, 2026
Merged
Conversation
Signed-off-by: Roman Volosatovs <rvolosatovs@riseup.net>
Member
|
A recap of what Roman & I have discussed out-of-band:
All of this combined then results in an interface closer to: interface types {
resource error {
to-debug-string: func() -> string;
}
}
interface client {
resource connector {
constructor();
/// Set up the encryption stream transform.
/// This takes an unprotected `cleartext` application data stream and
/// returns an encrypted data stream, ready to be sent out over the network.
/// Closing the `cleartext` stream will cause a `close_notify` packet to be emitted on the returned output stream.
send: func(cleartext: stream<u8>) -> tuple<stream<u8>, future<result<_, error>>>;
/// Set up the decryption stream transform.
/// This takes an encrypted data stream, as received via e.g. the network,
/// and returns a decrypted application data stream.
receive: func(ciphertext: stream<u8>) -> tuple<stream<u8>, future<result<_, error>>>;
/// Perform the handshake.
/// The `send` & `receive` streams must be set up before calling this method.
connect: async func(this: connector, server-name: string) -> result<_, error>;
}
}The |
Signed-off-by: Roman Volosatovs <rvolosatovs@riseup.net>
Signed-off-by: Roman Volosatovs <rvolosatovs@riseup.net>
686ba05 to
52e5f81
Compare
Contributor
Author
|
@badeend I've applied your suggestion and did a little fixup in 52e5f81 The interface is implemented in bytecodealliance/wasmtime#12174 |
Member
|
Awesome! Thanks. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Introduce the
clientinterface designed for wasip3, which is at feature-parity with what's currently available inmainfor wasip2 with a few additionsbytecodealliance/wasmtime#12174 contains mostly-complete host implementation of the interface in the proposed shape with a passing test (adapted directly from existing wasip2 test). The interface in the PR is an in-progress superset of the interface proposed in this PR.
This is by no means complete and is intended to just be the first step with more PRs to follow as I validate the design by continuing the host implementation in Wasmtime as well as a Python guest implementation utilizing these (have not started on Python work yet)
refs WebAssembly/wasi-sockets#100
refs WebAssembly/wasi-sockets#104