Commit Graph

361 Commits

Author SHA1 Message Date
kyren 37feaebdce Also describe how protect_lua_call functions should not hold types that Drop 2018-03-01 17:56:19 -05:00
kyren 8ac78c4585 Make some changes whose necessity became recently apparent while reading rustc 1.24.1 change notes.
So, despite staring intently at the params structure magic in protect_lua_call,
there is still a nasty bug.  In the event of an error, the return value of the
parameters structure could be dropped despite being mem::unintialized.  Of
course, the actual return values are incidentally always Copy I think, so this
wasn't an actual bug, but I've proven to myself the danger of such dark majyyks.
Just use Option and be done with it, it doesn't have to be so complicated!

Also document why there are a slew of random functions in the ffi module.
2018-03-01 17:17:18 -05:00
kyren 0e9a70e688 (cargo-release) start next development iteration 0.13.1-alpha.0 2018-02-28 14:51:50 -05:00
kyren e98d4d1827 Update changelog / cargo.toml in prep for 0.13 2018-02-28 14:44:16 -05:00
kyren 5d96ddc52a Temporary fix for #71. Remove when rust #48251 is fixed in stable. 2018-02-28 14:43:15 -05:00
kyren d7995137d7 Add debug API to ffi (not used yet, was using experimentally)
Also fix for cstr! macro
2018-02-28 14:42:05 -05:00
kyren 8824a236b2 Remove slightly triggering, and now misleading, language from README 2018-02-19 18:16:43 -05:00
kyren a49ea51b79 Remove terrible awful no-good evil hack
The breakage is being addressed in rust itself.
2018-02-19 18:09:04 -05:00
kyren e19a5b6481 Cleanup max upvalues constant a bit, add some luaconf.h assumptions 2018-02-19 18:03:18 -05:00
kyren d78420b51c Communicate a little bit better about the checkstack constant 2018-02-19 17:57:39 -05:00
kyren ace5cb44f0 Letting scope handles escape the scope was unsafe
This simplifies the Scope lifetimes, and should make it a compile error for
scope created handles to exit the scope.  This should be strictly better, as you
would never WANT to do this, but I hope that I have not caused a subtle lifetime
problem that would prevent passing those created handles back into Lua.  I've
tested every situation I can think of, and it doesn't appear to be an issue, but
I admit that I don't fully understand everything involved and I could be missing
something.

