assemblyscript

package
v1.0.0-pre.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 1, 2022 License: Apache-2.0 Imports: 11 Imported by: 3

Documentation

Overview

Package assemblyscript contains Go-defined special functions imported by AssemblyScript under the module name "env".

Special Functions

AssemblyScript code import the below special functions when not using WASI. Note: Sometimes only "abort" is imported.

  • "abort" - exits with 255 with an abort message written to wazero.ModuleConfig WithStderr.
  • "trace" - no output unless.
  • "seed" - uses wazero.ModuleConfig WithRandSource as the source of seed values.

See https://www.assemblyscript.org/concepts.html#special-imports

Relationship to WASI

AssemblyScript supports compiling JavaScript functions that use I/O, such as `console.log("hello")`. However, WASI is not built-in to AssemblyScript. Use the `wasi-shim` to compile if you get import errors.

See https://github.com/AssemblyScript/wasi-shim#usage and wasi_snapshot_preview1.Instantiate for more.

Example (FunctionExporter)

This shows how to instantiate AssemblyScript's special imports when you also need other functions in the "env" module.

package main

import (
	"context"

	_ "embed"
	"github.com/tetratelabs/wazero"
	"github.com/tetratelabs/wazero/imports/assemblyscript"
)

func main() {
	ctx := context.Background()

	r := wazero.NewRuntime(ctx)
	defer r.Close(ctx) // This closes everything this Runtime created.

	// First construct your own module builder for "env"
	envBuilder := r.NewModuleBuilder("env").
		ExportFunction("get_int", func() uint32 { return 1 })

	// Now, add AssemblyScript special function imports into it.
	assemblyscript.NewFunctionExporter().
		WithAbortMessageDisabled().
		ExportFunctions(envBuilder)

}
Output:

Example (Instantiate)

This shows how to instantiate AssemblyScript's special imports.

package main

import (
	"context"
	"log"

	_ "embed"
	"github.com/tetratelabs/wazero"
	"github.com/tetratelabs/wazero/imports/assemblyscript"
)

func main() {
	ctx := context.Background()

	r := wazero.NewRuntime(ctx)
	defer r.Close(ctx) // This closes everything this Runtime created.

	// This adds the "env" module to the runtime, with AssemblyScript's special
	// function imports.
	if _, err := assemblyscript.Instantiate(ctx, r); err != nil {
		log.Panicln(err)
	}

}
Output:

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Instantiate

func Instantiate(ctx context.Context, r wazero.Runtime) (api.Closer, error)

Instantiate instantiates the "env" module used by AssemblyScript into the runtime default namespace.

Notes

  • Closing the wazero.Runtime has the same effect as closing the result.
  • To add more functions to the "env" module, use FunctionExporter.
  • To instantiate into another wazero.Namespace, use FunctionExporter.

Types

type FunctionExporter

type FunctionExporter interface {
	// WithAbortMessageDisabled configures the AssemblyScript abort function to
	// discard any message.
	WithAbortMessageDisabled() FunctionExporter

	// WithTraceToStdout configures the AssemblyScript trace function to output
	// messages to Stdout, as configured by wazero.ModuleConfig WithStdout.
	WithTraceToStdout() FunctionExporter

	// WithTraceToStderr configures the AssemblyScript trace function to output
	// messages to Stderr, as configured by wazero.ModuleConfig WithStderr.
	//
	// Because of the potential volume of trace messages, it is often more
	// appropriate to use WithTraceToStdout instead.
	WithTraceToStderr() FunctionExporter

	// ExportFunctions builds functions to export with a wazero.ModuleBuilder
	// named "env".
	ExportFunctions(builder wazero.ModuleBuilder)
}

FunctionExporter configures the functions in the "env" module used by AssemblyScript.

func NewFunctionExporter

func NewFunctionExporter() FunctionExporter

NewFunctionExporter returns a FunctionExporter object with trace disabled.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL