Documentation ¶
Overview ¶
Package wasmer2 is a Go library to run WebAssembly binaries.
Index ¶
- Variables
- func GetLastError() (string, error)
- func SetLogLevel(logLevel LogLevel)
- type LogLevel
- type OpcodeCost
- type Wasmer2Executor
- func (wasmerExecutor *Wasmer2Executor) FunctionNames() vmcommon.FunctionNames
- func (wasmerExecutor *Wasmer2Executor) IsInterfaceNil() bool
- func (wasmerExecutor *Wasmer2Executor) NewInstanceFromCompiledCodeWithOptions(compiledCode []byte, options executor.CompilationOptions) (executor.Instance, error)
- func (wasmerExecutor *Wasmer2Executor) NewInstanceWithOptions(contractCode []byte, options executor.CompilationOptions) (executor.Instance, error)
- func (wasmerExecutor *Wasmer2Executor) SetOpcodeCosts(wasmOps *executor.WASMOpcodeCost)
- func (wasmerExecutor *Wasmer2Executor) SetRkyvSerializationEnabled(enabled bool)
- func (wasmerExecutor *Wasmer2Executor) SetSIGSEGVPassthrough()
- type Wasmer2ExecutorFactory
- type Wasmer2Instance
- func (instance *Wasmer2Instance) Cache() ([]byte, error)
- func (instance *Wasmer2Instance) CallFunction(functionName string) error
- func (instance *Wasmer2Instance) Clean() bool
- func (instance *Wasmer2Instance) GetBreakpointValue() uint64
- func (instance *Wasmer2Instance) GetFunctionNames() []string
- func (instance *Wasmer2Instance) GetPointsUsed() uint64
- func (instance *Wasmer2Instance) GetVMHooksPtr() uintptr
- func (instance *Wasmer2Instance) HasFunction(functionName string) bool
- func (instance *Wasmer2Instance) HasMemory() bool
- func (instance *Wasmer2Instance) ID() string
- func (instance *Wasmer2Instance) IsAlreadyCleaned() bool
- func (instance *Wasmer2Instance) IsFunctionImported(name string) bool
- func (instance *Wasmer2Instance) IsInterfaceNil() bool
- func (instance *Wasmer2Instance) MemDump() []byte
- func (instance *Wasmer2Instance) MemGrow(pages uint32) error
- func (instance *Wasmer2Instance) MemLength() uint32
- func (instance *Wasmer2Instance) MemLoad(memPtr executor.MemPtr, length executor.MemLength) ([]byte, error)
- func (instance *Wasmer2Instance) MemStore(memPtr executor.MemPtr, data []byte) error
- func (instance *Wasmer2Instance) Reset() bool
- func (instance *Wasmer2Instance) SetBreakpointValue(value uint64)
- func (instance *Wasmer2Instance) SetGasLimit(gasLimit uint64)
- func (instance *Wasmer2Instance) SetPointsUsed(points uint64)
- func (instance *Wasmer2Instance) SetVMHooksPtr(vmHooksPtr uintptr)
- func (instance *Wasmer2Instance) ValidateFunctionArities() error
- type Wasmer2Memory
Constants ¶
This section is empty.
Variables ¶
var ErrCachingFailed = errors.New("instance caching failed")
var ErrFailedCacheImports = errors.New("could not cache imports")
var ErrFailedInstantiation = errors.New("could not create wasmer instance")
var ErrInvalidBytecode = errors.New("invalid bytecode")
Functions ¶
func GetLastError ¶
GetLastError returns the last error message if any, otherwise returns an error.
func SetLogLevel ¶
func SetLogLevel(logLevel LogLevel)
SetLogLevel sets the log level for the Executor.
Types ¶
type OpcodeCost ¶
type OpcodeCost struct { Block uint32 Br uint32 BrIf uint32 BrTable uint32 Call uint32 CallIndirect uint32 Catch uint32 CatchAll uint32 Delegate uint32 Drop uint32 Else uint32 End uint32 GlobalGet uint32 GlobalSet uint32 I32Add uint32 I32And uint32 I32Clz uint32 I32Const uint32 I32Ctz uint32 I32DivS uint32 I32DivU uint32 I32Eq uint32 I32Eqz uint32 I32Extend16S uint32 I32Extend8S uint32 I32GeS uint32 I32GeU uint32 I32GtS uint32 I32GtU uint32 I32LeS uint32 I32LeU uint32 I32Load uint32 I32Load16S uint32 I32Load16U uint32 I32Load8S uint32 I32Load8U uint32 I32LtS uint32 I32LtU uint32 I32Mul uint32 I32Ne uint32 I32Or uint32 I32Popcnt uint32 I32RemS uint32 I32RemU uint32 I32Rotl uint32 I32Rotr uint32 I32Shl uint32 I32ShrS uint32 I32ShrU uint32 I32Store uint32 I32Store16 uint32 I32Store8 uint32 I32Sub uint32 I32WrapI64 uint32 I32Xor uint32 I64Add uint32 I64And uint32 I64Clz uint32 I64Const uint32 I64Ctz uint32 I64DivS uint32 I64DivU uint32 I64Eq uint32 I64Eqz uint32 I64Extend16S uint32 I64Extend32S uint32 I64Extend8S uint32 I64ExtendI32S uint32 I64ExtendI32U uint32 I64GeS uint32 I64GeU uint32 I64GtS uint32 I64GtU uint32 I64LeS uint32 I64LeU uint32 I64Load uint32 I64Load16S uint32 I64Load16U uint32 I64Load32S uint32 I64Load32U uint32 I64Load8S uint32 I64Load8U uint32 I64LtS uint32 I64LtU uint32 I64Mul uint32 I64Ne uint32 I64Or uint32 I64Popcnt uint32 I64RemS uint32 I64RemU uint32 I64Rotl uint32 I64Rotr uint32 I64Shl uint32 I64ShrS uint32 I64ShrU uint32 I64Store uint32 I64Store16 uint32 I64Store32 uint32 I64Store8 uint32 I64Sub uint32 I64Xor uint32 If uint32 LocalGet uint32 LocalSet uint32 LocalTee uint32 LocalAllocate uint32 Loop uint32 MemoryGrow uint32 MemorySize uint32 Nop uint32 RefFunc uint32 RefIsNull uint32 RefNull uint32 Rethrow uint32 Return uint32 ReturnCall uint32 ReturnCallIndirect uint32 Select uint32 TableGet uint32 TableGrow uint32 TableInit uint32 TableSet uint32 TableSize uint32 Throw uint32 Try uint32 TypedSelect uint32 Unreachable uint32 Unwind uint32 }
type Wasmer2Executor ¶
type Wasmer2Executor struct {
// contains filtered or unexported fields
}
WasmerExecutor oversees the creation of Wasmer instances and execution.
func CreateExecutor ¶
func CreateExecutor() (*Wasmer2Executor, error)
CreateExecutor creates a new wasmer executor.
func (*Wasmer2Executor) FunctionNames ¶
func (wasmerExecutor *Wasmer2Executor) FunctionNames() vmcommon.FunctionNames
func (*Wasmer2Executor) IsInterfaceNil ¶
func (wasmerExecutor *Wasmer2Executor) IsInterfaceNil() bool
IsInterfaceNil returns true if underlying object is nil
func (*Wasmer2Executor) NewInstanceFromCompiledCodeWithOptions ¶
func (wasmerExecutor *Wasmer2Executor) NewInstanceFromCompiledCodeWithOptions( compiledCode []byte, options executor.CompilationOptions, ) (executor.Instance, error)
NewInstanceFromCompiledCodeWithOptions creates a new Wasmer instance from precompiled machine code, respecting the provided options
func (*Wasmer2Executor) NewInstanceWithOptions ¶
func (wasmerExecutor *Wasmer2Executor) NewInstanceWithOptions( contractCode []byte, options executor.CompilationOptions, ) (executor.Instance, error)
NewInstanceWithOptions creates a new Wasmer instance from WASM bytecode, respecting the provided options
func (*Wasmer2Executor) SetOpcodeCosts ¶
func (wasmerExecutor *Wasmer2Executor) SetOpcodeCosts(wasmOps *executor.WASMOpcodeCost)
SetOpcodeCosts sets gas costs globally inside the Wasmer executor.
func (*Wasmer2Executor) SetRkyvSerializationEnabled ¶
func (wasmerExecutor *Wasmer2Executor) SetRkyvSerializationEnabled(enabled bool)
SetRkyvSerializationEnabled controls a Wasmer flag.
func (*Wasmer2Executor) SetSIGSEGVPassthrough ¶
func (wasmerExecutor *Wasmer2Executor) SetSIGSEGVPassthrough()
SetSIGSEGVPassthrough controls a Wasmer flag.
type Wasmer2ExecutorFactory ¶
type Wasmer2ExecutorFactory struct{}
Wasmer2ExecutorFactory builds Wasmer2 Executors.
func ExecutorFactory ¶
func ExecutorFactory() *Wasmer2ExecutorFactory
ExecutorFactory returns the Wasmer executor factory.
func (*Wasmer2ExecutorFactory) CreateExecutor ¶
func (wef *Wasmer2ExecutorFactory) CreateExecutor(args executor.ExecutorFactoryArgs) (executor.Executor, error)
CreateExecutor creates a new Executor instance.
func (*Wasmer2ExecutorFactory) IsInterfaceNil ¶
func (wef *Wasmer2ExecutorFactory) IsInterfaceNil() bool
IsInterfaceNil returns true if there is no value under the interface
type Wasmer2Instance ¶
type Wasmer2Instance struct { AlreadyClean bool // contains filtered or unexported fields }
Wasmer2Instance represents a WebAssembly instance.
func (*Wasmer2Instance) Cache ¶
func (instance *Wasmer2Instance) Cache() ([]byte, error)
Cache caches the instance
func (*Wasmer2Instance) CallFunction ¶
func (instance *Wasmer2Instance) CallFunction(functionName string) error
CallFunction executes given function from loaded contract.
func (*Wasmer2Instance) GetBreakpointValue ¶
func (instance *Wasmer2Instance) GetBreakpointValue() uint64
GetBreakpointValue returns the breakpoint value
func (*Wasmer2Instance) GetFunctionNames ¶
func (instance *Wasmer2Instance) GetFunctionNames() []string
GetFunctionNames returns a list of the function names exported by the contract.
func (*Wasmer2Instance) GetPointsUsed ¶
func (instance *Wasmer2Instance) GetPointsUsed() uint64
GetPointsUsed returns the internal instance gas counter
func (*Wasmer2Instance) GetVMHooksPtr ¶
func (instance *Wasmer2Instance) GetVMHooksPtr() uintptr
GetVMHooksPtr returns the VM hooks pointer
func (*Wasmer2Instance) HasFunction ¶
func (instance *Wasmer2Instance) HasFunction(functionName string) bool
HasFunction checks if loaded contract has a function (endpoint) with given name.
func (*Wasmer2Instance) HasMemory ¶
func (instance *Wasmer2Instance) HasMemory() bool
HasMemory checks whether the instance has at least one exported memory.
func (*Wasmer2Instance) ID ¶
func (instance *Wasmer2Instance) ID() string
Id returns an identifier for the instance, unique at runtime
func (*Wasmer2Instance) IsAlreadyCleaned ¶
func (instance *Wasmer2Instance) IsAlreadyCleaned() bool
IsAlreadyCleaned returns the internal field AlreadyClean
func (*Wasmer2Instance) IsFunctionImported ¶
func (instance *Wasmer2Instance) IsFunctionImported(name string) bool
IsFunctionImported returns true if the instance imports the specified function
func (*Wasmer2Instance) IsInterfaceNil ¶
func (instance *Wasmer2Instance) IsInterfaceNil() bool
IsInterfaceNil returns true if underlying object is nil
func (*Wasmer2Instance) MemDump ¶
func (instance *Wasmer2Instance) MemDump() []byte
MemDump yields the entire contents of the memory. Only used in tests.
func (*Wasmer2Instance) MemGrow ¶
func (instance *Wasmer2Instance) MemGrow(pages uint32) error
MemGrow allocates more pages to the current memory. Only called directly in tests.
func (*Wasmer2Instance) MemLength ¶
func (instance *Wasmer2Instance) MemLength() uint32
MemLength returns the length of the allocated memory. Only called directly in tests.
func (*Wasmer2Instance) MemLoad ¶
func (instance *Wasmer2Instance) MemLoad(memPtr executor.MemPtr, length executor.MemLength) ([]byte, error)
MemLoad returns the contents from the given offset of the WASM memory.
func (*Wasmer2Instance) MemStore ¶
func (instance *Wasmer2Instance) MemStore(memPtr executor.MemPtr, data []byte) error
MemStore stores the given data in the WASM memory at the given offset.
func (*Wasmer2Instance) Reset ¶
func (instance *Wasmer2Instance) Reset() bool
Reset resets the instance memories and globals
func (*Wasmer2Instance) SetBreakpointValue ¶
func (instance *Wasmer2Instance) SetBreakpointValue(value uint64)
SetBreakpointValue sets the breakpoint value for the instance
func (*Wasmer2Instance) SetGasLimit ¶
func (instance *Wasmer2Instance) SetGasLimit(gasLimit uint64)
SetGasLimit sets the gas limit for the instance
func (*Wasmer2Instance) SetPointsUsed ¶
func (instance *Wasmer2Instance) SetPointsUsed(points uint64)
SetPointsUsed sets the internal instance gas counter
func (*Wasmer2Instance) SetVMHooksPtr ¶
func (instance *Wasmer2Instance) SetVMHooksPtr(vmHooksPtr uintptr)
SetVMHooksPtr sets the VM hooks pointer
func (*Wasmer2Instance) ValidateFunctionArities ¶
func (instance *Wasmer2Instance) ValidateFunctionArities() error
ValidateFunctionArities checks that no function (endpoint) of the given contract has any parameters or returns any result. All arguments and results should be transferred via the import functions.
type Wasmer2Memory ¶
type Wasmer2Memory struct {
// contains filtered or unexported fields
}
Wasmer2Instance represents a WebAssembly instance.
func (*Wasmer2Memory) Data ¶
func (memory *Wasmer2Memory) Data() []byte
Data returns a slice of bytes over the WebAssembly memory. nolint
func (*Wasmer2Memory) Destroy ¶
func (memory *Wasmer2Memory) Destroy()
Destroy destroys inner memory. Does nothing in wasmer2.
func (*Wasmer2Memory) Grow ¶
func (memory *Wasmer2Memory) Grow(numberOfPages uint32) error
Grow the memory by a number of pages (65kb each).
func (*Wasmer2Memory) IsInterfaceNil ¶
func (memory *Wasmer2Memory) IsInterfaceNil() bool
IsInterfaceNil returns true if underlying object is nil
func (*Wasmer2Memory) Length ¶
func (memory *Wasmer2Memory) Length() uint32
Length calculates the memory length (in bytes).