Idea 搭建Lua開發環境

1.Lua是什麼

1993年在巴西里約熱內盧天主教大學誕生了一門編程語言,發明者是該校的三名研究人員,他們給這門語言取了一個浪漫的名字——Lua,在葡萄牙語裏代表美麗的月亮。Lua語言正如它的名字所預示的那樣成長爲一門簡潔、優雅且富有樂趣的語言。

Lua從一開始就是作爲一門方便嵌入其他應用程序並可擴展的輕量級腳本語言來設計的,因爲一直遵從簡單、小巧、可移植、快速的原則,官方實現完全採用ANSI C編寫,能以C程序庫的形式嵌入到宿主程序中。Lua語言在遊戲開發、機器人控制、分佈式應用、圖像處理、生物信息學等各種各樣的領域中得到了越來越廣泛地應用。

2.LuaJIT是什麼

Lua非常高效,它運行的比許多其他腳本如Perl、Python、Ruby都快。LuaJIT就是一個爲了再榨出一些速度的嘗試,它利用了即時編譯(just-in-time)技術把Lua代碼編譯成本地機器碼之後交由CPU直接執行。LuaJIT2的測評報告表明,在數值運算、循環與函數調用、協程切換、字符串操作等許多方面它的加速效果都很明顯。

自從OpenResty 1.5.8.1版本之後,默認捆綁的Lua解釋器就被替換成了LuaJIT,而不再是標準Lua。LuaJIT的運行環境包括一個用手寫彙編實現的Lua解釋器和一個可以直接生成機器代碼的JIT編譯器。

一開始的時候,Lua 字節碼總是被 LuaJIT 的解釋器解釋執行。 LuaJIT 的解釋器會在執行字節碼時同時記錄一些運行時的統計信息, 比如每個 Lua 函數調用入口的實際運行次數, 還有每個 Lua 循環的實際執行次數。 當這些次數超過某個預設的閾值時, 便認爲對應的 Lua 函數入口或者對應的 Lua 循環足夠的“熱”, 這時便會觸發 JIT 編譯器開始工作。JIT 編譯器會從熱函數的入口或者熱循環的某個位置開始嘗試編譯對應的 Lua 代碼路徑。編譯的過程是把 LuaJIT 字節碼先轉換成 LuaJIT 自己定義的中間碼( IR),然後再生成針對目標體系結構的機器碼( 比如 x86_64 指令組成的機器碼)。

LuaJIT的JIT 編譯器的實現目前還不完整, 有一些基本原語它還無法編譯,比如 pairs() 函數、unpack() 函數、string.match() 函數、基於 lua_CFunction 實現的Lua C模塊、FNEW字節碼等等。所以當 JIT 編譯器在當前代碼路徑上遇到了它不支持的操作,便會立即終止當前的 trace 編譯過程(這被稱爲trace abort),而重新退回到解釋器模式。

LuaJIT和標磚Lua解釋器的一大區別是,LuaJIT的執行速度要比標準Lua解釋器快很多,可以說是一個高效的Lua實現。另一個區別是,LuaJIT支持比標準Lua語言更多的基本原語和特性,因此功能上也要更加強大。

3.Lua 環境搭建

我們以Windows爲例,使用Idea搭建Lua開發環境。

1.首先下載Lua for Windows,下載地址https://lua-for-windows.updatestar.com/

2.下載完成之後安裝Lua for Windows,我的安裝目錄爲:F:\Lua5.1

3.idea 安裝Lua開發插件。

Idea Lua插件既可以使用Lua也可以使用EmmyLua,我們選擇EmmyLua,安裝完成後重啓IDEA。

4.新建lua項目lua-test

新建完成後,新建Lua文件test.lua:

運行輸出Hello World~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章