-
Notifications
You must be signed in to change notification settings - Fork 245
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GC: wasmparser: Add user defined struct types #1045
GC: wasmparser: Add user defined struct types #1045
Conversation
944ed2b
to
2c7a55d
Compare
2c7a55d
to
afd8f5d
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking good! Some minor nitpicks below.
crates/wasm-mutate/src/module.rs
Outdated
unimplemented!("Array types are not supported yet.") | ||
} | ||
wasmparser::Type::Struct(_) => { | ||
unimplemented!("Struct types are not supported yet.") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I missed this last time, but these can both be Err
returns instead of panics, since this is a TryFrom
impl and we are returning a Result
here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
Type::Array(_) => unimplemented!("Array types are not supported yet."), | ||
Type::Struct(_) => unimplemented!("Struct types are not supported yet."), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In fact, these can be Err
returns instead of panics as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
crates/wasmparser/src/limits.rs
Outdated
@@ -34,6 +34,7 @@ pub const MAX_WASM_TABLES: usize = 100; | |||
pub const MAX_WASM_MEMORIES: usize = 100; | |||
pub const MAX_WASM_TAGS: usize = 1_000_000; | |||
pub const MAX_WASM_BR_TABLE_SIZE: usize = MAX_WASM_FUNCTION_SIZE; | |||
pub const MAX_WASM_STRUCT_FIELDS: usize = 100_000; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This spec PR defined the common Web implementation limits as 10_000 fields, and I think we should match that, even though we aren't a Web engine.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
@@ -277,9 +287,11 @@ impl Type { | |||
} | |||
|
|||
pub(crate) fn type_size(&self) -> u32 { | |||
// TODO calculate actual size for func, array, struct (#1036) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you file a follow up issue to track this?
// TODO calculate actual size for func, array, struct (#1036) | |
// TODO(#1234): calculate actual size for func, array, struct (#1036) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe #1036, mentioned in the line comment, is covering this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
Releases recent changes such as: * More support for the gc proposal. bytecodealliance#1045 bytecodealliance#1059 * Support for resources throughout most tooling. bytecodealliance#1053 bytecodealliance#1068 bytecodealliance#1070 bytecodealliance#1082 bytecodealliance#1079 bytecodealliance#1083 bytecodealliance#1084 bytecodealliance#1105 bytecodealliance#1113 bytecodealliance#1116 * Support for `include` in WIT files. bytecodealliance#1054 bytecodealliance#1085 bytecodealliance#1088 * WIT worlds may now be rejected if the same interface can be "reached" as both an import and an export simultaneously. bytecodealliance#1081 bytecodealliance#1107 * Support for registry metadata in `wasm-tools metadata`. bytecodealliance#1060 * A new subcommand `wasm-tools component targets`. bytecodealliance#1089 * An `--out-dir` argument is supported on `wasm-tools component wit` to print the entire `Resolve` instead of just one package. bytecodealliance#1108 * Miscellaneous bug fixes and improvements. bytecodealliance#1061 bytecodealliance#1065 bytecodealliance#1074 bytecodealliance#1073 bytecodealliance#1078 bytecodealliance#1077 bytecodealliance#1072 bytecodealliance#1086 bytecodealliance#1091 bytecodealliance#1094 bytecodealliance#1114 bytecodealliance#1106
Releases recent changes such as: * More support for the gc proposal. [bytecodealliance#1045](bytecodealliance#1045) [bytecodealliance#1059](bytecodealliance#1059) * Support for resources throughout most tooling. [bytecodealliance#1053](bytecodealliance#1053) [bytecodealliance#1068](bytecodealliance#1068) [bytecodealliance#1070](bytecodealliance#1070) [bytecodealliance#1082](bytecodealliance#1082) [bytecodealliance#1079](bytecodealliance#1079) [bytecodealliance#1083](bytecodealliance#1083) [bytecodealliance#1084](bytecodealliance#1084) [bytecodealliance#1105](bytecodealliance#1105) [bytecodealliance#1113](bytecodealliance#1113) [bytecodealliance#1116](bytecodealliance#1116) * Support for `include` in WIT files. [bytecodealliance#1054](bytecodealliance#1054) [bytecodealliance#1085](bytecodealliance#1085) [bytecodealliance#1088](bytecodealliance#1088) * WIT worlds may now be rejected if the same interface can be "reached" as both an import and an export simultaneously. [bytecodealliance#1081](bytecodealliance#1081) [bytecodealliance#1107](bytecodealliance#1107) * Support for registry metadata in `wasm-tools metadata`. [bytecodealliance#1060](bytecodealliance#1060) * A new subcommand `wasm-tools component targets`. [bytecodealliance#1089](bytecodealliance#1089) * An `--out-dir` argument is supported on `wasm-tools component wit` to print the entire `Resolve` instead of just one package. [bytecodealliance#1108](bytecodealliance#1108) * Miscellaneous bug fixes and improvements. [bytecodealliance#1061](bytecodealliance#1061) [bytecodealliance#1065](bytecodealliance#1065) [bytecodealliance#1074](bytecodealliance#1074) [bytecodealliance#1073](bytecodealliance#1073) [bytecodealliance#1078](bytecodealliance#1078) [bytecodealliance#1077](bytecodealliance#1077) [bytecodealliance#1072](bytecodealliance#1072) [bytecodealliance#1086](bytecodealliance#1086) [bytecodealliance#1091](bytecodealliance#1091) [bytecodealliance#1094](bytecodealliance#1094) [bytecodealliance#1114](bytecodealliance#1114) [bytecodealliance#1106](bytecodealliance#1106)
Releases recent changes such as: * More support for the gc proposal. [#1045](#1045) [#1059](#1059) * Support for resources throughout most tooling. [#1053](#1053) [#1068](#1068) [#1070](#1070) [#1082](#1082) [#1079](#1079) [#1083](#1083) [#1084](#1084) [#1105](#1105) [#1113](#1113) [#1116](#1116) * Support for `include` in WIT files. [#1054](#1054) [#1085](#1085) [#1088](#1088) * WIT worlds may now be rejected if the same interface can be "reached" as both an import and an export simultaneously. [#1081](#1081) [#1107](#1107) * Support for registry metadata in `wasm-tools metadata`. [#1060](#1060) * A new subcommand `wasm-tools component targets`. [#1089](#1089) * An `--out-dir` argument is supported on `wasm-tools component wit` to print the entire `Resolve` instead of just one package. [#1108](#1108) * Miscellaneous bug fixes and improvements. [#1061](#1061) [#1065](#1065) [#1074](#1074) [#1073](#1073) [#1078](#1078) [#1077](#1077) [#1072](#1072) [#1086](#1086) [#1091](#1091) [#1094](#1094) [#1114](#1114) [#1106](#1106)
Add user defined struct types to wasmparser/wasmprinter, with a roundtrip test case.