lu_sys/lib.rs
1//! Rust bindings for the Luau C API.
2//!
3//! # WIP
4//!
5//! This crate is a work in progress and not yet complete. Bindings have not
6//! been written for all functions and documentation has not been written for
7//! all functions that have bindings.
8//!
9//! * `luacodegen.h` (native code generation) - Not bound, not documented.
10//! * `luacode.h` (bytecode compilation) - Fully bound, partially documented.
11//! * `Require.h` (require functionality) - Not bound, not documented.
12//! * `luaconf.h` (VM configuration) - Fully bound, not documented.
13//! * `lualib.h` (aux VM functionality) - Fully bound, not documented.
14//! * `lua.h` (core VM functionality) - Fully bound, documented.
15//!
16//! # Bindings
17//!
18//! All types and functions in the Luau C API are bound with the exception of
19//! types and functions that utilize `...` or `va_list`. The Luau C API makes
20//! extensive use of function-like macros, which have been closely reimplemented
21//! in this crate as functions.
22//!
23//! # Stability and versioning
24//!
25//! Luau versions itself with an incrementing integer which increases with each
26//! weekly release. As an example, at the time of writing, the latest Luau
27//! version is `0.679`.
28//!
29//! This crate will track these versions, releasing a new version of the crate
30//! weekly to match the latest Luau versions. When a breaking change occurs,
31//! either in the Luau C API or in the bindings, a new major version will be
32//! released.
33//!
34//! In summary, major versions will be released for breaking changes, minor
35//! versions track the latest Luau version, and patch versions will be used only
36//! for emergency bugfixes.
37//!
38//! # Portability
39//!
40//! Luau explicitly supports Windows, Linux, macOS, FreeBSD, iOS, and Android.
41//! As such, this crate explicitly supports those platforms as well. As of time
42//! of writing, the crate has only been tested on Linux. Please open an issue
43//! if you encounter any problems on other platforms.
44
45mod lua;
46mod luacode;
47mod luaconf;
48mod lualib;
49
50pub use lua::*;
51pub use luacode::*;
52pub use luaconf::*;
53pub use lualib::*;