kyren
e41c72d642
more refactoring trying to find a workable path to 'm' error safety
2017-12-03 18:15:31 -05:00
Timidger
a137086064
Check that we have enough room on stack for module
2017-10-29 15:26:40 -07:00
Timidger
316c6976e4
Added pop after loading lua library
2017-10-29 14:54:55 -07:00
Timidger
2658433bd1
Added ability to load debug lib, Fixes #52
2017-10-28 20:46:24 -07:00
kyren
773bf3e9ba
Fix some clippy lints, possible edge case API incompatibility around HashMap
2017-10-24 16:15:57 -04:00
kyren
f634ce1101
It turns out, luaL_ref uses 1 extra internal stack space
...
All my check_stack calls are wrong, and this blows up very easily in situations
with recursive data structures.
2017-10-24 08:53:26 -04:00
kyren
e7661a5c27
auto-formatting
2017-10-23 16:42:20 -04:00
kyren
8c30acec4e
Possibly better stack behavior
2017-10-23 15:17:46 -04:00
kyren
ba183b0119
Fix quadratic behavior in bind
2017-10-23 14:50:47 -04:00
kyren
4b7a3403bc
Cleanups of userdata handling, particularly around callbacks
...
First, make sure that `add_methods` cannot trigger another userdata registry
insert, causing an unintended panic. Second, remove `RefCell` surrounding
userdata hashmap, as this change makes it no longer needed. Third, add a
`RefCell` around `Callback` because FnMut means that callbacks cannot recurse
into themselves, and panic appropriately when this happens. This should
eventually be turned into an error.
2017-10-14 18:26:09 -04:00
kyren
c5a4dfd7eb
more reorganization, move simple type defines to types.rs module
2017-09-30 01:27:18 -04:00
kyren
7a45490aca
crudely move LightUserData/UserData/AnyUserData to their own module
2017-09-30 01:08:08 -04:00
kyren
f785180a77
Merge pull request #45 from jonas-schievink/string
...
Extend String API
2017-09-30 00:43:19 -04:00
Jonas Schievink
a7a080b50a
Don't load the base library into the "base" global
...
The stock Lua interpreter doesn't do this either. AFAIK the "base" library is supposed to be loaded into "_G" only as it contains functions like `assert` and `error`.
2017-09-17 00:07:19 +02:00
Jonas Schievink
823dd39e5d
Move string and table wrappers into own files
2017-09-15 22:03:14 +02:00
Jonas Schievink
22cbed0240
More documentation work
2017-09-14 22:59:59 +02:00
kyren
d862c0f08e
Add methods to get/set metatables on Table
...
Also make Table::raw_get actually use raw get function instead of lua_gettable!
2017-09-10 19:14:51 -04:00
kyren
13dc68c36d
Rename 'lua lifetimes to actually be 'lua
2017-09-09 21:29:22 -04:00
kyren
2553623b65
Provide custom allocators that ensure that OOM results in an abort
...
(closes unsafety hole)
2017-08-02 16:33:48 -04:00
kyren
16f57d18e5
Merge pull request #34 from jonas-schievink/better-error
...
[WIP] Enhanced errors
2017-08-02 16:00:08 -04:00
kyren
9c34d4b99f
Fix soundness problems with rlua
...
setmetatable now wraps a __gc method in a cclosure that aborts on error, also
'debug' library is no longer provided. We could provide just the subset of the
debug library that is sound, though.
2017-08-02 14:36:54 -04:00
kyren
820c38e806
Rename Active / Dead to better reflect their behavior
2017-08-02 13:05:26 -04:00
Jonas Schievink
a43bfd8f63
Remove expected field from FromLuaConversionError
2017-08-02 13:56:28 +02:00
kyren
f6cefca916
Remove stray 'for<'a>' of unused 'a lifetime
2017-08-01 18:35:09 -04:00
Jonas Schievink
7e250dacce
Enhance error messages
2017-08-01 23:23:31 +02:00
kyren
48bf35dc5b
Fix references to hlists in documentation, improve? Variadic usability
...
Also rename to/from/pack/unpack to pack/unpack/pack_multi/unpack_multi, I don't
know if this makes their usage clearer, and it IS a bit confusing that I'm
changing the meaning of the words 'pack' and 'unpack'
2017-08-01 13:55:08 -04:00
kyren
c1abc18066
Merge remote-tracking branch 'origin/master' into tuples
2017-08-01 13:02:58 -04:00
kyren
721ffc462d
Callbacks should be 'static again, fix #33
...
Every time I do lifetime transmutation, I get it wrong.
2017-08-01 12:11:28 -04:00
kyren
d02e32a80a
Remove the rest of the uses of pack / unpack
2017-07-31 01:27:35 -04:00
kyren
4549abbb85
Two major API changes to start with:
...
* Callbacks have generic argument and return types
* All variadics are done with tuples
2017-07-31 01:21:41 -04:00
Jonas Schievink
ad6cf21921
Document Error
...
I didn't yet document *everything* there is to say (in particular, how
exactly custom Rust errors can be passed through Lua), but I've some
changes to this type in mind that I'll do next.
2017-07-28 12:50:30 +02:00
kyren
d415455ccb
Fix several bugs with error handling in xxx_with_traceback functions
...
In resume_with_traceback, always use the coroutine stack for error handling so
we don't miss panics, in both _with_traceback functions remove the temporary
traceback entry from the stack.
2017-07-27 17:16:40 -04:00
kyren
3adacd5589
Merge pull request #27 from jonas-schievink/userdata
...
Few more examples and docs
2017-07-26 12:07:17 -04:00
kyren
8b6425dc39
Clean up lifetimes after LuaCallback typedef change
2017-07-26 11:43:38 -04:00
Jonas Schievink
2b182860f7
Don't use hlist macros in userdata example
2017-07-26 17:28:47 +02:00
Jonas Schievink
f657d301da
Document Lua::create_function
2017-07-26 16:38:10 +02:00
kyren
bf6ef3ecad
Fix wrong name of __newindex metamethod
2017-07-26 10:34:24 -04:00
Jonas Schievink
bb662e5a12
Document the UserData trait
2017-07-26 01:55:29 +02:00
Jonas Schievink
4e52544bd1
Deny warnings in doc tests
...
This magical attribute is grossly underdocumented, but it works. And
it's literally the only thing that makes this work the way I want it to.
2017-07-25 23:41:58 +02:00
Jonas Schievink
df5c8fa4b0
Remove unneeded variable from example
...
Apparently doctests swallow *all* of their output, including compiler
warnings, by default.
2017-07-25 22:58:18 +02:00
kyren
8515db4c82
Merge pull request #24 from jonas-schievink/examples
...
Enhance documentation and add more examples
2017-07-25 00:40:11 -04:00
kyren
8194c4d411
Use stack_guard when the function doesn't return Result
...
Also, simplify some things that used to use error_guard but now are not
2017-07-25 00:37:44 -04:00
Jonas Schievink
335ecbbac6
tiny typo
2017-07-25 02:13:11 +02:00
Jonas Schievink
54464b0842
AnyUserData docs
2017-07-25 02:11:17 +02:00
Jonas Schievink
58c80c05be
Replace unneeded eval by exec
2017-07-25 02:05:57 +02:00
Jonas Schievink
34fd4a00ce
Document UserDataMethods
2017-07-25 02:00:49 +02:00
Jonas Schievink
e2aeca58ae
Table docs and examples
...
This looks almost like the standard lib now :)
2017-07-25 01:40:53 +02:00
Jonas Schievink
09dc89895a
Add an example
2017-07-25 00:42:59 +02:00
Jonas Schievink
1f2fc6455f
Beef up the String API
...
Adds `as_bytes` to view the string as a `[u8]`. Unlike the conversion to
a `&str` slice, this cannot fail.
Adds tests for both functions, which made me notice that `to_str` is
broken when the string contains null bytes, so I made it use the
`as_bytes` method.
2017-07-25 00:37:37 +02:00
Jonas Schievink
0b7b7e9d79
Add Function::call example
2017-07-25 00:16:43 +02:00