summaryrefslogtreecommitdiff
path: root/examples
AgeCommit message (Collapse)Author
2021-04-27Remove Result from lua.null() and lua.array_metatable(). They never fail.Alex Orlenko
2021-01-20Update tokio to 1.0 for async examplesAlex Orlenko
2020-12-29Re-export mlua_deriveAlex Orlenko
2020-12-29Add serialization example & update othersAlex Orlenko
2020-12-28Add `reqwest` http client example to fetch jsonAlex Orlenko
2020-06-07Add test to check loading module from lua coroutine (thread)Alex Orlenko
2020-06-07New `module` featureAlex Orlenko
Don't link module with Lua core (see: http://lua-users.org/wiki/BuildingModules) Example and tests for modules
2020-05-15Add async http server exampleAlex Orlenko
2020-05-11Add Send capability to LuaAlex Orlenko
2020-05-11Bind Futures lifetimes to 'lua rather than 'static.Alex Orlenko
Fix async examples.
2020-04-19Update examplesAlex Orlenko
2020-04-17Update READMEAlex Orlenko
Cargo fmt and minor changes
2020-04-17v0.3.0-alpha.1 with async supportAlex Orlenko
Squashed commit of the async branch.
2019-11-04Fix examples and docsAlex Orlenko
2018-10-01Allow non-utf8 Lua source in load / exec / evalkyren
2018-10-01Whoops, misplaced assertkyren
2018-10-01Some more minor guided tour updateskyren
2018-10-01Update comments in guided tour for recent additionskyren
2018-09-24Upgrade rustyline to 2.0 to avoid confusionkyren
2018-09-16Move integration tests into top-level tests directorykyren
other minor refactors
2018-09-04Initial design for non-'static scoped userdatakyren
Uses the same UserData trait, and should at least in theory support everything that 'static UserData does, except that any functions added that rely on AnyUserData are pretty much useless. Probably pretty slow and I'm not sure how to make it dramatically faster, which is a shame because generally when you need non'-static userdata you might be creating it kind of a lot (if it was long-lived, it would probably be 'static). Haven't added tests yet, will do that next.
2018-05-02Fix #78kyren
2018-02-10Change changelog, readme, examples, Cargo.toml for 0.12 releasekyren
2017-12-03I believe this is all the external API changes necessary for 'm' safetykyren
2017-10-23auto-formattingkyren
2017-08-03autoformattingkyren
2017-08-02Merge pull request #34 from jonas-schievink/better-errorkyren
[WIP] Enhanced errors
2017-08-02Fix multiline inputsJonas Schievink
2017-08-02Use rustyline for the REPLJonas Schievink
This makes the REPL more usable as you can now edit lines and recall previously executed statements.
2017-08-01Merge IncompleteStatement into SyntaxErrorJonas Schievink
Both are a form of syntax error, this reflects that better. No functionality is lost, incomplete inputs are moved to a bool field of SyntaxError.
2017-08-01Replace _: () with () everywherekyren
2017-08-01Fix references to hlists in documentation, improve? Variadic usabilitykyren
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-07-31Remove the rest of the uses of pack / unpackkyren
2017-07-31Two major API changes to start with:kyren
* Callbacks have generic argument and return types * All variadics are done with tuples
2017-07-23Rename `LuaString` to `String`Jonas Schievink
This required a lot of little adjustments where we used std's `String` before. In downstream code, this shouldn't be necessary, as you can just do `use rlua::String as LuaString` to disambiguate.
2017-07-23Remove the `Lua*` prefix from most typesJonas Schievink
cc #15 Doesn't touch `LuaString` mainly because that's a *lot* of renaming work and the code looks weird. Also I want feedback before I proceed.
2017-07-19Add back explanatory comment about trying "return <expr>" before statementkyren
Also run through rustfmt
2017-07-16Give `Lua::eval` a source name param and simplifyJonas Schievink
2017-06-25Update README, small example changes.kyren
2017-06-25Another major API change, out of stack space is not an Errkyren
It, ahem "should not" be possible to exhaust lua stack space in normal usage, and causing stack errors to be Err is slightly obnoxious. I have been wanting to make this change for a while, and removing the callback API from tables makes this sensible *I think*. I can think of a couple of ways that this is not technically true, but I think that they are acceptable, or should be handled differently. One, you can make arbitrarily sized LuaVariadic values. I think this is maybe a bug already, because there is an argument limit in Lua which is lower than the stack limit. I'm not sure what happens there, but if it is a stack based panic, (or any panic?) it is a bug. Two, I believe that if you recurse over and over between lua -> rust -> lua -> rust etc, and call rlua API functions, you might get a stack panic. I think for trusted lua code, this is morally equivalent to a regular stack overflow in plain rust, which is already.. well it's not a panic but it's some kind of safe crash I'm not sure, so I think this is acceptable. For *untrusted* lua code, this could theoretically be a problem if the API provided a callback that would call back into lua, then some lua script could force a stack based panic. There are so many concerns with untrusted lua code, and this library is NOT safe enough yet for untrusted code (it doesn't even provide an option to limit lua to the safe API subset yet!), so this is not currently an issue. When the library provides support for "safe lua", it should come with big warnings anyway, and being able to force a stack panic is pretty minor in comparison. I think if there are other ways to cause unbounded stack usage, that it is a bug, or there can be an error just for that situation, like argument count limits. This commit also fixes several stupid bugs with tests, stack checking, and panics.
2017-06-25Simplification of error typeskyren
The multi-level error types were a mistake. Probably should have waited on the cargo version bump, oh well.
2017-06-24Lots of LuaError changeskyren
It is possible that I have gone too far here into error discrimination and should scale it back, not sure yet.
2017-06-24Big API incompatible error change, remove dependency on error_chainkyren
The current situation with error_chain is less than ideal, and there are lots of conflicting interests that are impossible to meet at once. Here is an unorganized brain dump of the current situation, stay awhile and listen! This change was triggered ultimately by the desire to make LuaError implement Clone, and this is currently impossible with error_chain. LuaError must implement Clone to be a proper lua citizen that can live as userdata within a lua runtime, because there is no way to limit what the lua runtime can do with a received error. Currently, this is solved by there being a rule that the error will "expire" if the error is passed back into rust, and this is very sub-optimal. In fact, one could easily imagine a scenario where lua is for example memoizing some function, and if the function has ever errored in the past the function should continue returning the same error, and this situation immediately fails with this restriciton in place. Additionally, there are other more minor problems with error_chain which make the API less good than it could be, or limit how we can use error_chain. This change has already solved a small bug in a Chucklefish project, where the conversion from an external error type (Borrow[Mut]Error) was allowed but not intended for user code, and was accidentally used. Additionally, pattern matching on error_chain errors, which should be common when dealing with Lua, is less convenient than a hand rolled error type. So, if we decide not to use error_chain, we now have a new set of problems if we decide interoperability with error_chain is important. The first problem we run into is that there are two natural bounds for wrapped errors that we would pick, (Error + Send + Sync), or just Error, and neither of them will interoperate well with error_chain. (Error + Send + Sync) means we can't wrap error chain errors into LuaError::ExternalError (they're missing the Sync bound), and having the bounds be just Error means the opposite, that we can't hold a LuaError inside an error_chain error. We could just decide that interoperability with error_chain is the most important qualification, and pick (Error + Send), but this causes a DIFFERENT set of problems. The rust ecosystem has the two primary error bounds as Error or (Error + Send + Sync), and there are Into impls from &str / String to Box<Error + Send + Sync> for example, but NOT (Error + Send). This means that we are forced to manually recreate the conversions from &str / String to LuaError rather than relying on a single Into<Box<Error + Send + Sync>> bound, but this means that string conversions have a different set of methods than other error types for external error conversion. I have not been able to figure out an API that I am happy with that uses the (Error + Send) bound. Box<Error> is obnoxious because not having errors implement Send causes needless problems in a multithreaded context, so that leaves (Error + Send + Sync). This is actually a completely reasonable bound for external errors, and has the nice String Into impls that we would want, the ONLY problem is that it is a pain to interoperate with the current version of error_chain. It would be nice to be able to specify the traits that an error generated by the error_chain macro would implement, and this is apparently in progress in the error_chain library. This would solve both the problem with not being able to implement Clone and the problems with (Error + Send) bounds. I am not convinced that this library should go back to using error_chain when that functionality is in stable error_chain though, because of the other minor usability problems with using error_chain. In that theoretical situation, the downside of NOT using error_chain is simply that there would not be automatic stacktraces of LuaError. This is not a huge problem, because stack traces of lua errors are not extremely useful, and for external errors it is not too hard to create a different version of the LuaExternalResult / LuaExternalError traits and do conversion from an error_chain type into a type that will print the stacktrace on display, or use downcasting in the error causes. So in summary, this library is no longer using error_chain, and probably will not use it again in the future. Currently this means that to interoperate with error_chain, you should use error_chain 0.8.1, which derives Sync on errors, or wait for a version that supports user defined trait derives. In the future when error_chain supports user defined trait derives, users may have to take an extra step to make wrapped external errors print the stacktrace that they capture. This change works, but is not entirely complete. There is no error documentation yet, and the change brought to a head an ugly module organization problem. There will be more commits for documentation and reorganization, then a new stable version of rlua.
2017-06-20Method renames, remove ToLua / FromLua impls for Setskyren
There is no single obvious form for a set in lua, and it is not very difficult to accept a table and convert the sequence values into a set. Also rename some methods as per discussion.
2017-06-18Rename `LuaTable::(raw_)length` to `(raw_)len`Jonas Schievink
All Rust containers use `len` for this. Even in the Lua API, this is called `lua_len` and `lua_rawlen`.
2017-06-18Rename `Lua::load` to `Lua::exec`Jonas Schievink
When talking about "loading" Lua code, it usually means compiling a chunk of code into a runnable Lua function, but without actually running it. This makes that clear.
2017-06-17Merge pull request #7 from jonas-schievink/popenkyren
Enable `io.popen` on Linux
2017-06-17Allow multiline input in the REPL exampleJonas Schievink
2017-06-17Add a simple repl exampleJonas Schievink
2017-06-15that example hardly shows ALL the featureskyren