Skip to content

Fix build for emscripten target #337

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Dec 13, 2023
Merged

Conversation

tari
Copy link
Contributor

@tari tari commented Dec 6, 2023

This fixes some ABI issues I encountered while building for wasm32-unknown-emscripten after enabling lua-src to build with mlua-rs/lua-src-rs#8. The public API is unchanged despite needing to change some of the FFI declarations.

Commit b16f389 isn't a wasm-specific fix, but the issue it causes is unlikely to be noticed on other platforms unless it causes an ABI break leading to crashes.

tari added 2 commits December 6, 2023 21:09
Lua 5.4 changed lua_rawlen to return lua_Unsigned, versus size_t in earlier
versions. Change the C API signature to match, and add a wrapper function with
the same name that maintains a stable Rust API by casting to usize.
The definition of lua_error in all of Lua 5.1 through 5.4 says lua_error
returns int, but the Rust definition of the same function treats it as
void (because it's known not to return). This causes link-time errors when
building for wasm targets because the wasm linker is aware of function return
types and errors out if they differ between definition and declaration.
@khvzak
Copy link
Member

khvzak commented Dec 13, 2023

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants