LuaDirectory > LuaAddons > Lua实现
Lua 的重新实现有很多。Lua 的简洁性是其中一个因素。
Lua 编译器和解释器的重新实现: (按目标/宿主平台排序)
- ANSI C / Lua 字节码
- [Lua] (5.1/5.2/5.3) - 将 Lua 源代码编译为标准的 Lua 字节码。Lua VM 解释 Lua 字节码。用 ANSI C 实现。这是 Lua 的标准参考实现。非常健壮。
- x86, x64, ARM, PPC, MIPS
- [LuaJIT] (5.1) - Lua 5.1 的即时 (JIT) 编译器。性能更好 [1]。
- [LJX] (5.1/5.2/5.3) - LuaJIT 2.1-beta2 的实验性分支,添加了 Lua 5.2 (例如 __gc 用于表,_ENV) 和 5.3 (按位运算符) 的原生语言语义。支持版本间的交叉兼容。
- LLVM (JIT)
- LlvmLua (5.1) - 将 Lua 字节码转换为 LLVM IR 代码。支持 JIT 和静态编译。仅限于 LLVM 支持的 CPU。用 C/C++ 实现。
- Lua
- [Yueliang] (5.1/5.0) - 将 Lua 源代码编译为标准的 Lua 字节码。用 Lua 实现。这是一个显而易见的移植,但也包含一个可选的、更原生风格的解析器/词法分析器移植。
- [FiOne] (5.1) - 用 Lua 实现的 Lua 5.1 VM。实现了一个 VM 解释器,但重用了宿主 Lua 环境的数据类型和标准库函数。列表中最快的 Lua 字节码解释器。需要位运算库或 bit32 库才能运行。修复了闭包和其他操作码的几个 bug。
- [LuLu] (5.1) - 用 Lua 实现的 Lua 5.1 VM。实现了一个 VM 解释器和协程库,但重用了宿主 Lua 环境的数据类型和标准库函数。在闭包的 nil 参数上有 bug。
- [LBI] (5.1) - 用 Lua 实现的 Lua 5.1 VM。实现了一个 VM 解释器,但重用了宿主 Lua 环境的数据类型和标准库函数。在闭包的 nil 参数上有 bug。不清理闭包堆栈,导致行为无效。
- [FiThree] (5.3) - 用 Lua 实现的 Lua 5.3 VM。实现了一个 VM 解释器,但重用了宿主 Lua 环境的数据类型和标准库函数。需要位运算库或 bit32 库才能运行。
- [Metalua] (5.1) - 编译 Lua 的超集,支持 Lisp 风格的宏和语法扩展,生成标准的 Lua 字节码。用 Lua 实现 (包含部分 C)。解析器 (源代码 -> AST 转换器) 可单独重用,用 Lua 通过 gg 解析器转换器 (用 Lua 实现) 实现,部分基于 Yueliang。
- 另见 LuaCompilerInLua、LuaInterpreterInLua、StringLibraryInLua
- Java
- [Kahlua][25] (5.1) - 用 Java J2ME (CLDC 1.1) 实现的 Lua (子集) 的虚拟机和编译器。用 Java 实现,也可在 J2SE 和 J2EE 上运行。VM 解释标准的 Lua 字节码。使用 Java 的垃圾回收[2]。 [差异] 编译器基于 LuaJ 分支。
- [Mochalua] (5.1) - Lua 虚拟机、库和 API 移植到 Java J2ME CLDC 1.1 [26]。VM 解释标准的 Lua 字节码。
- [LuaJ] (5.1, 5.2) - 轻量级、快速的以 Java 为中心的 Lua 解释器,专为 J2ME 和 J2SE 编写,包括基础、字符串、表、包、数学、协程包的库,可选的编译器,luajava 绑定,以及 [JSR-223] 可插拔脚本引擎绑定。 [LuaJ 主页]
- [Rembulan] (5.3) - 为 JVM 实现的 Lua 5.3 的干净室实现,依赖性最小 (需要 JDK 7+)。编译为 Java 字节码。实现轻量级协程,允许限制执行时间。
- [LuaJava] (5.1) - LuaJava? 是一个基于 JNI (使用 Lua 5.1.1 二进制文件) 的 Java 脚本工具。
- [JNLua] (5.1, 5.2) - 使用 Java Native API (JNI) 将 Lua C 代码集成到 Java 中。 [JSR-223] 可插拔脚本引擎绑定。
- [Jill] (5.1) - Java 实现的 Lua 语言。最初是在商业合同下开发的,现在是开源的。VM、编译器、API 和库运行在 JME CLDC 1.1 上。VM 解释标准的 Lua 字节码。库的存在程度取决于 CLDC 的支持 (没有 io.*,math.* 已简化)。也可在 JSE 上运行。33 个类。
- [hklib] (5.3) - 用 Java 实现的 Lua 解释器,具有强大的 Lua-Java 桥接功能和 Lua 环境的广泛自定义,但没有调试或包库。还包含一个简单的 Java 库。任何库都可以很容易地用 Java 实现并导入到 Lua 环境中。
- 旧版本: [JLua] [jua]
- .NET
- [LuaCLR] - (5.1) 将 Lua 源代码编译到 .NET CLR。用 Lua 实现。
- [Lua2IL] 注意:链接已失效 14/10/13 - (5.0) 将 Lua 5.0 字节码翻译为 .NET CLR (IL 指令)。这是 LuaCLR 的前身。 [3] (修复:翻译器是用什么实现的?)
- [Nua] (5.1) - 将 Lua 源代码编译到 .NET 动态语言运行时 (DLR)。用 C# 实现。 [4]
- [XNua] 注意:链接已失效 14/10/13 - (5.1)。将 Lua 源代码编译到 .NET 字节码 (特别是 Xbox 360)。用 C# 实现。使用 .NET 的垃圾回收[5],并存在其他差异/限制[6]。
- [Kopi Lua] - (5.1) Lua 源代码 (编译器、VM、GC、库等) 的逐行移植到 C#。字节码与 C 版本兼容。
- [SharpLua] - 基于 Lua 5.1.5 的 C# Lua 实现。
- [AluminumLua] - "一个完全用 C# 编写的快速、轻量级的 Lua 脚本引擎。"
- [Quorra] - 旨在为 .NET / Mono 提供 Lua 的完整功能和兼容性。
- [UniLua] - (5.2) Lua 5.2 的纯 C# 实现,侧重于与 Unity3D 的兼容性。
- [NLua] - (5.1.5/5.2.2) C# 实现与原生绑定的混合,兼容 .NET/iOS/Android/WinPhone?。
- [NeoLua] - NeoLua?,动态语言运行时 (DLR) 的 Lua 5.2 实现。
- [Moon#] - Moon#,一个完全用 C# 编写的 Lua 5.2 实现,适用于 .NET 3.5/Mono 2.6 及更高版本。
- [LunaRoad] - Lua C API (v5.1, 5.2, 5.3, ...) 用于 .NET / 提供了一个灵活的平台来处理 Lua。提供 Lua 接口、Lambda 表达式、动态特性,可用于在运行时自动生成新的 API 层等。截至 2016 年仍活跃。
-
- Parrot VM
- C API
- LuaToCee (5.1) - 将 Lua 源代码转换为 C API 调用。用 Lua 实现 (基于 Metalua 的 Lua 实现)。
- [luac2c] (5.1) - 将 Lua 字节码转换为 C API 调用。用 Lua 实现。
- JavaScript
- Action
Script - Flash 中包含的 JavaScript 的变体。
- [flua] (5.0) 注意:链接已失效 14/10/13 - Action
Script 中的 Lua 5.0 VM。VM 解释标准的 Lua 字节码。用 ActionScript 实现。 - [lua-alchemy][Lua under Alchemy][29] (5.1) - 标准 Lua 5.1 编译器和 VM 用 Action
Script (JavaScript 的 Flash 变体) 实现,带有 .swc 文件中的内联 AVM2 字节码。这个 .swc 是使用 Alchemy[10][11] (LLVM[12] 的后端) 从标准 Lua 源代码机器翻译而来的。(所以,这不是手动重写,而是有趣的机器翻译。) [示例:Phyzios] - [lua.js] - 将 Lua 代码直接转换为 ECMAscript 或 Action
Script。
- Leonardo VM
- OCaml
- [Lua-ML] (2.5) - Lua 2.5 解释器。用 Objective Caml 实现。
- Erlang
- Go
仅重新实现 Lua 词法分析器或解析器 (无代码生成器或 VM)
绑定到标准 Lua
用 Lua 实现的其他语言
基于 Lua 的语言
这些语言基于 Lua 的实现 (例如,修改的 VM)。
- PlutoScript[17]
- Agena[18][30] - 基于 Lua C 源代码,但语法差异很大。
- Idle[19]
- Dao[20][31][32]
- [LuaPlus] - 基于 5.0work,不再维护。
- Bright[21][22] - 更像 C 的语法,基于 Lua 4.0,不再维护。
- Squirrel[23]
- [SquiLu] - Squirrel 和 Lua 的混合体,试图结合两者的优点。
- Objective Lua[24]
- Python: [tinypy] - Python 的一个小子集,以 Lua 的风格编写 (但不是基于 Lua 代码)。
- MetaLua - 为 Lua 带来编译时元编程。编译为标准的 Lua 5.1 字节码。
- [Killa]:一个基于 Lua 5.2 的脚本语言,具有类似 JavaScript? 的语法。
- [Ravi] - Lua 5.3 的修改版本,带有可选的静态类型和 JIT 编译。
- [Jual] - 一个基于 Lua 5.3 的 VM,具有类似 JavaScript? 的语法,并且与 Lua 5.3 字节码兼容。
- [LJS] - 一个基于 Lua 5.3 的 VM,具有类似 JavaScript? 的语法,与 Lua 5.3 字节码兼容;是 Killa、Jual 等的混合体。
- [LJSJIT] - 一个基于 LuaJIT 2.1.0-beta3 的 VM,具有类似 JavaScript? 的语法,与 Lua 5.1 字节码兼容;是 Killa、Jual 等的混合体。
- [Luau] - 一种基于 Lua 5.1 的开源语言,已根据 Roblox 多人游戏平台的需求进行了调整。
Lua 测试套件
有关检查 Lua 实现正确性的测试套件,请参见 UnitTesting。
另请参阅
RecentChanges · preferences
编辑 · 历史
最后编辑于 2023 年 8 月 14 日下午 5:23 GMT (差异)