pub struct LuaRuntime { /* private fields */ }Expand description
A Lua state with parser and standard libraries installed.
Implementations§
Source§impl LuaRuntime
impl LuaRuntime
Sourcepub fn new() -> Result<Self>
pub fn new() -> Result<Self>
Create a Lua runtime with parser and standard libraries installed.
This installs no explicit host hooks. For a strict sandbox, construct
with LuaRuntime::with_hooks and audit the native compatibility
fallbacks in lua-stdlib.
Sourcepub fn with_hooks(hooks: HostHooks) -> Result<Self>
pub fn with_hooks(hooks: HostHooks) -> Result<Self>
Create a Lua runtime with the supplied host capabilities, speaking the
default language version (LuaVersion::default, 5.4).
Sourcepub fn with_hooks_versioned(
hooks: HostHooks,
version: LuaVersion,
) -> Result<Self>
pub fn with_hooks_versioned( hooks: HostHooks, version: LuaVersion, ) -> Result<Self>
Create a Lua runtime with the supplied host capabilities for a specific language version.
The version is the backend selector for the whole runtime: it is set on
the state before open_libs so the per-version stdlib roster
(e.g. bit32 on 5.2, utf8/string.pack on 5.3+) and the _VERSION
global are built for that version. The lower-level twin of
Lua::with_hooks_versioned; the wasm ABI builds its per-instance
runtime through this entry point.
Sourcepub fn version(&self) -> LuaVersion
pub fn version(&self) -> LuaVersion
The Lua language version this runtime speaks. Fixed at construction.
pub fn state(&self) -> &LuaState
pub fn state_mut(&mut self) -> &mut LuaState
pub fn into_state(self) -> LuaState
pub fn into_lua(self) -> Lua
Sourcepub fn exec(&mut self, source: &[u8], name: &[u8]) -> Result<()>
pub fn exec(&mut self, source: &[u8], name: &[u8]) -> Result<()>
Load and execute a Lua source chunk.
This lower-level entry point surfaces a raised error’s payload without
the external-root pinning that Chunk::exec applies (issue #189):
LuaRuntime owns its LuaState directly and has no drop-cleanup
queue for external roots, so the returned Error carries the inner
LuaError verbatim. Read the message before triggering a collection.
Sourcepub fn install_sandbox(&mut self, config: SandboxConfig) -> Result<()>
pub fn install_sandbox(&mut self, config: SandboxConfig) -> Result<()>
Apply sandbox limits to this runtime — the lower-level equivalent of
Lua::install_sandbox. Strips the configured globals and installs the
runtime-wide instruction/memory budget (enforced on every thread,
uncatchable). Use sandbox_tripped after a run
to learn which limit, if any, stopped it, and
sandbox_reset to refill the budget before the
next run.
Runs under the state’s heap guard: strip_globals interns
replacement strings and tables through GcRef::new, which must not
fall through to the detached no-heap arm (LuaRuntime has no
with_state funnel, so entry points that allocate push the guard
themselves).
Sourcepub fn sandbox_tripped(&self) -> Option<TripReason>
pub fn sandbox_tripped(&self) -> Option<TripReason>
Which sandbox limit (if any) aborted the most recent run.
Sourcepub fn sandbox_reset(&self)
pub fn sandbox_reset(&self)
Refill the instruction budget to its configured limit and clear the trip flag, so the same runtime can run another chunk.