知名遊戲《機器磚塊》開發商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公開。


熱門新聞

Advertisement