ulua_sys/
lib.rs

1//! Low level bindings to Lua 5.4/5.3/5.2/5.1 (including LuaJIT) and Luau.
2
3#![allow(non_camel_case_types, non_snake_case)]
4#![allow(clippy::missing_safety_doc)]
5#![allow(unsafe_op_in_unsafe_fn)]
6#![doc(test(attr(deny(warnings))))]
7#![cfg_attr(docsrs, feature(doc_cfg))]
8
9use std::os::raw::c_int;
10
11pub use luau::*;
12
13pub const LUA_MAX_UPVALUES: c_int = 200;
14
15// I believe `luaL_traceback` < 5.4 requires this much free stack to not error.
16// 5.4 uses `luaL_Buffer`
17#[doc(hidden)]
18pub const LUA_TRACEBACK_STACK: c_int = 11;
19
20// Copied from https://github.com/rust-lang/rust/blob/master/library/std/src/sys/pal/common/alloc.rs
21// The minimum alignment guaranteed by the architecture. This value is used to
22// add fast paths for low alignment values.
23#[cfg(any(
24    target_arch = "x86",
25    target_arch = "arm",
26    target_arch = "m68k",
27    target_arch = "csky",
28    target_arch = "mips",
29    target_arch = "mips32r6",
30    target_arch = "powerpc",
31    target_arch = "powerpc64",
32    target_arch = "sparc",
33    target_arch = "wasm32",
34    target_arch = "hexagon",
35    all(target_arch = "riscv32", not(any(target_os = "espidf", target_os = "zkvm"))),
36    all(target_arch = "xtensa", not(target_os = "espidf")),
37))]
38#[doc(hidden)]
39pub const SYS_MIN_ALIGN: usize = 8;
40#[cfg(any(
41    target_arch = "x86_64",
42    target_arch = "aarch64",
43    target_arch = "arm64ec",
44    target_arch = "loongarch64",
45    target_arch = "mips64",
46    target_arch = "mips64r6",
47    target_arch = "s390x",
48    target_arch = "sparc64",
49    target_arch = "riscv64",
50    target_arch = "wasm64",
51))]
52#[doc(hidden)]
53pub const SYS_MIN_ALIGN: usize = 16;
54// The allocator on the esp-idf and zkvm platforms guarantee 4 byte alignment.
55#[cfg(any(
56    all(target_arch = "riscv32", any(target_os = "espidf", target_os = "zkvm")),
57    all(target_arch = "xtensa", target_os = "espidf"),
58))]
59#[doc(hidden)]
60pub const SYS_MIN_ALIGN: usize = 4;
61
62#[macro_use]
63mod macros;
64
65pub mod luau;