Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
lua-eris-sys
Bundles Lua 5.3.5 + Eris (Florian Nuecke's persistence library) and compiles them into a single static library liblua-eris.a. Provides minimal Rust FFI bindings for the subset of the Lua C API + Eris's eris_persist/eris_unpersist needed for testing.
You probably don't want to use this crate directly. Use mlua-eris instead — it provides a safe API on top of mlua that handles perms-table management, error wrapping, and the C-function loader.
What's bundled
- Lua 5.3.5 — full source from Lua.org
- Eris — Florian Nuecke's coroutine/state persistence library, integrated into Lua's
linit.cso it auto-loads as globaleriswhenluaL_openlibsruns
Source comes from fnuecke/eris master-lua5.3 branch (commit 376bc5d, 2017). License attribution in lua-eris-5.3.5/LICENSE.lua-eris.
Why not Lua 5.4?
Eris hasn't been forward-ported to 5.4. The closest community fork (MovingBlocks/eris @ master-lua5.4) is half-finished with TODOs in the coroutine persistence path. Lua 5.3 is still receiving security patches and is the production-ready target for Eris-based persistence.
Build
The build script uses cc to compile all 34 .c files into a single archive. macOS, Linux, and Windows are supported (LUA_USE_MACOSX, LUA_USE_LINUX, and _WIN32's automatic LUA_USE_WINDOWS).
Linking from another crate
lua-eris-sys's build script emits:
cargo:rustc-link-search=native=$OUT_DIR
cargo:rustc-link-lib=static:+whole-archive=lua-eris
The +whole-archive modifier is critical — macOS's linker is one-pass, so without forcing the whole archive, symbols not yet referenced when the archive is processed get dropped. Note: Cargo also drops link directives for crates whose symbols nothing references in the final binary. To keep cargo from treating lua-eris-sys as rmeta-only, add this somewhere in your downstream crate:
use eris_persist as _force_link;
API surface
The exposed FFI is a deliberately minimal subset of the Lua C API plus Eris's two entry points:
;
;
Plus enough of the standard Lua C API (luaL_newstate, luaL_openlibs, lua_pcall, etc.) to write integration tests. Full bindings are NOT a goal — use mlua-sys paired with this crate's external feature for that.
License
MIT (matching both Lua and Eris).