A Lua interpreter written entirely in C# for the .NET, Mono and Unity platforms.
As the release for MoonSharp 0.9.0 is approaching, the documentation and tutorials are being updated, thus they might be inconsistent with what’s available in 0.8.x.
As soon as all the tests on iOS over Unity3D are passed, 0.9.0 will be released!
Check the CHANGE LOG to have a peek at what’s coming.
Time for some MoonSharp 0.9.0 teasers…
Wooo so many new things!
MoonSharp 0.9.0 is near, with more changes than ever.
Check the CHANGE LOG to have a peek at what’s coming.
Almost two months of silence! But many things happened in this time frame, even if not a lot of code was committed to the repo.
I did a little summary of major outstanding issues of MoonSharp:
Sense a pattern ? :)
Now, don’t get me wrong, ANTLR is a wonderful tool. Simply, I think it makes a lot more sense on DSLs enterprise scenarios rather than generic scripting languages on 3rd party lib.
So, to cut short, an attempt at a custom lexer+parser is ongoing, hopefully leading to a better solution in the long run. But this is a very very long work, happening on the “remove-antlr” branch.
MoonSharp 0.8.5.1 has been released, with many bugs fixed over 0.8.2.1 and a revised userdata interfacing.
In particular userdata type descriptors are improved in this way:
Zip file | Interpreter NuGet | Debugger NuGet
MoonSharp 0.8.2.1 has been released, with 4 bugs fixed over 0.8.1:
Note: 0.8.2.1 has not been released on NuGet at the moment
Zip file | Interpreter NuGet | Debugger NuGet
MoonSharp 0.8.1 has been released, with two critical bug fixed over 0.8.0:
Zip file | Interpreter NuGet | Debugger NuGet
MoonSharp 0.8.0 has been released, with many interesting additions, including a completed standard library, some support for Unity and Xamarin and debugger additions.
Thanks to good feedback on the forums, some facilities have been added to table to ease access to subtables: now the indexers support any number of keys and resolve to subtables automagically!
Great news:
Big news under the standard library side:
Next on backlog for 0.8.0:
I dedicated some hours lately on getting moonsharp to work on Unity. The test suite has been completely revised and now tests run on Unity too!
Here’s some screenshots.. nothing exciting really, but a proof of the work done!
Hope to do a release soon for all you Unity dwellers.
I have not tested other Unity targets as I don’t have the devices and neither stripping as I have the free Unity not the Pro ones.. but I’ll try to get some Apple devices and a Unity trial later to do some tests with stripping enabled.
Work is going on on MoonSharp. A lot of things are open actually:
Version 0.7.0 has been released! For people using NuGet, please note that there are now two packages:
Instructions on how to use the debugger will follow soon… but if you are desperate to try it, add MoonSharp.RemoteDebugger.dll as a reference (or in NuGet, MoonSharp.Debugger package) and then use this code:
Yep!. It’s that simple.
Work on the debugger is almost complete!
You can download a little demo here, a quick and dirty tic-tac-toe game where the AI is implemented in Lua and is completely debuggable.
Otherwise you can peek at a screenshot of the debugger.
How it works ? The challenge was to give a UI to a DLL which can be used in very different scenarios: GUI applications, full screen games, standalone services etc.
So the debugging is remote, and upon activation of the debugger features, any web browser can be used to debug remotely!. As security measure, by default the debugger is enabled only for localhost, but it can be enabled for network debugging too. As now the debugger application itself is written in Flex/Flash, so a Flash player is required.
Happy debugging!
MoonSharp has a new logo, thanks to Isaac, a friend in the Grimrock modding community!
On more techincal things.. as a peek of new functionality: a dynamic expression facility has been added. In this way, .NET code may evaluate expressions without compiling Lua bytecode using the current execution context, and the same can be done by Lua code.
The evaluation will always perform raw access and will never call any function - it can be used to implement debuggers or things like a data load from a table source (using tables as if it was a format like JSON.. except Lua).
The evaluation is totally dynamic. So for example, if the expression contains a reference to a variable “x”, and we are inside a whatsoever function, it might evaluate as a global. Reevaluate the same expression when a function with an upvalue (or local, or argument) “x” is on the stack, and “x” will refer to that upvalue/local/argument!
Version 0.7.0 will be probably out in a week, but don’t hold your breath as it will be the biggest MoonSharp release so far, so the probability of it slipping is high.
Hopefully I will be able to release MoonSharp 0.7.0 before the week of Nov 17th, otherwise it will slip for another week or two.
That week I’ll be attending O’Reilly Velocity Europe 2014 in Barcelona.. if anyone is there and wants to talk of MoonSharp things, let me know, at info@moonsharp.org.
Minor changes have been done to how escape sequences in strings are managed.
Also, the sharing objects and error handling tutorials have been added!
Version 0.6.0 has been released. This is a very big release and contains - above all - a complete string library and a vastly improved error reporting for both syntax and runtime errors. See the changelog for a complete list of changes.
Note: there are a couple of compatibility breaks in this version - nothing that can’t be fixed in 5 minutes, but you’ve been warned.
The string library has been completed. For the sake of not reinventing the wheel (or, at least, not reinventing every wheel), it was ported from KopiLua code. In the process, a compatibility layer has been implemented to ease the porting of code using classic stack-based APIs like KopiLua, UniLua or Lua itself.
On a side note, visit www.darkdale.net. It’s the project of a friend, a dungeon crawler on the spirit of Eye of the Beholder, Lands of Lore and Legend of Grimrock and it uses MoonSharp as a scripting engine!
MoonSharp 0.5.5 has been released.