-This is a list of changes between the released versions of LuaJIT. -The current version is LuaJIT 1.1.7. -
--Please check the -» Online Change History -to see whether newer versions are available. -
- -LuaJIT 1.1.7 — 2011-05-05
--
-
- Added fixes for the -» currently known bugs in Lua 5.1.4. -
LuaJIT 1.1.6 — 2010-03-28
--
-
- Added fixes for the -» currently known bugs in Lua 5.1.4. -
- Removed wrong GC check in jit_createstate(). -Thanks to Tim Mensch. -
- Fixed bad assertions while compiling table.insert() and -table.remove(). -
LuaJIT 1.1.5 — 2008-10-25
--
-
- Merged with Lua 5.1.4. Fixes all -» known bugs in Lua 5.1.3. -
LuaJIT 1.1.4 — 2008-02-05
--
-
- Merged with Lua 5.1.3. Fixes all -» known bugs in Lua 5.1.2. -
- Fixed possible (but unlikely) stack corruption while compiling -k^x expressions. -
- Fixed DynASM template for cmpss instruction. -
LuaJIT 1.1.3 — 2007-05-24
--
-
- Merged with Lua 5.1.2. Fixes all -» known bugs in Lua 5.1.1. -
- Merged pending Lua 5.1.x fixes: "return -nil" bug, spurious count hook call. -
- Remove a (sometimes) wrong assertion in luaJIT_findpc(). -
- DynASM now allows labels for displacements and .aword. -
- Fix some compiler warnings for DynASM glue (internal API change). -
- Correct naming for SSSE3 (temporarily known as SSE4) in DynASM and x86 disassembler. -
- The loadable debug modules now handle redirection to stdout -(e.g. -j trace=-). -
LuaJIT 1.1.2 — 2006-06-24
--
-
- Fix MSVC inline assembly: use only local variables with -lua_number2int(). -
- Fix "attempt to call a thread value" bug on Mac OS X: -make values of consts used as lightuserdata keys unique -to avoid joining by the compiler/linker. -
LuaJIT 1.1.1 — 2006-06-20
--
-
- Merged with Lua 5.1.1. Fixes all -» known bugs in Lua 5.1. -
- Enforce (dynamic) linker error for EXE/DLL version mismatches. -
- Minor changes to DynASM: faster preprocessing, smaller encoding -for some immediates. -
-This release is in sync with Coco 1.1.1 (see the -Coco Change History). -
- -LuaJIT 1.1.0 — 2006-03-13
--
-
- Merged with Lua 5.1 (final). - -
- New JIT call frame setup:
-
-
-
- The C stack is kept 16 byte aligned (faster). -Mandatory for Mac OS X on Intel, too. -
- Faster calling conventions for internal C helper functions. -
- Better instruction scheduling for function prologue, OP_CALL and -OP_RETURN. -
-
- - Miscellaneous optimizations:
-
-
-
- Faster loads of FP constants. Remove narrow-to-wide store-to-load -forwarding stalls. -
- Use (scalar) SSE2 ops (if the CPU supports it) to speed up slot moves -and FP to integer conversions. -
- Optimized the two-argument form of OP_CONCAT (a..b). -
- Inlined OP_MOD (a%b). -With better accuracy than the C variant, too. -
- Inlined OP_POW (a^b). Unroll x^k or -use k^x = 2^(log2(k)*x) or call pow(). -
-
- - Changes in the optimizer:
-
-
-
- Improved hinting for table keys derived from table values -(t1[t2[x]]). -
- Lookup hinting now works with arbitrary object types and -supports index chains, too. -
- Generate type hints for arithmetic and comparison operators, -OP_LEN, OP_CONCAT and OP_FORPREP. -
- Remove several hint definitions in favour of a generic COMBINE hint. -
- Complete rewrite of jit.opt_inline module -(ex jit.opt_lib). -
-
- - Use adaptive deoptimization:
-
-
-
- If runtime verification of a contract fails, the affected -instruction is recompiled and patched on-the-fly. -Regular programs will trigger deoptimization only occasionally. -
- This avoids generating code for uncommon fallback cases -most of the time. Generated code is up to 30% smaller compared to -LuaJIT 1.0.3. -
- Deoptimization is used for many opcodes and contracts:
-
-
-
- OP_CALL, OP_TAILCALL: type mismatch for callable. -
- Inlined calls: closure mismatch, parameter number and type mismatches. -
- OP_GETTABLE, OP_SETTABLE: table or key type and range mismatches. -
- All arithmetic and comparison operators, OP_LEN, OP_CONCAT, -OP_FORPREP: operand type and range mismatches. -
- - Complete redesign of the debug and traceback info -(bytecode ↔ mcode) to support deoptimization. -Much more flexible and needs only 50% of the space. -
- The modules jit.trace, jit.dumphints and -jit.dump handle deoptimization. -
-
- - Inlined many popular library functions
-(for commonly used arguments only):
-
-
-
- Most math.* functions (the 18 most used ones) -[2x-10x faster]. -
- string.len, string.sub and string.char -[2x-10x faster]. -
- table.insert, table.remove and table.getn -[3x-5x faster]. -
- coroutine.yield and coroutine.resume -[3x-5x faster]. -
- pairs, ipairs and the corresponding iterators -[8x-15x faster]. -
-
- - Changes in the core and loadable modules and the stand-alone executable:
-
-
-
- Added jit.version, jit.version_num -and jit.arch. -
- Reorganized some internal API functions (jit.util.*mcode*). -
- The -j dump output now shows JSUB names, too. -
- New x86 disassembler module written in pure Lua. No dependency -on ndisasm anymore. Flexible API, very compact (500 lines) -and complete (x87, MMX, SSE, SSE2, SSE3, SSSE3, privileged instructions). -
- luajit -v prints the LuaJIT version and copyright -on a separate line. -
-
- - Added SSE, SSE2, SSE3 and SSSE3 support to DynASM. -
- Miscellaneous doc changes. Added a section about -embedding LuaJIT. -
-This release is in sync with Coco 1.1.0 (see the -Coco Change History). -
- -LuaJIT 1.0.3 — 2005-09-08
--
-
- Even more docs. -
- Unified closure checks in jit.*. -
- Fixed some range checks in jit.util.*. -
- Fixed __newindex call originating from jit_settable_str(). -
- Merged with Lua 5.1 alpha (including early bugfixes). -
-This is the first public release of LuaJIT. -
- -LuaJIT 1.0.2 — 2005-09-02
--
-
- Add support for flushing the Valgrind translation cache
-(MYCFLAGS= -DUSE_VALGRIND).
- - Add support for freeing executable mcode memory to the mmap()-based -variant for POSIX systems. -
- Reorganized the C function signature handling in -jit.opt_lib. -
- Changed to index-based hints for inlining C functions. -Still no support in the backend for inlining. -
- Hardcode HEAP_CREATE_ENABLE_EXECUTE value if undefined. -
- Misc. changes to the jit.* modules. -
- Misc. changes to the Makefiles. -
- Lots of new docs. -
- Complete doc reorg. -
-Not released because Lua 5.1 alpha came out today. -
- -LuaJIT 1.0.1 — 2005-08-31
--
-
- Missing GC step in OP_CONCAT. -
- Fix result handling for C –> JIT calls. -
- Detect CPU feature bits. -
- Encode conditional moves (fucomip) only when supported. -
- Add fallback instructions for FP compares. -
- Add support for LUA_COMPAT_VARARG. Still disabled by default. -
- MSVC needs a specific place for the CALLBACK attribute -(David Burgess). -
- Misc. doc updates. -
-Interim non-public release. -Special thanks to Adam D. Moss for reporting most of the bugs. -
- -LuaJIT 1.0.0 — 2005-08-29
--This is the initial non-public release of LuaJIT. -
--