//! Bytecode VM (P03): instruction set, errors, interpreter, builtins.

pub mod builtins;
pub mod dump;
pub mod error;
pub mod exec;
pub mod isa;
pub mod jit_state;
pub mod lib_bit32;
pub mod lib_coroutine;

pub mod async_drive;
pub mod ergo;
pub mod host_roots;
pub mod inspect;
pub mod into_value;
pub mod sandbox;
pub mod table_builder;
pub mod typed_native;
pub mod userdata_trait;

/// v1.3 Phase SS-B — cross-thread `SendVm` wrapper. Gated behind
/// the `send` cargo feature; embedders not opting in pay no cost.
/// See [`send_vm::SendVm`] for the design.
#[cfg(feature = "send")]
pub mod send_vm;
#[cfg(feature = "send")]
pub use send_vm::SendVm;

pub use async_drive::{AsyncNativeFn, EvalFuture};
pub use error::{LuaError, LuaErrorKind};
pub use exec::{Error, Vm};
pub use host_roots::{HostRootStale, HostRootTicket};
pub use into_value::IntoValue;
pub use sandbox::SandboxBuilder;
pub use table_builder::TableBuilder;
pub use typed_native::{FromLuaArgs, FromLuaValue, IntoLuaReturn, NativeTypedSig};
pub use userdata_trait::{
    LuaUserdata, MetaMethod, MetatableBuilder, UserdataMarker, UserdataMethods,
};
pub mod lib_debug;
pub mod lib_math;
pub mod lib_os_io;
pub mod lib_string;
pub mod lib_strpack;
pub mod lib_table;
pub mod lib_utf8;
pub mod objname;
