|
On 2018-02-19 04:03, ThePhD wrote:
Perhaps tangential to the discussion, but longjmp / setjmp has bitten me a lot too. From not running C++ destructors to making cleanup code get skipped and generally surprising behavior, if there's any mechanism I'd avoid in any API -- even with plain C where destructors and stack unwinding isn't a thing -- it's these.
IIRC, you can compile Lua as C++, in which case it won't use setjmp / longjmp but do The C++ Thing, and then all of that should Just Work.
(If you look at the top of `ldo.c`, all the ugly stuff is tucked away in a bunch of small macros and should be relatively easy to change, if an alternate exception mechanism is available.)
(@Soni: Have you tried messing with that or do you already know that this doesn't help with the Rust situation?)
-- nobody