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
.
Macros§
- for_
each_ operator - Used to implement routines for the
Operator
enum. - for_
each_ visit_ operator - Used to implement the
VisitOperator
trait.
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.
- BrTable
Targets - An iterator over the targets of a
BrTable
. - 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.
- Composite
Type - Represents a composite type in a WebAssembly module.
- Const
Expr - Represents an initialization expression.
- Cont
Type - Represents a type of a continuation in a WebAssembly module.
- Control
Stack - The Wasm control stack for the
OperatorsReader
. - 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.
- Func
Type - Represents a type of a function in a WebAssembly module.
- 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.
- 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. The
OperatorsReader
internally maintains a stack of the kinds of frames within an expression or function body. This is necessary to enforce the syntactic requirements of the binary format. The BinaryReader can also be used to read the operators by providing an externalFrameStack
instance. - Operators
Reader Allocations - External handle to the internal allocations used by the OperatorsReader
- 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. - Resume
Table - A representation of dispatch tables on
resume
andresume_throw
instructions. - 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.
- Wasm
Features - Enabled WebAssembly proposals and features.
Enums§
- Abstract
Heap Type - An abstract heap type.
- Block
Type - Represents a block type.
- Catch
- Catch clauses that can be specified in
TryTable
. - Chunk
- A successful return payload from
Parser::parse
. - Comdat
Symbol Kind - Represents a symbol kind.
- 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.
- 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
. - Handle
- Handle clauses that can be specified in
ResumeTable
. - Heap
Type - A heap type.
- Known
Custom - Return value of
CustomSectionReader::as_known
. - Linking
- Represents a subsection read from the linking custom section.
- Name
- Represents a name read from the names custom section.
- Operator
- Instructions as defined here.
- Ordering
- Represents the memory ordering for atomic instructions.
- Payload
- Values that can be parsed from a WebAssembly module or component.
- 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.
- 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.
Traits§
- Frame
Stack - A trait representing the stack of frames within a function.
- 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. - Module
Arity - To compute the arity (param and result counts) of “variable-arity” operators, the operator_arity macro needs information about the module’s types and the current control stack. The ModuleArity trait exposes this information.
- Subsection
- A trait implemented for subsections of another outer section.
- Visit
Operator - Trait implemented by types that can visit all
Operator
variants.
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.
- 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.
- 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.