The reason that I needed to do this is that if you can let a scope handle escape
the scope, you have a LuaRef with an unused registry id, and that can lead to
UB.  Since not letting the scope references escape is a strict improvement
ANYWAY (if I haven't caused a lifetime issue), this is the easiest fix.

This is technically a breaking change but I think in most cases if you notice it
you would be invoking UB, or you had a function that accepted a Scope or
something.  I don't know if it's worth a version bump?
2018-02-19 17:40:48 -05:00
kyren 0450c9b597 Make error_traceback never trigger a Lua error
It is called from both Lua and Rust, and any error would hide the error it's
trying to generate a traceback for.
2018-02-18 21:13:35 -05:00
kyren b07557c1c7 more hard to trigger bugs that I noticed doing conversion 2018-02-18 06:09:15 -05:00
kyren bb2a9c5b5d Fix several bugs found while doing C conversion
Fixing these in master in case I need to back out the change I'm making
2018-02-18 05:26:14 -05:00
kyren 52eedfd378 I'm not going to release this as is, but I need to weigh my options 2018-02-16 23:43:30 -05:00
kyren dec360f78f Can.. can I do this? Is this a thing that actually works?
Drastic times and all that.
2018-02-16 22:01:41 -05:00
kyren 73de52dcce Remove debugging println!s 2018-02-16 21:09:49 -05:00
kyren f0186d1799 Provisional "fix" for #71. Requires nightly :( 2018-02-15 21:39:35 -05:00
kyren 6b46e8abe9 prepare for 0.12.2 2018-02-14 00:56:20 -05:00
kyren fc058eba60 comment fixes 2018-02-12 13:56:23 -05:00
kyren c22aae461b Some changes for panic correctness, stack usage correctness, and speed 2018-02-12 13:54:31 -05:00
kyren c4b3170e2b More documentation fixes 2018-02-11 18:17:15 -05:00
kyren 9a45ef45e4 clarify the situation with the debug library a bit better 2018-02-11 18:12:20 -05:00
kyren 9388a72d61 Update Cargo.toml for 0.12.1 2018-02-11 17:55:40 -05:00
kyren 5f596d9117 Update changelog for 0.12.1, and add missing entry for 0.12.0 2018-02-11 17:54:27 -05:00
kyren bfe44089ef Documentation fixes / additions 2018-02-11 17:54:17 -05:00
kyren ea834635c1 Add UserDataMethods:: add_function_mut and add_meta_function_mut 2018-02-11 17:53:25 -05:00
kyren 7231e95195 It's far too easy to write 'stack_guard' as opposed to 'stack_err_guard'!
And it will work until something fails!  Maybe there should be a test that calls
every possible function that invokes to_lua / from_lua with a type where both
directions fail?
2018-02-11 16:47:39 -05:00
kyren ce7e8e61fd shave this yak some more, make Callback type alias have two lifetimes 2018-02-11 08:51:17 -05:00
kyren da1e1625b3 Specify the types exactly in the scary transmute
If I happen to change the definition of the Callback type alias, instead of
creating a potentially arbitrary transmute, it will now instead fail to compile.
2018-02-11 08:30:03 -05:00
kyren a91e3ed411 clarify the scary transmute 2018-02-11 08:22:15 -05:00
kyren fd0e31c6ea Add some extra warnings about the reference cycle dangers of RegistryKey 2018-02-11 06:37:51 -05:00
kyren b123eb087d Clarify some things in the README 2018-02-11 06:23:52 -05:00
kyren ca631e470a changelog spelling fix 2018-02-11 06:14:52 -05:00
kyren 9483b5054e Change changelog to be less confusing
There will not be a changelog entry for the changelog entry
2018-02-11 06:13:34 -05:00
kyren f94037856a Small README clarification 2018-02-10 19:13:56 -05:00
kyren 61236e685f Change changelog, readme, examples, Cargo.toml for 0.12 release 2018-02-10 19:04:18 -05:00
kyren 1b92d3319c consistent capitalization 2018-02-10 18:00:53 -05:00
kyren 0b7f07aa5d clarify that the Lua *C* API is the one that longjmps 2018-02-10 17:59:20 -05:00
kyren c3242add40 Update README for readability 2018-02-10 17:55:20 -05:00
kyren 20480ec88d fix unused process import warnings 2018-02-10 17:55:08 -05:00
kyren c5a5c51e9f A lot of README updates for the next version 2018-02-10 17:50:04 -05:00
kyren 9e3374ff9e lua_abort / lua_internal_abort macros 2018-02-10 17:49:54 -05:00
kyren 1426bdbc16 fix duplicated matrix entry for .travis.yml 2018-02-10 00:35:12 -05:00
kyren d4c80d44c8 Attempt to enable compiletest_rs on nightly on travis 2018-02-10 00:27:15 -05:00
kyren f785a3abe4 Don't bother with a feature, just disable LUA_USE_APICHECK in release 2018-02-09 23:59:11 -05:00
kyren 60743d45cd Move all tests into a tests/ subfolder 2018-02-09 23:52:05 -05:00
kyren d331e4b97c Error correctly on too many arguments / returns / binds / recursions
There are also some other drive-by changes to fix panicking in extern "C"
functions and other edge case stack errors
2018-02-09 23:40:23 -05:00
kyren fe6e4bdf35 Explicit error type for destructed callbacks
Also removes some cleverness if debug_assertions was disabled, as it really
doesn't make much of a performance difference.
2018-02-09 21:23:59 -05:00
kyren 514abd5b82 Actually unref scope created types from the registry AS WELL AS destructing them 2018-02-09 07:27:55 -05:00