Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/quahu/laylua
Lua wrapper and sandbox for .NET.
https://github.com/quahu/laylua
csharp dotnet dotnet-core embedded-scripting high-performance lua lua-bindings lua-interpreter lua-library lua-sandbox lua-wrapper sandbox scripting zero-alloc
Last synced: 3 months ago
JSON representation
Lua wrapper and sandbox for .NET.
- Host: GitHub
- URL: https://github.com/quahu/laylua
- Owner: Quahu
- License: lgpl-3.0
- Created: 2021-12-27T11:29:32.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-09-08T20:06:33.000Z (4 months ago)
- Last Synced: 2024-10-13T14:24:26.196Z (3 months ago)
- Topics: csharp, dotnet, dotnet-core, embedded-scripting, high-performance, lua, lua-bindings, lua-interpreter, lua-library, lua-sandbox, lua-wrapper, sandbox, scripting, zero-alloc
- Language: C#
- Homepage:
- Size: 579 KB
- Stars: 25
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Laylua
Laylua is a .NET 7 Lua wrapper that allows you to easily embed and sandbox Lua in your application.
It offers several advantages that make it stand out:
- **Performance**
Lua operations can be performed in a "zero-alloc" manner, i.e. without any needless allocations, and utilizing entity pooling for referenced Lua entities. The lifetime of the referenced entities is controlled by your code. Values can be passed to and from Lua without being boxed.
- **Flexible API Access**
Both low and high-level API is available. With a simple `global using static Laylua.Moon.LuaNative;` you essentially get 1:1 Lua C API experience.
- **Preventing Panic Aborts**
Unlike other similar libraries, Laylua prevents the Lua panic handler from aborting the application even on Linux, making Lua interactions completely safe and far more error-forgiving.
- **Proper Sandbox Capabilities**
Laylua does not impose any restrictions on you, allowing you to initialize a clean Lua state without any preloaded libraries. You have the freedom to selectively load specific libraries of your preference. Additionally, Laylua comes with built-in features for memory allocation and instruction count limiting.## Example
```cs
using (var lua = new Lua())
{
lua.SetGlobal("text", "Hello, World!");lua.OpenLibrary(LuaLibraries.Standard.Base);
lua.Execute("print(text)");
}
```## Documentation
Documentation is available on [Laylua's wiki](https://github.com/Quahu/Laylua/wiki).