Portable WebAssembly Component Model syntax and validation
Dependencies
pub suberror ComponentParseError {
InvalidMagic
UnexpectedEndOfInput
Leb128TooLarge
NotAComponent
UnsupportedComponentPreamble(Int, Int)
InvalidTypeSection
InvalidInstanceSection
InvalidAliasSection
InvalidCanonSection
InvalidStartSection
UnsupportedCanonOpcode(Int)
InvalidUtf8
UnsupportedTypeOpcode(Int)
}impl Show for BinaryKindpub(all) enum Canon {
Lift(Int, Array[CanonOpt], Int)
Lower(Int, Array[CanonOpt])
BackpressureInc
BackpressureDec
ContextGet(ValueType, Int)
ContextSet(ValueType, Int)
TaskReturn(ValType?, Array[CanonOpt])
TaskCancel
ThreadIndex
ThreadYield(Bool)
ThreadSuspendThenResume(Bool)
ThreadYieldThenResume(Bool)
ThreadSuspendThenPromote(Bool)
ThreadYieldThenPromote(Bool)
ThreadResumeLater
ThreadSuspend(Bool)
ThreadNewIndirect(Int, Int)
WaitableSetNew
WaitableSetWait(Bool, Int)
WaitableSetPoll(Bool, Int)
WaitableSetDrop
WaitableJoin
SubtaskCancel(Bool)
SubtaskDrop
StreamNew(Int)
StreamRead(Int, Array[CanonOpt])
StreamWrite(Int, Array[CanonOpt])
StreamCancelRead(Int, Bool)
StreamCancelWrite(Int, Bool)
StreamDropReadable(Int)
StreamDropWritable(Int)
FutureNew(Int)
FutureRead(Int, Array[CanonOpt])
FutureWrite(Int, Array[CanonOpt])
FutureCancelRead(Int, Bool)
FutureCancelWrite(Int, Bool)
FutureDropReadable(Int)
FutureDropWritable(Int)
ErrorContextNew(Array[CanonOpt])
ErrorContextDebugMessage(Array[CanonOpt])
ErrorContextDrop
ResourceNew(Int)
ResourceDrop(Int)
ResourceRep(Int)
} derive(Eq, Debug)pub(all) enum CanonOpt {
StringEncoding(StringEncoding)
Memory(Int)
Realloc(Int)
PostReturn(Int)
CoreType(Int)
Gc
Async
Callback(Int)
} derive(Eq, Debug)pub(all) struct Component {
binary : ComponentBinary
core_modules : Array[Bytes]
core_instances : Array[Bytes]
core_types : Array[Bytes]
types : Array[TypeDef]
imports : Array[Import]
exports : Array[Export]
instances : Array[Instance]
aliases : Array[Alias]
canons : Array[Canon]
start : Start?
components : Array[Component]
} derive(Eq, Debug)pub(all) enum ComponentDecl {
CoreType(Bytes)
Type(TypeDef)
AliasOuter(Int, Int, Int)
AliasInstanceExport(Int, Int, String)
Import(String, Array[NameAttribute], ExternDesc)
Export(String, Array[NameAttribute], ExternDesc)
} derive(Eq, Debug)pub(all) enum CoreInstanceExpr {
Instantiate(Int, Array[CoreInstantiateArg])
InlineExports(Array[CoreInlineExport])
} derive(Eq, Debug)pub(all) struct Export {
name : ExportName
attributes : Array[NameAttribute]
sortidx : SortIdx
desc : ExternDesc?
} derive(Eq, Debug)pub(all) enum ExternDesc {
CoreModuleType(Int)
FuncType(Int)
Value(ValueBound)
Type(TypeBound)
ComponentType(Int)
InstanceType(Int)
} derive(Eq, Debug)impl Show for ExternDescpub(all) struct Import {
name : ImportName
attributes : Array[NameAttribute]
desc : ExternDesc
} derive(Eq, Debug)pub(all) struct InlineExport {
name : String
attributes : Array[NameAttribute]
sortidx : SortIdx
} derive(Eq, Debug)pub(all) enum InstanceDecl {
CoreType(Bytes)
Type(TypeDef)
AliasOuter(Int, Int, Int)
AliasInstanceExport(Int, Int, String)
Export(String, Array[NameAttribute], ExternDesc)
} derive(Eq, Debug)pub(all) enum InstanceExpr {
Instantiate(Int, Array[InstantiateArg])
InlineExports(Array[InlineExport])
} derive(Eq, Debug)impl Show for InstanceExprpub(all) enum TypeDef {
DefValType(PrimValType)
FuncType(FuncType)
List(ValType)
FixedList(ValType, Int)
MapType(ValType, ValType)
Record(Array[RecordField])
Variant(Array[VariantCase])
Tuple(Array[ValType])
Flags(Array[String])
Enum(Array[String])
Option(ValType)
Result(ValType?, ValType?)
Own(Int)
Borrow(Int)
Stream(ValType?)
Future(ValType?)
ResourceType(Int, Int, Int?, ResourceKind)
ComponentType(Array[ComponentDecl])
InstanceTypeEmpty
InstanceType(Array[InstanceDecl])
} derive(Eq, Debug)fn parse_core_instance_section(payload : Bytes) -> Array[CoreInstanceDecl] raise ComponentParseErrorInstall
Download zipPortable WebAssembly Component Model syntax and validation
Dependencies