知名游戏《机器砖块》使用的脚本语言Luau现在开源

知名游戏《机器砖块》开发商Roblox现在开源自家改良的Lua语言Luau,Luau是一个快速、安全的渐进式类型嵌入脚本语言。官方提到,在15年前他们创建Roblox,选择使用Lua作为脚本语言,由于游戏生态系统重度使用Lua,因此他们着手改进,开发了这个兼容于Lua 5.1的新语言Luau。

过去Roblox将Lua作为脚本语言,整个游戏发展过程,利用《机器砖块》开发游戏的角色,重新手游戏开发人员,转移到了专业游戏开发工作室,再加上Roblox自家工程团队构建应用程序的需求,因此需要提高现有程序代码的性能和品质。

官方提到,由于他们无法对Lua语言进行重大修改,虽然有LuaJIT这类更快的Lua 5.1实例可用,但是在可移植性和易修改性上,并无法满足Roblox的需求,而且LuaJIT也没有办法解决大规模构建强健程序代码的问题。

这些原因促使Roblox自己根据Lua 5.1,重新打造一个新的脚本语言,这个新语言称为Luau,其亮点在于比Lua更好的性能,还有更丰富的功能,并通过渐进类型系统的linting和类型检查功能,供开发者更简单地编写强健的程序代码。

虽然Luau衍生至Lua,但是Roblox重新改写了大部分的程序代码,Roblox提到,他们需要一套工具来编写语言分析工具,但由于Lua的解析器和字节码编译器集成在一起,因此不适合复杂的语义分析。虽然在字节码编译上,单次编译器(Single Pass Compiler)能够提供更好的编译吞吐量,但是却极大程度限制了可以在字节码进行的优化工作。

所以Roblox重头开发了Luau编译器和分析工具,并严格遵循Lua的语法和语义,至于Runtime,Roblox也必需要重写解释器,才能获得更快的性能,官方提到,他们结合使用LuaJIT的技术,并且通过控制整个堆栈来优化Luau解释器,获得接近LuaJIT解释器的性能。

Luau被Roblox游戏开发人员用来编写游戏程序代码,而Roblox工程师也使用Luau来实例大部分面向用户的程序代码,以及编辑器的扩展组件。Roblox提到,他们选择开源Luau,来促进Roblox社群的运行,也让其他公司和社群能使用到Luau,并从中受益。现在Luau语言实例和相关工具程序代码、语言文件和RFC等资料,已经全都在GitHub公开。