Update the wasm-tools family of crates (#5310)

Most of the changes here are the updates to the component model which
includes optional URL fields in imports/exports.
This commit is contained in:
Alex Crichton
2022-11-21 15:37:16 -06:00
committed by GitHub
parent c74706aa59
commit b305f251fb
21 changed files with 331 additions and 127 deletions

101
Cargo.lock generated
View File

@@ -1259,6 +1259,15 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "form_urlencoded"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
dependencies = [
"percent-encoding",
]
[[package]] [[package]]
name = "fs-set-times" name = "fs-set-times"
version = "0.17.0" version = "0.17.0"
@@ -1439,6 +1448,16 @@ version = "2.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005"
[[package]]
name = "idna"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
dependencies = [
"unicode-bidi",
"unicode-normalization",
]
[[package]] [[package]]
name = "indexmap" name = "indexmap"
version = "1.9.1" version = "1.9.1"
@@ -2046,6 +2065,12 @@ dependencies = [
"base64ct", "base64ct",
] ]
[[package]]
name = "percent-encoding"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
[[package]] [[package]]
name = "pin-project-lite" name = "pin-project-lite"
version = "0.2.9" version = "0.2.9"
@@ -2916,6 +2941,21 @@ dependencies = [
"serde_json", "serde_json",
] ]
[[package]]
name = "tinyvec"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
dependencies = [
"tinyvec_macros",
]
[[package]]
name = "tinyvec_macros"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]] [[package]]
name = "tokio" name = "tokio"
version = "1.18.1" version = "1.18.1"
@@ -3005,6 +3045,12 @@ version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
[[package]]
name = "unicode-bidi"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
[[package]] [[package]]
name = "unicode-linebreak" name = "unicode-linebreak"
version = "0.1.2" version = "0.1.2"
@@ -3014,6 +3060,15 @@ dependencies = [
"regex", "regex",
] ]
[[package]]
name = "unicode-normalization"
version = "0.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6"
dependencies = [
"tinyvec",
]
[[package]] [[package]]
name = "unicode-width" name = "unicode-width"
version = "0.1.9" version = "0.1.9"
@@ -3036,6 +3091,17 @@ dependencies = [
"subtle", "subtle",
] ]
[[package]]
name = "url"
version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
dependencies = [
"form_urlencoded",
"idna",
"percent-encoding",
]
[[package]] [[package]]
name = "uuid" name = "uuid"
version = "1.0.0" version = "1.0.0"
@@ -3250,18 +3316,18 @@ checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744"
[[package]] [[package]]
name = "wasm-encoder" name = "wasm-encoder"
version = "0.19.1" version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9424cdab516a16d4ea03c8f4a01b14e7b2d04a129dcc2bcdde5bcc5f68f06c41" checksum = "05632e0a66a6ed8cca593c24223aabd6262f256c3693ad9822c315285f010614"
dependencies = [ dependencies = [
"leb128", "leb128",
] ]
[[package]] [[package]]
name = "wasm-mutate" name = "wasm-mutate"
version = "0.2.11" version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b48cf16265251b7e11c57686ea068a77c87a67aada5cff4ee8dd50382820f01b" checksum = "3a3f74c801ac9b17a797d7d2ea441277bc1ded7ba521ca5146258d6510cc2f11"
dependencies = [ dependencies = [
"egg", "egg",
"log", "log",
@@ -3273,9 +3339,9 @@ dependencies = [
[[package]] [[package]]
name = "wasm-smith" name = "wasm-smith"
version = "0.11.8" version = "0.11.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f351bb8188460a311bceb4e2fd7423e09ba5c4a16fc03f3b258f454c4d706881" checksum = "ca488f460a34d3af30f1d65f26f108612f2755872f2aba9906c36f1c046ef1cf"
dependencies = [ dependencies = [
"arbitrary", "arbitrary",
"flagset", "flagset",
@@ -3325,11 +3391,12 @@ dependencies = [
[[package]] [[package]]
name = "wasmparser" name = "wasmparser"
version = "0.94.0" version = "0.95.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cdac7e1d98d70913ae3b4923dd7419c8ea7bdfd4c44a240a0ba305d929b7f191" checksum = "f2ea896273ea99b15132414be1da01ab0d8836415083298ecaffbe308eaac87a"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"url",
] ]
[[package]] [[package]]
@@ -3343,9 +3410,9 @@ dependencies = [
[[package]] [[package]]
name = "wasmprinter" name = "wasmprinter"
version = "0.2.43" version = "0.2.44"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c093ddb9e6526cc59d93032b9be7a8d014cc997e8a9372f394c9624f820d209" checksum = "ae24500f9cc27a4b2b338e66693ff53c08b17cf920bdc81e402a09fe7a204eea"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"wasmparser", "wasmparser",
@@ -3493,7 +3560,7 @@ dependencies = [
"wasmtime-wasi-crypto", "wasmtime-wasi-crypto",
"wasmtime-wasi-nn", "wasmtime-wasi-nn",
"wasmtime-wast", "wasmtime-wast",
"wast 49.0.0", "wast 50.0.0",
"wat", "wat",
"windows-sys", "windows-sys",
] ]
@@ -3763,7 +3830,7 @@ dependencies = [
"anyhow", "anyhow",
"log", "log",
"wasmtime", "wasmtime",
"wast 49.0.0", "wast 50.0.0",
] ]
[[package]] [[package]]
@@ -3788,9 +3855,9 @@ dependencies = [
[[package]] [[package]]
name = "wast" name = "wast"
version = "49.0.0" version = "50.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05ef81fcd60d244cafffeafac3d17615fdb2fddda6aca18f34a8ae233353587c" checksum = "a2cbb59d4ac799842791fe7e806fa5dbbf6b5554d538e51cc8e176db6ff0ae34"
dependencies = [ dependencies = [
"leb128", "leb128",
"memchr", "memchr",
@@ -3800,11 +3867,11 @@ dependencies = [
[[package]] [[package]]
name = "wat" name = "wat"
version = "1.0.51" version = "1.0.52"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c347c4460ffb311e95aafccd8c29e4888f241b9e4b3bb0e0ccbd998de2c8c0d" checksum = "584aaf7a1ecf4d383bbe1a25eeab0cbb8ff96acc6796707ff65cde48f4632f15"
dependencies = [ dependencies = [
"wast 49.0.0", "wast 50.0.0",
] ]
[[package]] [[package]]

View File

@@ -155,13 +155,13 @@ winch-codegen = { path = "winch/codegen", version = "=0.2.0" }
target-lexicon = { version = "0.12.3", default-features = false } target-lexicon = { version = "0.12.3", default-features = false }
anyhow = "1.0.22" anyhow = "1.0.22"
wasmparser = "0.94.0" wasmparser = "0.95.0"
wat = "1.0.51" wat = "1.0.52"
wast = "49.0.0" wast = "50.0.0"
wasmprinter = "0.2.43" wasmprinter = "0.2.44"
wasm-encoder = "0.19.1" wasm-encoder = "0.20.0"
wasm-smith = "0.11.8" wasm-smith = "0.11.9"
wasm-mutate = "0.2.11" wasm-mutate = "0.2.12"
windows-sys = "0.36.0" windows-sys = "0.36.0"
env_logger = "0.9" env_logger = "0.9"
rustix = "0.35.10" rustix = "0.35.10"

View File

@@ -840,14 +840,16 @@ impl<'a, 'data> Translator<'a, 'data> {
// An imported component instance is being aliased, so the type of // An imported component instance is being aliased, so the type of
// the aliased item is directly available from the instance type. // the aliased item is directly available from the instance type.
ComponentInstanceType::Index(ty) => { ComponentInstanceType::Index(ty) => {
self.result.push_typedef(self.types[ty].exports[name]) let (_url, ty) = &self.types[ty].exports[name];
self.result.push_typedef(*ty);
} }
// An imported component was instantiated so the type of the aliased // An imported component was instantiated so the type of the aliased
// export is available through the type of the export on the // export is available through the type of the export on the
// original component. // original component.
ComponentInstanceType::InstantiatedIndex(ty) => { ComponentInstanceType::InstantiatedIndex(ty) => {
self.result.push_typedef(self.types[ty].exports[name]) let (_, ty) = self.types[ty].exports[name];
self.result.push_typedef(ty);
} }
// A static nested component was instantiated which means that the // A static nested component was instantiated which means that the

View File

@@ -668,7 +668,7 @@ impl<'a> Inliner<'a> {
ComponentInstanceDef::Import(path, ty) => { ComponentInstanceDef::Import(path, ty) => {
let mut path = path.clone(); let mut path = path.clone();
path.path.push(name); path.path.push(name);
match self.types[*ty].exports[*name] { match self.types[*ty].exports[*name].1 {
TypeDef::ComponentFunc(_) => { TypeDef::ComponentFunc(_) => {
frame.component_funcs.push(ComponentFuncDef::Import(path)); frame.component_funcs.push(ComponentFuncDef::Import(path));
} }
@@ -909,7 +909,7 @@ impl<'a> Inliner<'a> {
// Note that for now this would only work with // Note that for now this would only work with
// module-exporting instances. // module-exporting instances.
ComponentInstanceDef::Import(path, ty) => { ComponentInstanceDef::Import(path, ty) => {
for (name, ty) in self.types[ty].exports.iter() { for (name, (_url, ty)) in self.types[ty].exports.iter() {
let mut path = path.clone(); let mut path = path.clone();
path.path.push(name); path.path.push(name);
let def = ComponentItemDef::from_import(path, *ty)?; let def = ComponentItemDef::from_import(path, *ty)?;

View File

@@ -553,13 +553,17 @@ impl ComponentTypesBuilder {
ComponentTypeDeclaration::Type(ty) => self.type_declaration_type(ty)?, ComponentTypeDeclaration::Type(ty) => self.type_declaration_type(ty)?,
ComponentTypeDeclaration::CoreType(ty) => self.type_declaration_core_type(ty)?, ComponentTypeDeclaration::CoreType(ty) => self.type_declaration_core_type(ty)?,
ComponentTypeDeclaration::Alias(alias) => self.type_declaration_alias(alias)?, ComponentTypeDeclaration::Alias(alias) => self.type_declaration_alias(alias)?,
ComponentTypeDeclaration::Export { name, ty } => { ComponentTypeDeclaration::Export { name, url, ty } => {
let ty = self.component_type_ref(ty); let ty = self.component_type_ref(ty);
result.exports.insert(name.to_string(), ty); result
.exports
.insert(name.to_string(), (url.to_string(), ty));
} }
ComponentTypeDeclaration::Import(import) => { ComponentTypeDeclaration::Import(import) => {
let ty = self.component_type_ref(&import.ty); let ty = self.component_type_ref(&import.ty);
result.imports.insert(import.name.to_string(), ty); result
.imports
.insert(import.name.to_string(), (import.url.to_string(), ty));
} }
} }
} }
@@ -581,9 +585,11 @@ impl ComponentTypesBuilder {
InstanceTypeDeclaration::Type(ty) => self.type_declaration_type(ty)?, InstanceTypeDeclaration::Type(ty) => self.type_declaration_type(ty)?,
InstanceTypeDeclaration::CoreType(ty) => self.type_declaration_core_type(ty)?, InstanceTypeDeclaration::CoreType(ty) => self.type_declaration_core_type(ty)?,
InstanceTypeDeclaration::Alias(alias) => self.type_declaration_alias(alias)?, InstanceTypeDeclaration::Alias(alias) => self.type_declaration_alias(alias)?,
InstanceTypeDeclaration::Export { name, ty } => { InstanceTypeDeclaration::Export { name, url, ty } => {
let ty = self.component_type_ref(ty); let ty = self.component_type_ref(ty);
result.exports.insert(name.to_string(), ty); result
.exports
.insert(name.to_string(), (url.to_string(), ty));
} }
} }
} }
@@ -971,9 +977,9 @@ pub struct TypeModule {
#[derive(Serialize, Deserialize, Default)] #[derive(Serialize, Deserialize, Default)]
pub struct TypeComponent { pub struct TypeComponent {
/// The named values that this component imports. /// The named values that this component imports.
pub imports: IndexMap<String, TypeDef>, pub imports: IndexMap<String, (String, TypeDef)>,
/// The named values that this component exports. /// The named values that this component exports.
pub exports: IndexMap<String, TypeDef>, pub exports: IndexMap<String, (String, TypeDef)>,
} }
/// The type of a component instance in the component model, or an instantiated /// The type of a component instance in the component model, or an instantiated
@@ -983,7 +989,7 @@ pub struct TypeComponent {
#[derive(Serialize, Deserialize, Default)] #[derive(Serialize, Deserialize, Default)]
pub struct TypeComponentInstance { pub struct TypeComponentInstance {
/// The list of exports that this component has along with their types. /// The list of exports that this component has along with their types.
pub exports: IndexMap<String, TypeDef>, pub exports: IndexMap<String, (String, TypeDef)>,
} }
/// A component function type in the component model. /// A component function type in the component model.

View File

@@ -71,7 +71,7 @@ impl TypeChecker<'_> {
// Like modules, every export in the expected type must be present in // Like modules, every export in the expected type must be present in
// the actual type. It's ok, though, to have extra exports in the actual // the actual type. It's ok, though, to have extra exports in the actual
// type. // type.
for (name, expected) in expected.exports.iter() { for (name, (_url, expected)) in expected.exports.iter() {
// Interface types may be exported from a component in order to give them a name, but // Interface types may be exported from a component in order to give them a name, but
// they don't have a definition in the sense that this search is interested in, so // they don't have a definition in the sense that this search is interested in, so
// ignore them. // ignore them.

View File

@@ -175,6 +175,16 @@ are only created when requested by the application, however, and otherwise
only does its stated purpose. only does its stated purpose.
""" """
[[audits.form_urlencoded]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "1.1.0"
notes = """
This is a small crate for working with url-encoded forms which doesn't have any
more than what it says on the tin. Contains one `unsafe` block related to
performance around utf-8 validation which is fairly easy to verify as correct.
"""
[[audits.heck]] [[audits.heck]]
who = "Alex Crichton <alex@alexcrichton.com>" who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
@@ -187,6 +197,17 @@ criteria = "safe-to-deploy"
version = "2.2.1" version = "2.2.1"
notes = "I am the author of this crate." notes = "I am the author of this crate."
[[audits.idna]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "0.3.0"
notes = """
This is a crate without unsafe code or usage of the standard library. The large
size of this crate comes from the large generated unicode tables file. This
crate is broadly used throughout the ecosystem and does not contain anything
suspicious.
"""
[[audits.indexmap-nostd]] [[audits.indexmap-nostd]]
who = "Alex Crichton <alex@alexcrichton.com>" who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-run" criteria = "safe-to-run"
@@ -280,6 +301,16 @@ criteria = "safe-to-deploy"
version = "1.0.0" version = "1.0.0"
notes = "I am the author of this crate." notes = "I am the author of this crate."
[[audits.percent-encoding]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "2.2.0"
notes = """
This crate is a single-file crate that does what it says on the tin. There are
a few `unsafe` blocks related to utf-8 validation which are locally verifiable
as correct and otherwise this crate is good to go.
"""
[[audits.regalloc2]] [[audits.regalloc2]]
who = "Jamey Sharp <jsharp@fastly.com>" who = "Jamey Sharp <jsharp@fastly.com>"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
@@ -334,6 +365,60 @@ criteria = "safe-to-deploy"
version = "0.23.0" version = "0.23.0"
notes = "The Bytecode Alliance is the author of this crate." notes = "The Bytecode Alliance is the author of this crate."
[[audits.tinyvec]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "1.6.0"
notes = """
This crate, while it implements collections, does so without `std::*` APIs and
without `unsafe`. Skimming the crate everything looks reasonable and what one
would expect from idiomatic safe collections in Rust.
"""
[[audits.tinyvec_macros]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "0.1.0"
notes = """
This is a trivial crate which only contains a singular macro definition which is
intended to multiplex across the internal representation of a tinyvec,
presumably. This trivially doesn't contain anything bad.
"""
[[audits.unicode-bidi]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "0.3.8"
notes = """
This crate has no unsafe code and does not use `std::*`. Skimming the crate it
does not attempt to out of the bounds of what it's already supposed to be doing.
"""
[[audits.unicode-normalization]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "0.1.19"
notes = """
This crate contains one usage of `unsafe` which I have manually checked to see
it as correct. This crate's size comes in large part due to the generated
unicode tables that it contains. This crate is additionally widely used
throughout the ecosystem and skimming the crate shows no usage of `std::*` APIs
and nothing suspicious.
"""
[[audits.url]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "2.3.1"
notes = """
This crate contains no `unsafe` code and otherwise doesn't use any functionality
it's not supposed to from `std` or such. This crate is the defacto standard for
URL parsing in the Rust community with widespread usage to battle-test, harden,
and suss out bugs. I've historically reviewed this crate in the past and it
is similar to what it once was back then. Skimming over the crate there is
nothing suspicious and it's everything you'd expect a Rust URL parser to be.
"""
[[audits.wasm-encoder]] [[audits.wasm-encoder]]
who = "Alex Crichton <alex@alexcrichton.com>" who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
@@ -370,6 +455,12 @@ criteria = "safe-to-deploy"
version = "0.19.0" version = "0.19.0"
notes = "The Bytecode Alliance is the author of this crate." notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasm-encoder]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "0.20.0"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasm-encoder]] [[audits.wasm-encoder]]
who = "Alex Crichton <alex@alexcrichton.com>" who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
@@ -418,6 +509,12 @@ criteria = "safe-to-run"
version = "0.2.11" version = "0.2.11"
notes = "The Bytecode Alliance is the author of this crate." notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasm-mutate]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-run"
version = "0.2.12"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasm-smith]] [[audits.wasm-smith]]
who = "Alex Crichton <alex@alexcrichton.com>" who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
@@ -460,6 +557,27 @@ criteria = "safe-to-run"
version = "0.11.8" version = "0.11.8"
notes = "The Bytecode Alliance is the author of this crate." notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasm-smith]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-run"
version = "0.11.9"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasmi]]
who = "Robin Freyler <robin.freyler@gmail.com>"
criteria = "safe-to-run"
version = "0.20.0"
notes = """
I am the author of this crate. It contains unsafe Rust code.
However, the crate does not read or write data from any parts of the filesystem,
it does not install software upon compilation e.g. via build scripts,
it does not connect to network endpoints and does not misuse system resources.
If any of the above happens it is either by the user explicitly telling the
crate to do so (it is an interpreter) or due to a bug or other unintended
behavior.
"""
[[audits.wasmi_arena]] [[audits.wasmi_arena]]
who = "Alex Crichton <alex@alexcrichton.com>" who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-run" criteria = "safe-to-run"
@@ -487,21 +605,6 @@ criteria = "safe-to-run"
version = "0.5.0" version = "0.5.0"
notes = "See notes for version 0.4.0" notes = "See notes for version 0.4.0"
[[audits.wasmi]]
who = "Robin Freyler <robin.freyler@gmail.com>"
criteria = "safe-to-run"
version = "0.20.0"
notes = """
I am the author of this crate. It contains unsafe Rust code.
However, the crate does not read or write data from any parts of the filesystem,
it does not install software upon compilation e.g. via build scripts,
it does not connect to network endpoints and does not misuse system resources.
If any of the above happens it is either by the user explicitly telling the
crate to do so (it is an interpreter) or due to a bug or other unintended
behavior.
"""
[[audits.wasmparser]] [[audits.wasmparser]]
who = "Alex Crichton <alex@alexcrichton.com>" who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
@@ -550,6 +653,12 @@ criteria = "safe-to-deploy"
version = "0.94.0" version = "0.94.0"
notes = "The Bytecode Alliance is the author of this crate." notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasmparser]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "0.95.0"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasmparser-nostd]] [[audits.wasmparser-nostd]]
who = "Alex Crichton <alex@alexcrichton.com>" who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-run" criteria = "safe-to-run"
@@ -603,6 +712,12 @@ criteria = "safe-to-deploy"
version = "0.2.43" version = "0.2.43"
notes = "The Bytecode Alliance is the author of this crate." notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasmprinter]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "0.2.44"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wast]] [[audits.wast]]
who = "Alex Crichton <alex@alexcrichton.com>" who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
@@ -651,6 +766,12 @@ criteria = "safe-to-deploy"
version = "49.0.0" version = "49.0.0"
notes = "The Bytecode Alliance is the author of this crate." notes = "The Bytecode Alliance is the author of this crate."
[[audits.wast]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "50.0.0"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wat]] [[audits.wat]]
who = "Alex Crichton <alex@alexcrichton.com>" who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
@@ -681,6 +802,12 @@ criteria = "safe-to-deploy"
version = "1.0.51" version = "1.0.51"
notes = "The Bytecode Alliance is the author of this crate." notes = "The Bytecode Alliance is the author of this crate."
[[audits.wat]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "1.0.52"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wat]] [[audits.wat]]
who = "Alex Crichton <alex@alexcrichton.com>" who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"

View File

@@ -482,10 +482,6 @@ criteria = "safe-to-deploy"
version = "0.6.5" version = "0.6.5"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
[[exemptions.memory_units]]
version = "0.3.0"
criteria = "safe-to-run"
[[exemptions.miette]] [[exemptions.miette]]
version = "5.1.0" version = "5.1.0"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
@@ -1022,10 +1018,6 @@ criteria = "safe-to-run"
version = "0.2.80" version = "0.2.80"
criteria = "safe-to-run" criteria = "safe-to-run"
[[exemptions.wasmi]]
version = "0.19.0"
criteria = "safe-to-run"
[[exemptions.web-sys]] [[exemptions.web-sys]]
version = "0.3.57" version = "0.3.57"
criteria = "safe-to-run" criteria = "safe-to-run"

View File

@@ -353,6 +353,17 @@ who = "Mike Hommey <mh+mozilla@glandium.org>"
criteria = "safe-to-run" criteria = "safe-to-run"
delta = "0.1.27 -> 0.1.29" delta = "0.1.27 -> 0.1.29"
[[audits.mozilla.audits.unicode-normalization]]
who = "Mike Hommey <mh+mozilla@glandium.org>"
criteria = "safe-to-deploy"
delta = "0.1.19 -> 0.1.20"
notes = "I am the author of most of these changes upstream, and prepared the release myself, at which point I looked at the other changes since 0.1.19."
[[audits.mozilla.audits.unicode-normalization]]
who = "Mike Hommey <mh+mozilla@glandium.org>"
criteria = "safe-to-deploy"
delta = "0.1.20 -> 0.1.21"
[[audits.mozilla.audits.wasm-encoder]] [[audits.mozilla.audits.wasm-encoder]]
who = "Ryan Hunt <rhunt@eqrion.net>" who = "Ryan Hunt <rhunt@eqrion.net>"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
@@ -396,7 +407,6 @@ delta = "0.87.0 -> 0.88.0"
who = "Ryan Hunt <rhunt@eqrion.net>" who = "Ryan Hunt <rhunt@eqrion.net>"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
version = "44.0.0" version = "44.0.0"
notes = "Maintained by the Bytecode Alliance, with contributions from Mozilla. wast has no unsafe code and the only ambient capability it uses is to read the full contents of a file that is given to it."
[[audits.mozilla.audits.wast]] [[audits.mozilla.audits.wast]]
who = "Yury Delendik <ydelendik@mozilla.com>" who = "Yury Delendik <ydelendik@mozilla.com>"

View File

@@ -27,7 +27,7 @@ fn components_importing_modules() -> Result<()> {
&engine, &engine,
r#" r#"
(component (component
(import "" (core module)) (import "a" (core module))
) )
"#, "#,
)?; )?;
@@ -36,7 +36,7 @@ fn components_importing_modules() -> Result<()> {
&engine, &engine,
r#" r#"
(component (component
(import "" (core module $m1 (import "a" (core module $m1
(import "" "" (func)) (import "" "" (func))
(import "" "x" (global i32)) (import "" "x" (global i32))

View File

@@ -88,12 +88,12 @@ fn cannot_serialize_exported_module() -> Result<()> {
&engine, &engine,
r#"(component r#"(component
(core module $m) (core module $m)
(export "" (core module $m)) (export "a" (core module $m))
)"#, )"#,
)?; )?;
let mut store = Store::new(&engine, ()); let mut store = Store::new(&engine, ());
let instance = Linker::new(&engine).instantiate(&mut store, &component)?; let instance = Linker::new(&engine).instantiate(&mut store, &component)?;
let module = instance.get_module(&mut store, "").unwrap(); let module = instance.get_module(&mut store, "a").unwrap();
assert!(module.serialize().is_err()); assert!(module.serialize().is_err());
Ok(()) Ok(())
} }

View File

@@ -400,7 +400,7 @@ fn everything() -> Result<()> {
r#" r#"
(record (record
(field "A" u32) (field "A" u32)
(field "B" (enum "1" "2")) (field "B" (enum "a" "b"))
(field "C" (record (field "D" bool) (field "E" u32))) (field "C" (record (field "D" bool) (field "E" u32)))
(field "F" (list (flags "G" "H" "I"))) (field "F" (list (flags "G" "H" "I")))
(field "J" (variant (field "J" (variant
@@ -464,7 +464,7 @@ fn everything() -> Result<()> {
let f_element_type = &f_type.unwrap_list().ty(); let f_element_type = &f_type.unwrap_list().ty();
let input = ty.unwrap_record().new_val([ let input = ty.unwrap_record().new_val([
("A", Val::U32(32343)), ("A", Val::U32(32343)),
("B", b_type.unwrap_enum().new_val("2")?), ("B", b_type.unwrap_enum().new_val("b")?),
( (
"C", "C",
c_type c_type

View File

@@ -2411,7 +2411,7 @@ fn run_export_with_internal_adapter() -> Result<()> {
(func (export "add-five") (type $t) (canon lift (core func $m "add-five"))) (func (export "add-five") (type $t) (canon lift (core func $m "add-five")))
) )
(component $b (component $b
(import "interface-0.1.0" (instance $i (import "interface-v1" (instance $i
(export "add-five" (func (type $t))))) (export "add-five" (func (type $t)))))
(core module $m (core module $m
(func $add-five (import "interface-0.1.0" "add-five") (param i32) (result i32)) (func $add-five (import "interface-0.1.0" "add-five") (param i32) (result i32))
@@ -2428,7 +2428,7 @@ fn run_export_with_internal_adapter() -> Result<()> {
(export "run" (func 1)) (export "run" (func 1))
) )
(instance $a (instantiate $a)) (instance $a (instantiate $a))
(instance $b (instantiate $b (with "interface-0.1.0" (instance $a)))) (instance $b (instantiate $b (with "interface-v1" (instance $a))))
(export "run" (func $b "run")) (export "run" (func $b "run"))
) )
"#; "#;

View File

@@ -18,7 +18,7 @@ fn can_compile() -> Result<()> {
Component::new( Component::new(
&engine, &engine,
r#"(component r#"(component
(import "" (func $f)) (import "a" (func $f))
(core func (canon lower (func $f))) (core func (canon lower (func $f)))
)"#, )"#,
)?; )?;
@@ -26,7 +26,7 @@ fn can_compile() -> Result<()> {
&engine, &engine,
format!( format!(
r#"(component r#"(component
(import "" (func $f (param "a" string))) (import "a" (func $f (param "a" string)))
{libc} {libc}
(core func (canon lower (func $f) (memory $libc "memory") (realloc (func $libc "realloc")))) (core func (canon lower (func $f) (memory $libc "memory") (realloc (func $libc "realloc"))))
)"# )"#
@@ -84,7 +84,7 @@ fn can_compile() -> Result<()> {
fn simple() -> Result<()> { fn simple() -> Result<()> {
let component = r#" let component = r#"
(component (component
(import "" (func $log (param "a" string))) (import "a" (func $log (param "a" string)))
(core module $libc (core module $libc
(memory (export "memory") 1) (memory (export "memory") 1)
@@ -126,7 +126,7 @@ fn simple() -> Result<()> {
let mut linker = Linker::new(&engine); let mut linker = Linker::new(&engine);
linker.root().func_wrap( linker.root().func_wrap(
"", "a",
|mut store: StoreContextMut<'_, Option<String>>, (arg,): (WasmStr,)| -> Result<_> { |mut store: StoreContextMut<'_, Option<String>>, (arg,): (WasmStr,)| -> Result<_> {
let s = arg.to_str(&store)?.to_string(); let s = arg.to_str(&store)?.to_string();
assert!(store.data().is_none()); assert!(store.data().is_none());
@@ -146,7 +146,7 @@ fn simple() -> Result<()> {
let mut linker = Linker::new(&engine); let mut linker = Linker::new(&engine);
linker.root().func_new( linker.root().func_new(
&component, &component,
"", "a",
|mut store: StoreContextMut<'_, Option<String>>, args, _results| { |mut store: StoreContextMut<'_, Option<String>>, args, _results| {
if let Val::String(s) = &args[0] { if let Val::String(s) = &args[0] {
assert!(store.data().is_none()); assert!(store.data().is_none());

View File

@@ -214,14 +214,14 @@ fn test_ptr_out_of_bounds(engine: &Engine, src: &str, dst: &str) -> Result<()> {
(memory (export "memory") 1) (memory (export "memory") 1)
) )
(core instance $m (instantiate $m)) (core instance $m (instantiate $m))
(func (export "") (param "a" string) (func (export "a") (param "a" string)
(canon lift (core func $m "") (realloc (func $m "realloc")) (memory $m "memory") (canon lift (core func $m "") (realloc (func $m "realloc")) (memory $m "memory")
string-encoding={dst}) string-encoding={dst})
) )
) )
(component $c2 (component $c2
(import "" (func $f (param "a" string))) (import "a" (func $f (param "a" string)))
(core module $libc (core module $libc
(memory (export "memory") 1) (memory (export "memory") 1)
) )
@@ -237,7 +237,7 @@ fn test_ptr_out_of_bounds(engine: &Engine, src: &str, dst: &str) -> Result<()> {
) )
(instance $c (instantiate $c)) (instance $c (instantiate $c))
(instance $c2 (instantiate $c2 (with "" (func $c "")))) (instance $c2 (instantiate $c2 (with "a" (func $c "a"))))
) )
"# "#
); );
@@ -282,14 +282,14 @@ fn test_ptr_overflow(engine: &Engine, src: &str, dst: &str) -> Result<()> {
(memory (export "memory") 1) (memory (export "memory") 1)
) )
(core instance $m (instantiate $m)) (core instance $m (instantiate $m))
(func (export "") (param "a" string) (func (export "a") (param "a" string)
(canon lift (core func $m "") (realloc (func $m "realloc")) (memory $m "memory") (canon lift (core func $m "") (realloc (func $m "realloc")) (memory $m "memory")
string-encoding={dst}) string-encoding={dst})
) )
) )
(component $c2 (component $c2
(import "" (func $f (param "a" string))) (import "a" (func $f (param "a" string)))
(core module $libc (core module $libc
(memory (export "memory") 1) (memory (export "memory") 1)
) )
@@ -305,7 +305,7 @@ fn test_ptr_overflow(engine: &Engine, src: &str, dst: &str) -> Result<()> {
) )
(instance $c (instantiate $c)) (instance $c (instantiate $c))
(instance $c2 (instantiate $c2 (with "" (func $c "")))) (instance $c2 (instantiate $c2 (with "a" (func $c "a"))))
(export "f" (func $c2 "f")) (export "f" (func $c2 "f"))
) )
"# "#
@@ -387,14 +387,14 @@ fn test_realloc_oob(engine: &Engine, src: &str, dst: &str) -> Result<()> {
(memory (export "memory") 1) (memory (export "memory") 1)
) )
(core instance $m (instantiate $m)) (core instance $m (instantiate $m))
(func (export "") (param "a" string) (func (export "a") (param "a" string)
(canon lift (core func $m "") (realloc (func $m "realloc")) (memory $m "memory") (canon lift (core func $m "") (realloc (func $m "realloc")) (memory $m "memory")
string-encoding={dst}) string-encoding={dst})
) )
) )
(component $c2 (component $c2
(import "" (func $f (param "a" string))) (import "a" (func $f (param "a" string)))
(core module $libc (core module $libc
(memory (export "memory") 1) (memory (export "memory") 1)
) )
@@ -410,7 +410,7 @@ fn test_realloc_oob(engine: &Engine, src: &str, dst: &str) -> Result<()> {
) )
(instance $c (instantiate $c)) (instance $c (instantiate $c))
(instance $c2 (instantiate $c2 (with "" (func $c "")))) (instance $c2 (instantiate $c2 (with "a" (func $c "a"))))
(export "f" (func $c2 "f")) (export "f" (func $c2 "f"))
) )
"# "#
@@ -534,14 +534,14 @@ fn test_raw_when_encoded(
(memory (export "memory") 1) (memory (export "memory") 1)
) )
(core instance $m (instantiate $m)) (core instance $m (instantiate $m))
(func (export "") (param "a" string) (func (export "a") (param "a" string)
(canon lift (core func $m "") (realloc (func $m "realloc")) (memory $m "memory") (canon lift (core func $m "") (realloc (func $m "realloc")) (memory $m "memory")
string-encoding={dst}) string-encoding={dst})
) )
) )
(component $c2 (component $c2
(import "" (func $f (param "a" string))) (import "a" (func $f (param "a" string)))
(core module $libc (core module $libc
(memory (export "memory") 1) (memory (export "memory") 1)
(func (export "realloc") (param i32 i32 i32 i32) (result i32) i32.const 0) (func (export "realloc") (param i32 i32 i32 i32) (result i32) i32.const 0)
@@ -560,7 +560,7 @@ fn test_raw_when_encoded(
) )
(instance $c (instantiate $c)) (instance $c (instantiate $c))
(instance $c2 (instantiate $c2 (with "" (func $c "")))) (instance $c2 (instantiate $c2 (with "a" (func $c "a"))))
(export "f" (func $c2 "f")) (export "f" (func $c2 "f"))
) )
"# "#

View File

@@ -7,7 +7,7 @@
(func $foo (canon lift (core func $m ""))) (func $foo (canon lift (core func $m "")))
(component $c (component $c
(import "" (func $foo)) (import "a" (func $foo))
(core func $foo (canon lower (func $foo))) (core func $foo (canon lower (func $foo)))
(core module $m2 (core module $m2
@@ -17,7 +17,7 @@
(core instance $m2 (instantiate $m2 (with "" (instance (export "" (func $foo)))))) (core instance $m2 (instantiate $m2 (with "" (instance (export "" (func $foo))))))
) )
(instance $c (instantiate $c (with "" (func $foo)))) (instance $c (instantiate $c (with "a" (func $foo))))
) )
;; boolean parameters ;; boolean parameters
@@ -835,7 +835,7 @@
(func (export "s16") (param "a" s16) (canon lift (core func $m "s"))) (func (export "s16") (param "a" s16) (canon lift (core func $m "s")))
) )
(component $c2 (component $c2
(import "" (instance $i (import "a" (instance $i
(export "u8" (func (param "a" u8))) (export "u8" (func (param "a" u8)))
(export "s8" (func (param "a" s8))) (export "s8" (func (param "a" s8)))
(export "u16" (func (param "a" u16))) (export "u16" (func (param "a" u16)))
@@ -878,7 +878,7 @@
)) ))
) )
(instance $c1 (instantiate $c1)) (instance $c1 (instantiate $c1))
(instance $c2 (instantiate $c2 (with "" (instance $c1)))) (instance $c2 (instantiate $c2 (with "a" (instance $c1))))
) )
;; translation of locals between different types ;; translation of locals between different types
@@ -956,7 +956,7 @@
(func (export "e") (type $func_e) (canon lift (core func $m "e"))) (func (export "e") (type $func_e) (canon lift (core func $m "e")))
) )
(component $c2 (component $c2
(import "" (instance $i (import "a" (instance $i
(export "a" (func (type $func_a))) (export "a" (func (type $func_a)))
(export "b" (func (type $func_b))) (export "b" (func (type $func_b)))
(export "c" (func (type $func_c))) (export "c" (func (type $func_c)))
@@ -1008,7 +1008,7 @@
)) ))
) )
(instance $c1 (instantiate $c1)) (instance $c1 (instantiate $c1))
(instance $c2 (instantiate $c2 (with "" (instance $c1)))) (instance $c2 (instantiate $c2 (with "a" (instance $c1))))
) )
;; different size variants ;; different size variants
@@ -1063,7 +1063,7 @@
(func (export "a") (param "x" u8) (param "a" $a) (canon lift (core func $m "a"))) (func (export "a") (param "x" u8) (param "a" $a) (canon lift (core func $m "a")))
) )
(component $c2 (component $c2
(import "" (instance $i (import "a" (instance $i
(export "a" (func (param "x" u8) (param "a" $a))) (export "a" (func (param "x" u8) (param "a" $a)))
)) ))
@@ -1111,7 +1111,7 @@
)) ))
) )
(instance $c1 (instantiate $c1)) (instance $c1 (instantiate $c1))
(instance $c2 (instantiate $c2 (with "" (instance $c1)))) (instance $c2 (instantiate $c2 (with "a" (instance $c1))))
) )
;; roundtrip some valid chars ;; roundtrip some valid chars
@@ -1124,7 +1124,7 @@
(func (export "a") (param "a" char) (result char) (canon lift (core func $m "a"))) (func (export "a") (param "a" char) (result char) (canon lift (core func $m "a")))
) )
(component $c2 (component $c2
(import "" (instance $i (import "a" (instance $i
(export "a" (func (param "a" char) (result char))) (export "a" (func (param "a" char) (result char)))
)) ))
@@ -1158,7 +1158,7 @@
(func (export "roundtrip") (param "a" char) (canon lift (core func $m "roundtrip"))) (func (export "roundtrip") (param "a" char) (canon lift (core func $m "roundtrip")))
) )
(instance $c1 (instantiate $c1)) (instance $c1 (instantiate $c1))
(instance $c2 (instantiate $c2 (with "" (instance $c1)))) (instance $c2 (instantiate $c2 (with "a" (instance $c1))))
(export "roundtrip" (func $c2 "roundtrip")) (export "roundtrip" (func $c2 "roundtrip"))
) )
@@ -1176,7 +1176,7 @@
(func (export "a") (param "a" char) (canon lift (core func $m "a"))) (func (export "a") (param "a" char) (canon lift (core func $m "a")))
) )
(component $c2 (component $c2
(import "" (instance $i (export "a" (func (param "a" char))))) (import "a" (instance $i (export "a" (func (param "a" char)))))
(core func $a (canon lower (func $i "a"))) (core func $a (canon lower (func $i "a")))
(core module $m (core module $m
(import "" "a" (func $a (param i32))) (import "" "a" (func $a (param i32)))
@@ -1186,7 +1186,7 @@
(core instance (instantiate $m (with "" (instance (export "a" (func $a)))))) (core instance (instantiate $m (with "" (instance (export "a" (func $a))))))
) )
(instance $c1 (instantiate $c1)) (instance $c1 (instantiate $c1))
(instance $c2 (instantiate $c2 (with "" (instance $c1)))) (instance $c2 (instantiate $c2 (with "a" (instance $c1))))
) )
"unreachable") "unreachable")
(assert_trap (assert_trap
@@ -1197,7 +1197,7 @@
(func (export "a") (param "a" char) (canon lift (core func $m "a"))) (func (export "a") (param "a" char) (canon lift (core func $m "a")))
) )
(component $c2 (component $c2
(import "" (instance $i (export "a" (func (param "a" char))))) (import "a" (instance $i (export "a" (func (param "a" char)))))
(core func $a (canon lower (func $i "a"))) (core func $a (canon lower (func $i "a")))
(core module $m (core module $m
(import "" "a" (func $a (param i32))) (import "" "a" (func $a (param i32)))
@@ -1207,7 +1207,7 @@
(core instance (instantiate $m (with "" (instance (export "a" (func $a)))))) (core instance (instantiate $m (with "" (instance (export "a" (func $a))))))
) )
(instance $c1 (instantiate $c1)) (instance $c1 (instantiate $c1))
(instance $c2 (instantiate $c2 (with "" (instance $c1)))) (instance $c2 (instantiate $c2 (with "a" (instance $c1))))
) )
"unreachable") "unreachable")
(assert_trap (assert_trap
@@ -1218,7 +1218,7 @@
(func (export "a") (param "a" char) (canon lift (core func $m "a"))) (func (export "a") (param "a" char) (canon lift (core func $m "a")))
) )
(component $c2 (component $c2
(import "" (instance $i (export "a" (func (param "a" char))))) (import "a" (instance $i (export "a" (func (param "a" char)))))
(core func $a (canon lower (func $i "a"))) (core func $a (canon lower (func $i "a")))
(core module $m (core module $m
(import "" "a" (func $a (param i32))) (import "" "a" (func $a (param i32)))
@@ -1228,7 +1228,7 @@
(core instance (instantiate $m (with "" (instance (export "a" (func $a)))))) (core instance (instantiate $m (with "" (instance (export "a" (func $a))))))
) )
(instance $c1 (instantiate $c1)) (instance $c1 (instantiate $c1))
(instance $c2 (instantiate $c2 (with "" (instance $c1)))) (instance $c2 (instantiate $c2 (with "a" (instance $c1))))
) )
"unreachable") "unreachable")
@@ -1332,7 +1332,7 @@
(instance $c1 (instantiate $c1)) (instance $c1 (instantiate $c1))
(component $c2 (component $c2
(import "" (instance $i (import "a" (instance $i
(export "f0" (func (param "a" $f0))) (export "f0" (func (param "a" $f0)))
(export "f1" (func (param "a" $f1))) (export "f1" (func (param "a" $f1)))
(export "f8" (func (param "a" $f8))) (export "f8" (func (param "a" $f8)))
@@ -1397,7 +1397,7 @@
)) ))
)) ))
) )
(instance (instantiate $c2 (with "" (instance $c1)))) (instance (instantiate $c2 (with "a" (instance $c1))))
) )
;; Adapters are used slightly out-of-order here to stress the internals of ;; Adapters are used slightly out-of-order here to stress the internals of

