Add Development Notes

Lucas Schwiderski 2025-05-12 17:01:22 +02:00
parent f96e0e263c
commit dbaad29b2a
Signed by: Forgejo (git.sclu1034.dev)
GPG key ID: B1C9C29730D3D366

6
Development-Notes.md Normal file

@ -0,0 +1,6 @@
## Lua's error handling breaks Rust's memory safety
Since Lua utilizes `longjmp` for error handling and stack unwinding, any Lua error that crosses a Rust stack frame is going to lead to memory leaks from skipping `drop`s and to borrow checker constraints being broken.
The problem is that many Lua functions create errors internally. Some of them cannot be avoided (e.g. OOM), but wherever possible, per-conditions need to be checked such that Lua does not `longjmp`.
E.g. a `lua.tostring` must be preceded by a `lua.isstring`.