複製鏈接
請複製以下鏈接發送給好友

LuaJIT

鎖定
LuaJIT即採用C語言寫的Lua代碼的解釋器。
外文名
LuaJIT
實    質
採用C語言寫的Lua的解釋器的代碼
功    能
沒有被使用的函數不會被編譯
特    點
高效和可擴展.

目錄

LuaJIT簡介

LuaJIT is a Just-In-Time Compiler for the Lua programming language.
LuaJIT試圖保留Lua的精髓--輕量級,高效和可擴展.

LuaJIT功能

所有的函數缺省會被JIT(即時編譯器)編譯到本地機器碼:
* 沒有被使用的函數不會被編譯.
* 可以選擇性打開和關閉即時編譯函數,子函數甚至整個模塊.
* 需要解析的函數(譯註:即沒有被編譯的函數)和編譯過的函數可以自由的混合使用.
預編譯(Ahead-of-time AOT)也是被支持的:
* 一些API函數和命令行選項允許用户全盤控制編譯過程
這個即時編譯器是可擴展的:
* 優化器是一個外部模塊可以附着在編譯器流水線上.
* 一些模塊提供了關於編譯過程的跟蹤和調試信息.
* 所以這些功能可以通過命令行參數來激活.
LuaJIT被設計成全兼容Lua 5.1.她接受同樣的源代碼和/或預編譯字節碼.她支持所有標準語言語義.特別是:
* 支持所有標準類型,操作符和元方法.
* 隱式類型強制轉換(number/string).
* 完全 IEEE-754 語義浮點算法(NaN, +-Inf, +-0, ...).
* 完全支持詞法閉包.正確的尾調用不會消耗棧幀(譯註:棧空間).
* 異常是精確的.回溯追蹤工作的很好.
* 通過CoCo提供協程支持.(譯註:一點兼容性問題)
* 沒有改變Lua 5.1的增量垃圾收集器.
* 沒有改變標準Lua/C API.
* 動態加載的C模塊保持和Lua 5.1一樣鏈接兼容性(同樣的ABI 抽象二進制接口).(譯註:基本不用重新編譯老的Lua模塊,但是仍然偶遇兼容性問題).
* LuaJIT可以像Lua那樣嵌入到一個應用程序裏.
一些次要的不同點和調試有關:
* 調試鈎子只在調試代碼生成使能時調用
* 在JIT編譯過的代碼中不支持尾調用計數.HOOKTAILRET 也不會被調用.注意: 除非你寫Lua調試器,否則這些對你沒有影響.