-
Notifications
You must be signed in to change notification settings - Fork 249
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* unify WIT files This addresses two issues: - When upgrading to WASI 0.2.0, I briefly considered bumping the `fermyon:spin` package version to 2.2.0 and updating the Rust and Go SDKs to use WASI 0.2.0. I later decided against that due to semver concerns, but forgot to change the package version back to 2.0.0. Complicating things further was that the package version under wit-2023-10-18 was still 2.0.0, and that's the one we were actually using in `spin-core`, so we didn't notice there was a problem until someone tried to use the version under wit-0.2.0 instead. - Having three separate WIT directories with inconsistent duplicates is obviously confusing, so I've unified them. This unfortunately resulted in a lot of (superficial) code changes since `wit-bindgen` now needs to generate separate modules for various WASI package versions, but at least we've eliminated the duplication and ambiguity. Signed-off-by: Joel Dice <[email protected]> * use aliases to omit versions in wasi compat modules Signed-off-by: Joel Dice <[email protected]> --------- Signed-off-by: Joel Dice <[email protected]>
- Loading branch information
Showing
161 changed files
with
258 additions
and
1,074 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,91 +14,111 @@ mod latest { | |
} | ||
} | ||
|
||
wasmtime::component::bindgen!({ | ||
path: "../../wit-2023-10-18", | ||
interfaces: r#" | ||
include wasi:http/[email protected]; | ||
// NB: this is handling the historical behavior where Spin supported | ||
// more than "just" this snaphsot of the proxy world but additionally | ||
// other CLI-related interfaces. | ||
include wasi:cli/[email protected]; | ||
"#, | ||
async: { | ||
only_imports: [ | ||
"[method]descriptor.access-at", | ||
"[method]descriptor.advise", | ||
"[method]descriptor.change-directory-permissions-at", | ||
"[method]descriptor.change-file-permissions-at", | ||
"[method]descriptor.create-directory-at", | ||
"[method]descriptor.get-flags", | ||
"[method]descriptor.get-type", | ||
"[method]descriptor.is-same-object", | ||
"[method]descriptor.link-at", | ||
"[method]descriptor.lock-exclusive", | ||
"[method]descriptor.lock-shared", | ||
"[method]descriptor.metadata-hash", | ||
"[method]descriptor.metadata-hash-at", | ||
"[method]descriptor.open-at", | ||
"[method]descriptor.read", | ||
"[method]descriptor.read-directory", | ||
"[method]descriptor.readlink-at", | ||
"[method]descriptor.remove-directory-at", | ||
"[method]descriptor.rename-at", | ||
"[method]descriptor.set-size", | ||
"[method]descriptor.set-times", | ||
"[method]descriptor.set-times-at", | ||
"[method]descriptor.stat", | ||
"[method]descriptor.stat-at", | ||
"[method]descriptor.symlink-at", | ||
"[method]descriptor.sync", | ||
"[method]descriptor.sync-data", | ||
"[method]descriptor.try-lock-exclusive", | ||
"[method]descriptor.try-lock-shared", | ||
"[method]descriptor.unlink-file-at", | ||
"[method]descriptor.unlock", | ||
"[method]descriptor.write", | ||
"[method]input-stream.read", | ||
"[method]input-stream.blocking-read", | ||
"[method]input-stream.blocking-skip", | ||
"[method]input-stream.skip", | ||
"[method]output-stream.forward", | ||
"[method]output-stream.splice", | ||
"[method]output-stream.blocking-splice", | ||
"[method]output-stream.blocking-flush", | ||
"[method]output-stream.blocking-write", | ||
"[method]output-stream.blocking-write-and-flush", | ||
"[method]output-stream.blocking-write-zeroes-and-flush", | ||
"[method]directory-entry-stream.read-directory-entry", | ||
"poll-list", | ||
"poll-one", | ||
], | ||
}, | ||
with: { | ||
"wasi:io/poll/pollable": latest::io::poll::Pollable, | ||
"wasi:io/streams/input-stream": latest::io::streams::InputStream, | ||
"wasi:io/streams/output-stream": latest::io::streams::OutputStream, | ||
"wasi:io/streams/error": latest::io::streams::Error, | ||
"wasi:filesystem/types/directory-entry-stream": latest::filesystem::types::DirectoryEntryStream, | ||
"wasi:filesystem/types/descriptor": latest::filesystem::types::Descriptor, | ||
"wasi:cli/terminal-input/terminal-input": latest::cli::terminal_input::TerminalInput, | ||
"wasi:cli/terminal-output/terminal-output": latest::cli::terminal_output::TerminalOutput, | ||
"wasi:sockets/tcp/tcp-socket": latest::sockets::tcp::TcpSocket, | ||
"wasi:sockets/udp/udp-socket": UdpSocket, | ||
"wasi:sockets/network/network": latest::sockets::network::Network, | ||
"wasi:sockets/ip-name-lookup/resolve-address-stream": latest::sockets::ip_name_lookup::ResolveAddressStream, | ||
"wasi:http/types/incoming-response": latest::http::types::IncomingResponse, | ||
"wasi:http/types/incoming-request": latest::http::types::IncomingRequest, | ||
"wasi:http/types/incoming-body": latest::http::types::IncomingBody, | ||
"wasi:http/types/outgoing-response": latest::http::types::OutgoingResponse, | ||
"wasi:http/types/outgoing-request": latest::http::types::OutgoingRequest, | ||
"wasi:http/types/outgoing-body": latest::http::types::OutgoingBody, | ||
"wasi:http/types/fields": latest::http::types::Fields, | ||
"wasi:http/types/response-outparam": latest::http::types::ResponseOutparam, | ||
"wasi:http/types/future-incoming-response": latest::http::types::FutureIncomingResponse, | ||
"wasi:http/types/future-trailers": latest::http::types::FutureTrailers, | ||
}, | ||
}); | ||
mod bindings { | ||
use super::latest; | ||
pub use super::UdpSocket; | ||
|
||
wasmtime::component::bindgen!({ | ||
path: "../../wit", | ||
interfaces: r#" | ||
include wasi:http/[email protected]; | ||
// NB: this is handling the historical behavior where Spin supported | ||
// more than "just" this snaphsot of the proxy world but additionally | ||
// other CLI-related interfaces. | ||
include wasi:cli/[email protected]; | ||
"#, | ||
async: { | ||
only_imports: [ | ||
"[method]descriptor.access-at", | ||
"[method]descriptor.advise", | ||
"[method]descriptor.change-directory-permissions-at", | ||
"[method]descriptor.change-file-permissions-at", | ||
"[method]descriptor.create-directory-at", | ||
"[method]descriptor.get-flags", | ||
"[method]descriptor.get-type", | ||
"[method]descriptor.is-same-object", | ||
"[method]descriptor.link-at", | ||
"[method]descriptor.lock-exclusive", | ||
"[method]descriptor.lock-shared", | ||
"[method]descriptor.metadata-hash", | ||
"[method]descriptor.metadata-hash-at", | ||
"[method]descriptor.open-at", | ||
"[method]descriptor.read", | ||
"[method]descriptor.read-directory", | ||
"[method]descriptor.readlink-at", | ||
"[method]descriptor.remove-directory-at", | ||
"[method]descriptor.rename-at", | ||
"[method]descriptor.set-size", | ||
"[method]descriptor.set-times", | ||
"[method]descriptor.set-times-at", | ||
"[method]descriptor.stat", | ||
"[method]descriptor.stat-at", | ||
"[method]descriptor.symlink-at", | ||
"[method]descriptor.sync", | ||
"[method]descriptor.sync-data", | ||
"[method]descriptor.try-lock-exclusive", | ||
"[method]descriptor.try-lock-shared", | ||
"[method]descriptor.unlink-file-at", | ||
"[method]descriptor.unlock", | ||
"[method]descriptor.write", | ||
"[method]input-stream.read", | ||
"[method]input-stream.blocking-read", | ||
"[method]input-stream.blocking-skip", | ||
"[method]input-stream.skip", | ||
"[method]output-stream.forward", | ||
"[method]output-stream.splice", | ||
"[method]output-stream.blocking-splice", | ||
"[method]output-stream.blocking-flush", | ||
"[method]output-stream.blocking-write", | ||
"[method]output-stream.blocking-write-and-flush", | ||
"[method]output-stream.blocking-write-zeroes-and-flush", | ||
"[method]directory-entry-stream.read-directory-entry", | ||
"poll-list", | ||
"poll-one", | ||
], | ||
}, | ||
with: { | ||
"wasi:io/poll/pollable": latest::io::poll::Pollable, | ||
"wasi:io/streams/input-stream": latest::io::streams::InputStream, | ||
"wasi:io/streams/output-stream": latest::io::streams::OutputStream, | ||
"wasi:io/streams/error": latest::io::streams::Error, | ||
"wasi:filesystem/types/directory-entry-stream": latest::filesystem::types::DirectoryEntryStream, | ||
"wasi:filesystem/types/descriptor": latest::filesystem::types::Descriptor, | ||
"wasi:cli/terminal-input/terminal-input": latest::cli::terminal_input::TerminalInput, | ||
"wasi:cli/terminal-output/terminal-output": latest::cli::terminal_output::TerminalOutput, | ||
"wasi:sockets/tcp/tcp-socket": latest::sockets::tcp::TcpSocket, | ||
"wasi:sockets/udp/udp-socket": UdpSocket, | ||
"wasi:sockets/network/network": latest::sockets::network::Network, | ||
"wasi:sockets/ip-name-lookup/resolve-address-stream": latest::sockets::ip_name_lookup::ResolveAddressStream, | ||
"wasi:http/types/incoming-response": latest::http::types::IncomingResponse, | ||
"wasi:http/types/incoming-request": latest::http::types::IncomingRequest, | ||
"wasi:http/types/incoming-body": latest::http::types::IncomingBody, | ||
"wasi:http/types/outgoing-response": latest::http::types::OutgoingResponse, | ||
"wasi:http/types/outgoing-request": latest::http::types::OutgoingRequest, | ||
"wasi:http/types/outgoing-body": latest::http::types::OutgoingBody, | ||
"wasi:http/types/fields": latest::http::types::Fields, | ||
"wasi:http/types/response-outparam": latest::http::types::ResponseOutparam, | ||
"wasi:http/types/future-incoming-response": latest::http::types::FutureIncomingResponse, | ||
"wasi:http/types/future-trailers": latest::http::types::FutureTrailers, | ||
}, | ||
}); | ||
} | ||
|
||
mod wasi { | ||
pub use super::bindings::wasi::{ | ||
cli0_2_0_rc_2023_10_18 as cli, clocks0_2_0_rc_2023_10_18 as clocks, | ||
filesystem0_2_0_rc_2023_10_18 as filesystem, http0_2_0_rc_2023_10_18 as http, | ||
io0_2_0_rc_2023_10_18 as io, random0_2_0_rc_2023_10_18 as random, | ||
sockets0_2_0_rc_2023_10_18 as sockets, | ||
}; | ||
} | ||
|
||
pub mod exports { | ||
pub mod wasi { | ||
pub use super::super::bindings::exports::wasi::http0_2_0_rc_2023_10_18 as http; | ||
} | ||
} | ||
|
||
use wasi::cli::terminal_input::TerminalInput; | ||
use wasi::cli::terminal_output::TerminalOutput; | ||
|
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,86 +14,105 @@ mod latest { | |
} | ||
} | ||
|
||
wasmtime::component::bindgen!({ | ||
path: "../../wit-2023-11-10", | ||
interfaces: r#" | ||
include wasi:http/[email protected]; | ||
// NB: this is handling the historical behavior where Spin supported | ||
// more than "just" this snapshot of the proxy world but additionally | ||
// other CLI-related interfaces. | ||
include wasi:cli/[email protected]; | ||
"#, | ||
async: { | ||
only_imports: [ | ||
"[method]descriptor.advise", | ||
"[method]descriptor.create-directory-at", | ||
"[method]descriptor.get-flags", | ||
"[method]descriptor.get-type", | ||
"[method]descriptor.is-same-object", | ||
"[method]descriptor.link-at", | ||
"[method]descriptor.metadata-hash", | ||
"[method]descriptor.metadata-hash-at", | ||
"[method]descriptor.open-at", | ||
"[method]descriptor.read", | ||
"[method]descriptor.read-directory", | ||
"[method]descriptor.readlink-at", | ||
"[method]descriptor.remove-directory-at", | ||
"[method]descriptor.rename-at", | ||
"[method]descriptor.set-size", | ||
"[method]descriptor.set-times", | ||
"[method]descriptor.set-times-at", | ||
"[method]descriptor.stat", | ||
"[method]descriptor.stat-at", | ||
"[method]descriptor.symlink-at", | ||
"[method]descriptor.sync", | ||
"[method]descriptor.sync-data", | ||
"[method]descriptor.unlink-file-at", | ||
"[method]descriptor.write", | ||
"[method]input-stream.read", | ||
"[method]input-stream.blocking-read", | ||
"[method]input-stream.blocking-skip", | ||
"[method]input-stream.skip", | ||
"[method]output-stream.splice", | ||
"[method]output-stream.blocking-splice", | ||
"[method]output-stream.blocking-flush", | ||
"[method]output-stream.blocking-write", | ||
"[method]output-stream.blocking-write-and-flush", | ||
"[method]output-stream.blocking-write-zeroes-and-flush", | ||
"[method]directory-entry-stream.read-directory-entry", | ||
"[method]pollable.block", | ||
"[method]pollable.ready", | ||
"poll", | ||
] | ||
}, | ||
with: { | ||
"wasi:io/poll/pollable": latest::io::poll::Pollable, | ||
"wasi:io/streams/input-stream": latest::io::streams::InputStream, | ||
"wasi:io/streams/output-stream": latest::io::streams::OutputStream, | ||
"wasi:io/error/error": latest::io::error::Error, | ||
"wasi:filesystem/types/directory-entry-stream": latest::filesystem::types::DirectoryEntryStream, | ||
"wasi:filesystem/types/descriptor": latest::filesystem::types::Descriptor, | ||
"wasi:cli/terminal-input/terminal-input": latest::cli::terminal_input::TerminalInput, | ||
"wasi:cli/terminal-output/terminal-output": latest::cli::terminal_output::TerminalOutput, | ||
"wasi:sockets/tcp/tcp-socket": latest::sockets::tcp::TcpSocket, | ||
"wasi:sockets/udp/udp-socket": latest::sockets::udp::UdpSocket, | ||
"wasi:sockets/udp/outgoing-datagram-stream": latest::sockets::udp::OutgoingDatagramStream, | ||
"wasi:sockets/udp/incoming-datagram-stream": latest::sockets::udp::IncomingDatagramStream, | ||
"wasi:sockets/network/network": latest::sockets::network::Network, | ||
"wasi:sockets/ip-name-lookup/resolve-address-stream": latest::sockets::ip_name_lookup::ResolveAddressStream, | ||
"wasi:http/types/incoming-response": latest::http::types::IncomingResponse, | ||
"wasi:http/types/incoming-request": latest::http::types::IncomingRequest, | ||
"wasi:http/types/incoming-body": latest::http::types::IncomingBody, | ||
"wasi:http/types/outgoing-response": latest::http::types::OutgoingResponse, | ||
"wasi:http/types/outgoing-request": latest::http::types::OutgoingRequest, | ||
"wasi:http/types/outgoing-body": latest::http::types::OutgoingBody, | ||
"wasi:http/types/fields": latest::http::types::Fields, | ||
"wasi:http/types/response-outparam": latest::http::types::ResponseOutparam, | ||
"wasi:http/types/future-incoming-response": latest::http::types::FutureIncomingResponse, | ||
"wasi:http/types/future-trailers": latest::http::types::FutureTrailers, | ||
"wasi:http/types/request-options": latest::http::types::RequestOptions, | ||
}, | ||
}); | ||
mod bindings { | ||
use super::latest; | ||
|
||
wasmtime::component::bindgen!({ | ||
path: "../../wit", | ||
interfaces: r#" | ||
include wasi:http/[email protected]; | ||
// NB: this is handling the historical behavior where Spin supported | ||
// more than "just" this snapshot of the proxy world but additionally | ||
// other CLI-related interfaces. | ||
include wasi:cli/[email protected]; | ||
"#, | ||
async: { | ||
only_imports: [ | ||
"[method]descriptor.advise", | ||
"[method]descriptor.create-directory-at", | ||
"[method]descriptor.get-flags", | ||
"[method]descriptor.get-type", | ||
"[method]descriptor.is-same-object", | ||
"[method]descriptor.link-at", | ||
"[method]descriptor.metadata-hash", | ||
"[method]descriptor.metadata-hash-at", | ||
"[method]descriptor.open-at", | ||
"[method]descriptor.read", | ||
"[method]descriptor.read-directory", | ||
"[method]descriptor.readlink-at", | ||
"[method]descriptor.remove-directory-at", | ||
"[method]descriptor.rename-at", | ||
"[method]descriptor.set-size", | ||
"[method]descriptor.set-times", | ||
"[method]descriptor.set-times-at", | ||
"[method]descriptor.stat", | ||
"[method]descriptor.stat-at", | ||
"[method]descriptor.symlink-at", | ||
"[method]descriptor.sync", | ||
"[method]descriptor.sync-data", | ||
"[method]descriptor.unlink-file-at", | ||
"[method]descriptor.write", | ||
"[method]input-stream.read", | ||
"[method]input-stream.blocking-read", | ||
"[method]input-stream.blocking-skip", | ||
"[method]input-stream.skip", | ||
"[method]output-stream.splice", | ||
"[method]output-stream.blocking-splice", | ||
"[method]output-stream.blocking-flush", | ||
"[method]output-stream.blocking-write", | ||
"[method]output-stream.blocking-write-and-flush", | ||
"[method]output-stream.blocking-write-zeroes-and-flush", | ||
"[method]directory-entry-stream.read-directory-entry", | ||
"[method]pollable.block", | ||
"[method]pollable.ready", | ||
"poll", | ||
] | ||
}, | ||
with: { | ||
"wasi:io/poll/pollable": latest::io::poll::Pollable, | ||
"wasi:io/streams/input-stream": latest::io::streams::InputStream, | ||
"wasi:io/streams/output-stream": latest::io::streams::OutputStream, | ||
"wasi:io/error/error": latest::io::error::Error, | ||
"wasi:filesystem/types/directory-entry-stream": latest::filesystem::types::DirectoryEntryStream, | ||
"wasi:filesystem/types/descriptor": latest::filesystem::types::Descriptor, | ||
"wasi:cli/terminal-input/terminal-input": latest::cli::terminal_input::TerminalInput, | ||
"wasi:cli/terminal-output/terminal-output": latest::cli::terminal_output::TerminalOutput, | ||
"wasi:sockets/tcp/tcp-socket": latest::sockets::tcp::TcpSocket, | ||
"wasi:sockets/udp/udp-socket": latest::sockets::udp::UdpSocket, | ||
"wasi:sockets/udp/outgoing-datagram-stream": latest::sockets::udp::OutgoingDatagramStream, | ||
"wasi:sockets/udp/incoming-datagram-stream": latest::sockets::udp::IncomingDatagramStream, | ||
"wasi:sockets/network/network": latest::sockets::network::Network, | ||
"wasi:sockets/ip-name-lookup/resolve-address-stream": latest::sockets::ip_name_lookup::ResolveAddressStream, | ||
"wasi:http/types/incoming-response": latest::http::types::IncomingResponse, | ||
"wasi:http/types/incoming-request": latest::http::types::IncomingRequest, | ||
"wasi:http/types/incoming-body": latest::http::types::IncomingBody, | ||
"wasi:http/types/outgoing-response": latest::http::types::OutgoingResponse, | ||
"wasi:http/types/outgoing-request": latest::http::types::OutgoingRequest, | ||
"wasi:http/types/outgoing-body": latest::http::types::OutgoingBody, | ||
"wasi:http/types/fields": latest::http::types::Fields, | ||
"wasi:http/types/response-outparam": latest::http::types::ResponseOutparam, | ||
"wasi:http/types/future-incoming-response": latest::http::types::FutureIncomingResponse, | ||
"wasi:http/types/future-trailers": latest::http::types::FutureTrailers, | ||
"wasi:http/types/request-options": latest::http::types::RequestOptions, | ||
}, | ||
}); | ||
} | ||
|
||
mod wasi { | ||
pub use super::bindings::wasi::{ | ||
cli0_2_0_rc_2023_11_10 as cli, clocks0_2_0_rc_2023_11_10 as clocks, | ||
filesystem0_2_0_rc_2023_11_10 as filesystem, http0_2_0_rc_2023_11_10 as http, | ||
io0_2_0_rc_2023_11_10 as io, random0_2_0_rc_2023_11_10 as random, | ||
sockets0_2_0_rc_2023_11_10 as sockets, | ||
}; | ||
} | ||
|
||
pub mod exports { | ||
pub mod wasi { | ||
pub use super::super::bindings::exports::wasi::http0_2_0_rc_2023_11_10 as http; | ||
} | ||
} | ||
|
||
use wasi::cli::terminal_input::TerminalInput; | ||
use wasi::cli::terminal_output::TerminalOutput; | ||
|
This file contains 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
This file contains 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
Oops, something went wrong.