View File

@@ -70,7 +70,7 @@
;; Test to see if a component with a type export can be instantiated. ;; Test to see if a component with a type export can be instantiated.
(component (component
(type string) (type string)
(export "" (type 0)) (export "a" (type 0))
) )
;; double-check the start function runs by ensuring that a trap shows up and it ;; double-check the start function runs by ensuring that a trap shows up and it

View File

@@ -330,8 +330,8 @@
) )
(component $c1 (component $c1
(component $c2 (export "") (component $c2 (export "a")
(component $c3 (export "") (component $c3 (export "a")
(alias outer $C $m (core module $my_module)) (alias outer $C $m (core module $my_module))
(alias outer $C $c (component $my_component)) (alias outer $C $c (component $my_component))
@@ -342,8 +342,8 @@
) )
(instance $i1 (instantiate $c1)) (instance $i1 (instantiate $c1))
(instance $i2 (instantiate (component $i1 ""))) (instance $i2 (instantiate (component $i1 "a")))
(instance $i3 (instantiate (component $i2 ""))) (instance $i3 (instantiate (component $i2 "a")))
(core instance $m1 (instantiate (module $i3 "m"))) (core instance $m1 (instantiate (module $i3 "m")))
(instance $c (instantiate (component $i3 "c"))) (instance $c (instantiate (component $i3 "c")))
@@ -412,10 +412,10 @@
;; thread the host function through an instance ;; thread the host function through an instance
(component $c (component $c
(import "" (func $f (result u32))) (import "a" (func $f (result u32)))
(export "f" (func $f)) (export "f" (func $f))
) )
(instance $c (instantiate $c (with "" (func $import)))) (instance $c (instantiate $c (with "a" (func $import))))
(alias export $c "f" (func $import2)) (alias export $c "f" (func $import2))
;; thread the host function into a nested component ;; thread the host function into a nested component

View File

@@ -23,20 +23,20 @@
(assert_invalid (assert_invalid
(component (component
(import "" (component)) (import "a" (component))
) )
"root-level component imports are not supported") "root-level component imports are not supported")
(assert_invalid (assert_invalid
(component (component
(component (export "")) (component (export "a"))
) )
"exporting a component from the root component is not supported") "exporting a component from the root component is not supported")
(component (component
(core module $m (func (export ""))) (core module $m (func (export "")))
(core instance $m (instantiate $m)) (core instance $m (instantiate $m))
(func (export "") (canon lift (core func $m ""))) (func (export "a") (canon lift (core func $m "")))
) )
(assert_return (invoke "")) (assert_return (invoke "a"))

View File

@@ -8,13 +8,13 @@
(memory (export "memory") 1) (memory (export "memory") 1)
) )
(core instance $m (instantiate $m)) (core instance $m (instantiate $m))
(func (export "") (param "a" string) (func (export "a") (param "a" string)
(canon lift (core func $m "") (realloc (func $m "realloc")) (memory $m "memory")) (canon lift (core func $m "") (realloc (func $m "realloc")) (memory $m "memory"))
) )
) )
(component $c2 (component $c2
(import "" (func $f (param "a" string))) (import "a" (func $f (param "a" string)))
(core module $libc (core module $libc
(memory (export "memory") 1) (memory (export "memory") 1)
) )
@@ -30,7 +30,7 @@
) )
(instance $c (instantiate $c)) (instance $c (instantiate $c))
(instance $c2 (instantiate $c2 (with "" (func $c "")))) (instance $c2 (instantiate $c2 (with "a" (func $c "a"))))
) )
"unreachable") "unreachable")
@@ -44,13 +44,13 @@
(memory (export "memory") 1) (memory (export "memory") 1)
) )
(core instance $m (instantiate $m)) (core instance $m (instantiate $m))
(func (export "") (param "a" string) (func (export "a") (param "a" string)
(canon lift (core func $m "") (realloc (func $m "realloc")) (memory $m "memory")) (canon lift (core func $m "") (realloc (func $m "realloc")) (memory $m "memory"))
) )
) )
(component $c2 (component $c2
(import "" (func $f (param "a" string))) (import "a" (func $f (param "a" string)))
(core module $libc (core module $libc
(memory (export "memory") 1) (memory (export "memory") 1)
) )
@@ -66,7 +66,7 @@
) )
(instance $c (instantiate $c)) (instance $c (instantiate $c))
(instance $c2 (instantiate $c2 (with "" (func $c "")))) (instance $c2 (instantiate $c2 (with "a" (func $c "a"))))
) )
"unreachable") "unreachable")
@@ -80,14 +80,14 @@
(memory (export "memory") 1) (memory (export "memory") 1)
) )
(core instance $m (instantiate $m)) (core instance $m (instantiate $m))
(func (export "") (param "a" string) (func (export "a") (param "a" string)
(canon lift (core func $m "") (realloc (func $m "realloc")) (memory $m "memory") (canon lift (core func $m "") (realloc (func $m "realloc")) (memory $m "memory")
string-encoding=utf8) string-encoding=utf8)
) )
) )
(component $c2 (component $c2
(import "" (func $f (param "a" string))) (import "a" (func $f (param "a" string)))
(core module $libc (core module $libc
(memory (export "memory") 1) (memory (export "memory") 1)
) )
@@ -103,6 +103,6 @@
) )
(instance $c (instantiate $c)) (instance $c (instantiate $c))
(instance $c2 (instantiate $c2 (with "" (func $c "")))) (instance $c2 (instantiate $c2 (with "a" (func $c "a"))))
) )
"unreachable") "unreachable")

View File

@@ -60,7 +60,7 @@
(type (instance)) (type (instance))
(type (component (type (component
(import "" (func (type $empty))) (import "x" (func (type $empty)))
(import "y" (func)) (import "y" (func))
(import "z" (component)) (import "z" (component))
@@ -71,7 +71,7 @@
)) ))
(type (instance (type (instance
(export "" (func (type $empty))) (export "x" (func (type $empty)))
(export "y" (func)) (export "y" (func))
(export "z" (component)) (export "z" (component))
@@ -97,7 +97,7 @@
(component $C2 (component $C2
(alias outer $C $f (core type $my_f)) (alias outer $C $f (core type $my_f))
(import "" (core module (type $m))) (import "a" (core module (type $m)))
(import "x" (core module (import "x" (core module
(alias outer $C2 $my_f (type $my_f)) (alias outer $C2 $my_f (type $my_f))
(import "" "1" (func (type $my_f))) (import "" "1" (func (type $my_f)))