Show HN: NetLua – Completely managed .NET Lua
github.com
github.com
[0] http://nlua.org/
NLua still relies on native code.
Managed code, on the other hand, by MS' own definition: "All of these languages share a unified set of class libraries and can be encoded into an Intermediate Language (IL). A runtime-aware compiler compiles the IL into native executable code within a managed execution environment that ensures type safety, array bound and index checking, exception handling, and garbage collection." [0]
[0] http://msdn.microsoft.com/en-us/library/windows/desktop/bb31...
EDIT: I should add, that while unmanaged code does not run on the CLR, the CLR does act as a bridge between managed and unmanaged code.
More specifically, no native code is explicitly used. IL may be compiled down to e.g. x86-64, but you won't have a C DLL being PInvoked from your C# (or other .NET language), nor a C++/CLI DLL compiled against x86-64 specifically.
Among other advantages, this usually implies:
- Less interop overhead (unmanaged <-> managed transitions are expensive)
- Easier dependency management (just include the assembly instead of assembly + native DLLs via installer or whatever)
- Portable (more likely to run on e.g. the Mono Runtime on a Linux box with an ARM processor without requiring a build specific to ARM and possibly to Linux)