Documentation
¶
Overview ¶
Package luart provides a pure-Go Lua 5.1 implementation of script.Runtime using github.com/yuin/gopher-lua (no CGO).
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrRuntimeClosed = errors.New("luart: runtime is closed")
ErrRuntimeClosed is returned when Exec is called after Close.
var ErrVMPoolExhausted = errdefs.NotAvailable(errors.New("luart: 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 WithMaxExecTime ¶ added in v0.2.6
WithMaxExecTime sets a runtime-enforced wall-clock ceiling on each Exec call. Independent of the caller's context: even ctx.Background cannot exceed d. The shorter of (caller deadline, d) wins. Zero disables the cap.
On expiry the script is interrupted via gopher-lua's context hook and Exec returns a context-deadline error classified by sdk/errdefs.IsTimeout.
type Runtime ¶
type Runtime struct {
// contains filtered or unexported fields
}
Runtime manages a pool of gopher-lua VMs for Lua script execution. It implements script.Runtime. Close is safe to call multiple times.
Note on memory caps: gopher-lua exposes no safe memory or instruction-count quota (its SetMx hook calls os.Exit on overflow, which is unusable in a library). The wall-clock ceiling installed via WithMaxExecTime is therefore the only "hard cut" available today; for stronger isolation run the script under a separate OS process with cgroup/rlimit applied.
func (*Runtime) Close ¶
Close drains the VM pool and closes every LState. It is safe to call multiple times; subsequent calls are no-ops.
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 Lua in a pooled LState with config and bindings as globals. A built-in "signal" global is always injected for interrupt/error/done control flow back to the host.