jsrt

package
v0.3.17 Latest Latest
Warning

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

Go to latest
Published: May 17, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Overview

Package jsrt provides a goja-based JavaScript implementation of script.Runtime.

Index

Constants

This section is empty.

Variables

View Source
var ErrVMPoolExhausted = errdefs.NotAvailable(errors.New("jsrt: VM pool exhausted, context cancelled while waiting"))

ErrVMPoolExhausted is returned when all VMs are in use and the context is cancelled before one becomes available.

Functions

This section is empty.

Types

type Option

type Option func(*Runtime)

Option configures a Runtime.

func WithMaxCallStackSize added in v0.2.6

func WithMaxCallStackSize(n int) Option

WithMaxCallStackSize bounds the maximum call-stack depth a script may reach. Hits raise a goja runtime error and abort the script. Zero / negative leaves goja's default in place.

func WithMaxExecTime added in v0.2.6

func WithMaxExecTime(d time.Duration) Option

WithMaxExecTime sets a runtime-enforced wall-clock ceiling on each Exec call. The ceiling is independent of the caller's context: even if the caller passes context.Background(), no script may run longer than d. The shorter of (caller deadline, d) wins. Zero disables the extra cap (caller ctx alone applies).

On expiry the script is interrupted via goja's Interrupt mechanism and Exec returns a context-deadline error classified by sdk/errdefs.IsTimeout.

func WithPoolSize

func WithPoolSize(n int) Option

WithPoolSize sets the VM pool size.

type Runtime

type Runtime struct {
	// contains filtered or unexported fields
}

Runtime manages a pool of goja VMs for JS script execution. It implements script.Runtime.

func New

func New(opts ...Option) *Runtime

New creates a new JS runtime with a VM pool.

func (*Runtime) Exec

func (r *Runtime) Exec(ctx context.Context, name, source string, env *script.Env) (*script.Signal, error)

Exec implements script.Runtime. It runs a JS script in a pooled VM with the given environment (config + bindings) injected as globals. A built-in "signal" global is always injected, providing interrupt/error/done control flow back to the host.

Jump to

Keyboard shortcuts

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