Expand description
A simple event-driven library for parsing WebAssembly binary files (or streams).
The parser library reports events as they happen and only stores parsing information for a brief period of time, making it very fast and memory-efficient. The event-driven model, however, has some drawbacks. If you need random access to the entire WebAssembly data-structure, this is not the right library for you. You could however, build such a data-structure using this library.
To get started, create a Parser
using Parser::new
and then follow
the examples documented for Parser::parse
or Parser::parse_all
.
Modules§
- collections
- Type definitions for maps and sets used by the
wasmparser
crate. - names
- Definitions of name-related helpers and newtypes, primarily for the component model.
- types
- Types relating to type information provided by validation.
Macros§
- for_
each_ operator - A helper macro to conveniently iterate over all opcodes recognized by this
crate. This can be used to work with either the
Operator
enumeration or theVisitOperator
trait if your use case uniformly handles all operators the same way.
Structs§
- Array
Type - Represents a type of an array in a WebAssembly module.
- Binary
Reader - A binary reader of the WebAssembly structures and types.
- Binary
Reader Error - A binary reader for WebAssembly modules.
- BrTable
- A br_table entries representation.
- Branch
Hint - A hint for a single branch.
- Branch
Hint Function - Branch hints for a single function.
- Comdat
- Represents COMDAT data in the linking custom section.
- Comdat
Symbol - Represents a symbol that is part of a comdat.
- Component
Export - Represents an export in a WebAssembly component.
- Component
Export Name - Represents the name of a component export.
- Component
Func Type - Represents a type of a function in a WebAssembly component.
- Component
Import - Represents an import in a WebAssembly component
- Component
Import Name - Represents the name of a component import.
- Component
Instantiation Arg - Represents an argument to instantiating a WebAssembly component.
- Component
Start Function - Represents the start function in a WebAssembly component.
- Composite
Type - Represents a composite type in a WebAssembly module.
- Const
Expr - Represents an initialization expression.
- Core
Dump Instance - A single instance from a coredump instances section
- Core
Dump Instances Section - A custom section representing the instances involved in a given coredump
- Core
Dump Modules Section - The data portion of a “coremodules” custom section. This contains a vec of module names that will be referenced by index by other coredump sections.
- Core
Dump Section - The data portion of a custom section representing a core dump. Per the tool-conventions repo, this section just specifies the executable name that the core dump came from while the rest of the core dump information is contained in a corestack custom section
- Core
Dump Stack Frame - A single stack frame from a core dump
- Core
Dump Stack Section - The data portion of a custom section representing a core dump stack. The structure of this follows the coredump spec in the tool-conventions repo
- Custom
Section Reader - A reader for custom sections of a WebAssembly module.
- Data
- Represents a data segment in a core WebAssembly module.
- Defined
Data Symbol - Represents the metadata about a data symbol defined in the wasm file.
- Element
- Represents a core WebAssembly element segment.
- Export
- Represents an export in a WebAssembly module.
- Export
Info - Field
Type - Represents a field type of an array or a struct.
- Frame
- A Wasm control flow block on the control flow stack during Wasm validation.
- Func
ToValidate - Resources necessary to perform validation of a function.
- Func
Type - Represents a type of a function in a WebAssembly module.
- Func
Validator - Validation context for a WebAssembly function.
- Func
Validator Allocations - External handle to the internal allocations used during function validation.
- Function
Body - Represents a WebAssembly function body.
- Global
- Represents a core WebAssembly global.
- Global
Type - Represents a global’s type.
- Ieee32
- An IEEE binary32 immediate floating point value, represented as a u32 containing the bit pattern.
- Ieee64
- An IEEE binary64 immediate floating point value, represented as a u64 containing the bit pattern.
- Import
- Represents an import in a WebAssembly module.
- Import
Info - Indirect
Naming - Represents an indirect name in the names custom section.
- Init
Func - Represents an init function in the linking custom section.
- Instantiation
Arg - Represents an argument to instantiating a WebAssembly module.
- Linking
Section Reader - A reader for the
linking
custom section of a WebAssembly module. - Locals
Iterator - An iterator over locals in a function body.
- Locals
Reader - A reader for a function body’s locals.
- MemArg
- Represents a memory immediate in a WebAssembly memory instruction.
- MemInfo
- Represents a
WASM_DYLINK_MEM_INFO
field - Memory
Type - Represents a memory’s type.
- Naming
- Represents a name for an index from the names section.
- Operators
Iterator - An iterator over a function’s operators.
- Operators
Iterator With Offsets - An iterator over a function’s operators with offsets.
- Operators
Reader - A reader for a core WebAssembly function’s operators.
- Packed
Index - A packed representation of a type index.
- Parser
- An incremental parser of a binary WebAssembly module or component.
- Producers
Field - A field from the producers custom section.
- Producers
Field Value - Represents a field value in the producers custom section.
- RecGroup
- Represents a recursive type group in a WebAssembly module.
- RefType
- A reference type.
- Reloc
Section Reader - Reader for reloc.* sections as defined by https://github.com/WebAssembly/tool-conventions/blob/main/Linking.md#relocation-sections.
- Relocation
Entry - Single relocation entry within a
reloc.*
section, as defined at https://github.com/WebAssembly/tool-conventions/blob/main/Linking.md#relocation-sections. - Section
Limited - A generic structure for reading a section of a WebAssembly binary which has a limited number of items within it.
- Section
Limited Into Iter - A consuming iterator of a
SectionLimited
. - Section
Limited Into Iter With Offsets - An iterator over a limited section iterator.
- Segment
- Represents extra metadata about the data segments.
- Segment
Flags - Flags for WebAssembly segments.
- Struct
Type - Represents a type of a struct in a WebAssembly module.
- SubType
- Represents a subtype of possible other types in a WebAssembly module.
- Subsections
- Iterator/reader over the contents of a section which is composed of subsections.
- Symbol
Flags - Flags for WebAssembly symbols.
- Table
- Type information about a table defined in the table section of a WebAssembly module.
- Table
Type - Represents a table’s type.
- TagType
- A tag’s type.
- TryTable
- A
try_table
entries representation. - V128
- Represents a 128-bit vector value.
- Validator
- Validator for a WebAssembly binary module or component.
- Validator
Id - A unique identifier for a particular
Validator
. - Validator
Resources - The implementation of
WasmModuleResources
used byValidator
. - Variant
Case - Represents a case in a variant type.
- Wasm
Features - Enabled WebAssembly proposals and features.
Enums§
- Abstract
Heap Type - An abstract heap type.
- Block
Type - Represents a block type.
- Canonical
Function - Represents a canonical function in a WebAssembly component.
- Canonical
Option - Represents options for component functions.
- Catch
- Catch clauses that can be specified in
TryTable
. - Chunk
- A successful return payload from
Parser::parse
. - Comdat
Symbol Kind - Represents a symbol kind.
- Component
Alias - Represents an alias in a WebAssembly component.
- Component
Defined Type - Represents a defined type in a WebAssembly component.
- Component
External Kind - Represents the kind of an external items of a WebAssembly component.
- Component
Func Result - Represents the result type of a component function.
- Component
Instance - Represents an instance in a WebAssembly component.
- Component
Name - Represents a name read from the names custom section.
- Component
Outer Alias Kind - Represents the kind of an outer alias in a WebAssembly component.
- Component
Type - Represents a type in a WebAssembly component.
- Component
Type Declaration - Represents part of a component type declaration in a WebAssembly component.
- Component
Type Ref - Represents a reference to a component type.
- Component
ValType - Represents a value type in a WebAssembly component.
- Composite
Inner Type - A
CompositeType
can contain one of these types. - Core
Dump Value - Local and stack values are encoded using one byte for the type (similar to Wasm’s Number Types) followed by bytes representing the actual value See the tool-conventions repo for more details.
- Core
Type - Represents a core type in a WebAssembly component.
- Data
Kind - The kind of data segment.
- Dylink0
Subsection - Possible subsections of the
dylink.0
custom section. - Element
Items - Represents the items of an element segment.
- Element
Kind - The kind of element segment.
- Encoding
- The supported encoding formats for the parser.
- External
Kind - External types as defined here.
- Frame
Kind - The kind of a control flow
Frame
. - Heap
Type - A heap type.
- Instance
- Represents an instance of a WebAssembly module.
- Instance
Type Declaration - Represents an instance type declaration in a WebAssembly component.
- Instantiation
ArgKind - Represents the kind of an instantiation argument for a core instance.
- Known
Custom - Return value of
CustomSectionReader::as_known
. - Linking
- Represents a subsection read from the linking custom section.
- Module
Type Declaration - Represents a module type declaration in a WebAssembly component.
- Name
- Represents a name read from the names custom section.
- Operator
- Instructions as defined here.
- Ordering
- Represents the memory ordering for atomic instructions.
- Outer
Alias Kind - Represents the kind of an outer core alias in a WebAssembly component.
- Payload
- Values that can be parsed from a WebAssembly module or component.
- Primitive
ValType - Represents a primitive value type.
- Reloc
Addend Kind - Indicates the kind of addend that applies to a relocation entry.
- Relocation
Type - Relocation entry type. Each entry type corresponds to one of the
R_WASM_*
constants defined at https://github.com/llvm/llvm-project/blob/main/llvm/include/llvm/BinaryFormat/WasmRelocs.def and https://github.com/WebAssembly/tool-conventions/blob/main/Linking.md#relocation-sections. - Storage
Type - Represents storage types introduced in the GC spec for array and struct fields.
- Symbol
Info - Represents extra information about symbols in the linking custom section.
- Table
Init - Different modes of initializing a table.
- TagKind
- Represents a tag kind.
- Type
Bounds - Represents the type bounds for imports and exports.
- TypeRef
- Represents a reference to a type definition in a WebAssembly module.
- Unpacked
Index - The uncompressed form of a
PackedIndex
. - ValType
- Represents the types of values in a WebAssembly module.
- Valid
Payload - Possible return values from
Validator::payload
.
Traits§
- From
Reader - A trait implemented for items that can be decoded directly from a
BinaryReader
, or that which can be parsed from the WebAssembly binary format. - Subsection
- A trait implemented for subsections of another outer section.
- Visit
Operator - Trait implemented by types that can visit all
Operator
variants. - Wasm
Module Resources - Types that qualify as Wasm validation database.
Functions§
- validate
- Test whether the given buffer contains a valid WebAssembly module or component,
analogous to
WebAssembly.validate
in the JS API.
Type Aliases§
- Branch
Hint Section Reader - A reader for the
metadata.code.branch_hint
custom section. - Code
Section Reader - A reader for the code section of a WebAssembly module.
- Comdat
Map - Represents a reader for COMDAT data from the linking custom section.
- Component
Alias Section Reader - Section reader for the component alias section
- Component
Canonical Section Reader - A reader for the canonical section of a WebAssembly component.
- Component
Export Section Reader - A reader for the export section of a WebAssembly component.
- Component
Import Section Reader - A reader for the import section of a WebAssembly component.
- Component
Instance Section Reader - A reader for the component instance section of a WebAssembly component.
- Component
Name Section Reader - Type used to iterate and parse the contents of the
component-name
custom section in compnents, similar to thename
section of core modules. - Component
Type Section Reader - A reader for the type section of a WebAssembly component.
- Core
Type Section Reader - A reader for the core type section of a WebAssembly component.
- Data
Section Reader - A reader for the data section of a WebAssembly module.
- Dylink0
Section Reader - Parser for the dynamic linking
dylink.0
custom section. - Element
Section Reader - A reader for the element section of a WebAssembly module.
- Export
Section Reader - A reader for the export section of a WebAssembly module.
- Function
Section Reader - A reader for the function section of a WebAssembly module.
- Global
Section Reader - A reader for the global section of a WebAssembly module.
- Import
Section Reader - A reader for the import section of a WebAssembly module.
- Indirect
Name Map - Represents a reader for indirect names from the names custom section.
- Init
Func Map - Represents a reader for init functions from the linking custom section.
- Instance
Section Reader - A reader for the core instance section of a WebAssembly component.
- Memory
Section Reader - A reader for the memory section of a WebAssembly module.
- NameMap
- Represents a name map from the names custom section.
- Name
Section Reader - A reader for the name custom section of a WebAssembly module.
- Producers
Section Reader - A reader for the producers custom section of a WebAssembly module.
- Relocation
Entry Reader - Reader for relocation entries within a
reloc.*
section. - Result
- The result for
BinaryReader
operations. - Segment
Map - Represents a reader for segments from the linking custom section.
- Symbol
Info Map - Represents a reader for symbol info from the linking custom section.
- Table
Section Reader - A reader for the table section of a WebAssembly module.
- TagSection
Reader - A reader for the tags section of a WebAssembly module.
- Type
Section Reader - A reader for the type section of a WebAssembly module.