LuaJIT

LuaJIT

LuaJIT即採用C語言寫的Lua代碼的解釋器。

基本介紹

  • 外文名:LuaJIT
  • 實質:採用C語言寫的Lua的解釋器的代碼
  • 功能:沒有被使用的函式不會被編譯
  • 特點:高效和可擴展.
簡介,功能,

簡介

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

功能

所有的函式預設會被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調試器,否則這些對你沒有影響.

相關詞條

熱門詞條

聯絡我們