aboutsummaryrefslogtreecommitdiff
path: root/doc/changes.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/changes.html')
-rw-r--r--doc/changes.html323
1 files changed, 93 insertions, 230 deletions
diff --git a/doc/changes.html b/doc/changes.html
index 4a4d4fb9..a66a8d95 100644
--- a/doc/changes.html
+++ b/doc/changes.html
@@ -44,6 +44,8 @@ div.major { max-width: 600px; padding: 1em; margin: 1em 0 1em 0; }
44<a href="ext_jit.html">jit.* Library</a> 44<a href="ext_jit.html">jit.* Library</a>
45</li><li> 45</li><li>
46<a href="ext_c_api.html">Lua/C API</a> 46<a href="ext_c_api.html">Lua/C API</a>
47</li><li>
48<a href="ext_profiler.html">Profiler</a>
47</li></ul> 49</li></ul>
48</li><li> 50</li><li>
49<a href="status.html">Status</a> 51<a href="status.html">Status</a>
@@ -72,6 +74,96 @@ to see whether newer versions are available.
72</p> 74</p>
73 75
74<div class="major" style="background: #d0d0ff;"> 76<div class="major" style="background: #d0d0ff;">
77<h2 id="LuaJIT-2.1.0-beta3">LuaJIT 2.1.0-beta3 &mdash; 2017-05-01</h2>
78<ul>
79<li>Rewrite memory block allocator.</li>
80<li>Add various extension from Lua 5.2/5.3.</li>
81<li>Remove old Lua 5.0 compatibility defines.</li>
82<li>Set arg table before evaluating <tt>LUA_INIT</tt> and <tt>-e</tt> chunks.</li>
83<li>Fix FOLD rules for <tt>math.abs()</tt> and FP negation.</li>
84<li>Fix soft-float <tt>math.abs()</tt> and negation.</li>
85<li>Fix formatting of some small denormals at low precision.</li>
86<li>LJ_GC64: Add JIT compiler support.</li>
87<li>x64/LJ_GC64: Add JIT compiler backend.</li>
88<li>x86/x64: Generate BMI2 shifts and rotates, if available.</li>
89<li>Windows/x86: Add full exception interoperability.</li>
90<li>ARM64: Add big-endian support.</li>
91<li>ARM64: Add JIT compiler backend.</li>
92<li>MIPS: Fix <tt>TSETR</tt> barrier.</li>
93<li>MIPS: Support MIPS16 interlinking.</li>
94<li>MIPS soft-float: Fix code generation for <tt>HREF</tt>.</li>
95<li>MIPS64: Add MIPS64 hard-float JIT compiler backend.</li>
96<li>MIPS64: Add MIPS64 hard-float/soft-float support to interpreter.</li>
97<li>FFI: Compile bitfield loads/stores.</li>
98<li>Various fixes common with the 2.0 branch.</li>
99</ul>
100
101<h2 id="LuaJIT-2.1.0-beta2">LuaJIT 2.1.0-beta2 &mdash; 2016-03-03</h2>
102<ul>
103<li>Enable trace stitching.</li>
104<li>Use internal implementation for converting FP numbers to strings.</li>
105<li>Parse Unicode escape <tt>'\u{XX...}'</tt> in string literals.</li>
106<li>Add MIPS soft-float support.</li>
107<li>Switch MIPS port to dual-number mode.</li>
108<li>x86/x64: Add support for AES-NI, AVX and AVX2 to DynASM.</li>
109<li>FFI: Add <tt>ssize_t</tt> declaration.</li>
110<li>FFI: Parse <tt>#line NN</tt> and <tt>#NN</tt>.</li>
111<li>Various minor fixes.</li>
112</ul>
113
114<h2 id="LuaJIT-2.1.0-beta1">LuaJIT 2.1.0-beta1 &mdash; 2015-08-25</h2>
115<p>
116This is a brief summary of the major changes in LuaJIT 2.1 compared to 2.0.
117Please take a look at the commit history for more details.
118</p>
119<ul>
120<li>Changes to the VM core:
121<ul>
122<li>Add low-overhead profiler (<tt>-jp</tt>).</li>
123<li>Add <tt>LJ_GC64</tt> mode: 64 bit GC object references (really: 47 bit). Interpreter-only for now.</li>
124<li>Add <tt>LJ_FR2</tt> mode: Two-slot frame info. Required by <tt>LJ_GC64</tt> mode.</li>
125<li>Add <tt>table.new()</tt> and <tt>table.clear()</tt>.</li>
126<li>Parse binary number literals (<tt>0bxxx</tt>).</li>
127</ul></li>
128<li>Improvements to the JIT compiler:
129<ul>
130<li>Add trace stitching (disabled for now).</li>
131<li>Compile various builtins: <tt>string.char()</tt>, <tt>string.reverse()</tt>, <tt>string.lower()</tt>, <tt>string.upper()</tt>, <tt>string.rep()</tt>, <tt>string.format()</tt>, <tt>table.concat()</tt>, <tt>bit.tohex()</tt>, <tt>getfenv(0)</tt>, <tt>debug.getmetatable()</tt>.</li>
132<li>Compile <tt>string.find()</tt> for fixed string searches (no patterns).</li>
133<li>Compile <tt>BC_TSETM</tt>, e.g. <tt>{1,2,3,f()}</tt>.</li>
134<li>Compile string concatenations (<tt>BC_CAT</tt>).</li>
135<li>Compile <tt>__concat</tt> metamethod.</li>
136<li>Various minor optimizations.</li>
137</ul></li>
138<li>Internal Changes:
139<ul>
140<li>Add support for embedding LuaJIT bytecode for builtins.</li>
141<li>Replace various builtins with embedded bytecode.</li>
142<li>Refactor string buffers and string formatting.</li>
143<li>Remove obsolete non-truncating number to integer conversions.</li>
144</ul></li>
145<li>Ports:
146<ul>
147<li>Add Xbox One port (<tt>LJ_GC64</tt> mode).</li>
148<li>ARM64: Add port of the interpreter (<tt>LJ_GC64</tt> mode).</li>
149<li>x64: Add separate port of the interpreter to <tt>LJ_GC64</tt> mode.</li>
150<li>x86/x64: Drop internal x87 math functions. Use libm functions.</li>
151<li>x86: Remove x87 support from interpreter. SSE2 is mandatory now.</li>
152<li>PPC/e500: Drop support for this architecture.</li>
153</ul></li>
154<li>FFI library:
155<ul>
156<li>FFI: Add 64 bit bitwise operations.</li>
157<li>FFI: Compile VLA/VLS and large cdata allocations with default initialization.</li>
158<li>FFI: Compile conversions from functions to function pointers.</li>
159<li>FFI: Compile lightuserdata to <tt>void *</tt> conversion.</li>
160<li>FFI: Compile <tt>ffi.gc(cdata, nil)</tt>, too.</li>
161<li>FFI: Add <tt>ffi.typeinfo()</tt>.</li>
162</ul></li>
163</ul>
164</div>
165
166<div class="major" style="background: #ffffd0;">
75<h2 id="LuaJIT-2.0.5">LuaJIT 2.0.5 &mdash; 2017-05-01</h2> 167<h2 id="LuaJIT-2.0.5">LuaJIT 2.0.5 &mdash; 2017-05-01</h2>
76<ul> 168<ul>
77<li>Add workaround for MSVC 2015 stdio changes.</li> 169<li>Add workaround for MSVC 2015 stdio changes.</li>
@@ -81,7 +173,7 @@ to see whether newer versions are available.
81<li>Remove internal <tt>__mode = "K"</tt> and replace with safe check.</li> 173<li>Remove internal <tt>__mode = "K"</tt> and replace with safe check.</li>
82<li>Add "proto" field to <tt>jit.util.funcinfo()</tt>.</li> 174<li>Add "proto" field to <tt>jit.util.funcinfo()</tt>.</li>
83<li>Fix GC step size calculation.</li> 175<li>Fix GC step size calculation.</li>
84<li>Initialize <tt>uv->immutable</tt> for upvalues of loaded chunks.</li> 176<li>Initialize <tt>uv-&gt;immutable</tt> for upvalues of loaded chunks.</li>
85<li>Fix for cdata vs. non-cdata arithmetics/comparisons.</li> 177<li>Fix for cdata vs. non-cdata arithmetics/comparisons.</li>
86<li>Drop leftover regs in 'for' iterator assignment, too.</li> 178<li>Drop leftover regs in 'for' iterator assignment, too.</li>
87<li>Fix PHI remarking in SINK pass.</li> 179<li>Fix PHI remarking in SINK pass.</li>
@@ -777,235 +869,6 @@ This matches the behavior of Lua 5.1, but not the specification.</li>
777no point in listing differences over earlier versions.</li> 869no point in listing differences over earlier versions.</li>
778</ul> 870</ul>
779</div> 871</div>
780
781<div class="major" style="background: #ffff80;">
782<h2 id="LuaJIT-1.1.8">LuaJIT 1.1.8 &mdash; 2012-04-16</h2>
783<ul>
784<li>Merged with Lua 5.1.5. Also integrated fixes for all
785<a href="http://www.lua.org/bugs.html#5.1.5"><span class="ext">&raquo;</span>&nbsp;<span class="ext">&raquo;</span>&nbsp;currently known bugs in Lua 5.1.5</a>.</li>
786</ul>
787
788<h2 id="LuaJIT-1.1.7">LuaJIT 1.1.7 &mdash; 2011-05-05</h2>
789<ul>
790<li>Added fixes for the
791<a href="http://www.lua.org/bugs.html#5.1.4"><span class="ext">&raquo;</span>&nbsp;currently known bugs in Lua 5.1.4</a>.</li>
792</ul>
793
794<h2 id="LuaJIT-1.1.6">LuaJIT 1.1.6 &mdash; 2010-03-28</h2>
795<ul>
796<li>Added fixes for the
797<a href="http://www.lua.org/bugs.html#5.1.4"><span class="ext">&raquo;</span>&nbsp;currently known bugs in Lua 5.1.4</a>.</li>
798<li>Removed wrong GC check in <tt>jit_createstate()</tt>.
799Thanks to Tim Mensch.</li>
800<li>Fixed bad assertions while compiling <tt>table.insert()</tt> and
801<tt>table.remove()</tt>.</li>
802</ul>
803
804<h2 id="LuaJIT-1.1.5">LuaJIT 1.1.5 &mdash; 2008-10-25</h2>
805<ul>
806<li>Merged with Lua 5.1.4. Fixes all
807<a href="http://www.lua.org/bugs.html#5.1.3"><span class="ext">&raquo;</span>&nbsp;known bugs in Lua 5.1.3</a>.</li>
808</ul>
809
810<h2 id="LuaJIT-1.1.4">LuaJIT 1.1.4 &mdash; 2008-02-05</h2>
811<ul>
812<li>Merged with Lua 5.1.3. Fixes all
813<a href="http://www.lua.org/bugs.html#5.1.2"><span class="ext">&raquo;</span>&nbsp;known bugs in Lua 5.1.2</a>.</li>
814<li>Fixed possible (but unlikely) stack corruption while compiling
815<tt>k^x</tt> expressions.</li>
816<li>Fixed DynASM template for cmpss instruction.</li>
817</ul>
818
819<h2 id="LuaJIT-1.1.3">LuaJIT 1.1.3 &mdash; 2007-05-24</h2>
820<ul>
821<li>Merged with Lua 5.1.2. Fixes all
822<a href="http://www.lua.org/bugs.html#5.1.1"><span class="ext">&raquo;</span>&nbsp;known bugs in Lua 5.1.1</a>.</li>
823<li>Merged pending Lua 5.1.x fixes: "return -nil" bug, spurious count hook call.</li>
824<li>Remove a (sometimes) wrong assertion in <tt>luaJIT_findpc()</tt>.</li>
825<li>DynASM now allows labels for displacements and <tt>.aword</tt>.</li>
826<li>Fix some compiler warnings for DynASM glue (internal API change).</li>
827<li>Correct naming for SSSE3 (temporarily known as SSE4) in DynASM and x86 disassembler.</li>
828<li>The loadable debug modules now handle redirection to stdout
829(e.g. <tt>-j&nbsp;trace=-</tt>).</li>
830</ul>
831
832<h2 id="LuaJIT-1.1.2">LuaJIT 1.1.2 &mdash; 2006-06-24</h2>
833<ul>
834<li>Fix MSVC inline assembly: use only local variables with
835<tt>lua_number2int()</tt>.</li>
836<li>Fix "attempt to call a thread value" bug on Mac OS X:
837make values of consts used as lightuserdata keys unique
838to avoid joining by the compiler/linker.</li>
839</ul>
840
841<h2 id="LuaJIT-1.1.1">LuaJIT 1.1.1 &mdash; 2006-06-20</h2>
842<ul>
843<li>Merged with Lua 5.1.1. Fixes all
844<a href="http://www.lua.org/bugs.html#5.1"><span class="ext">&raquo;</span>&nbsp;known bugs in Lua 5.1</a>.</li>
845<li>Enforce (dynamic) linker error for EXE/DLL version mismatches.</li>
846<li>Minor changes to DynASM: faster pre-processing, smaller encoding
847for some immediates.</li>
848</ul>
849<p>
850This release is in sync with Coco 1.1.1 (see the
851<a href="http://coco.luajit.org/changes.html"><span class="ext">&raquo;</span>&nbsp;Coco Change History</a>).
852</p>
853
854<h2 id="LuaJIT-1.1.0">LuaJIT 1.1.0 &mdash; 2006-03-13</h2>
855<ul>
856<li>Merged with Lua 5.1 (final).</li>
857
858<li>New JIT call frame setup:
859<ul>
860<li>The C stack is kept 16 byte aligned (faster).
861Mandatory for Mac OS X on Intel, too.</li>
862<li>Faster calling conventions for internal C helper functions.</li>
863<li>Better instruction scheduling for function prologue, OP_CALL and
864OP_RETURN.</li>
865</ul></li>
866
867<li>Miscellaneous optimizations:
868<ul>
869<li>Faster loads of FP constants. Remove narrow-to-wide store-to-load
870forwarding stalls.</li>
871<li>Use (scalar) SSE2 ops (if the CPU supports it) to speed up slot moves
872and FP to integer conversions.</li>
873<li>Optimized the two-argument form of <tt>OP_CONCAT</tt> (<tt>a..b</tt>).</li>
874<li>Inlined <tt>OP_MOD</tt> (<tt>a%b</tt>).
875With better accuracy than the C variant, too.</li>
876<li>Inlined <tt>OP_POW</tt> (<tt>a^b</tt>). Unroll <tt>x^k</tt> or
877use <tt>k^x = 2^(log2(k)*x)</tt> or call <tt>pow()</tt>.</li>
878</ul></li>
879
880<li>Changes in the optimizer:
881<ul>
882<li>Improved hinting for table keys derived from table values
883(<tt>t1[t2[x]]</tt>).</li>
884<li>Lookup hinting now works with arbitrary object types and
885supports index chains, too.</li>
886<li>Generate type hints for arithmetic and comparison operators,
887OP_LEN, OP_CONCAT and OP_FORPREP.</li>
888<li>Remove several hint definitions in favour of a generic COMBINE hint.</li>
889<li>Complete rewrite of <tt>jit.opt_inline</tt> module
890(ex <tt>jit.opt_lib</tt>).</li>
891</ul></li>
892
893<li>Use adaptive deoptimization:
894<ul>
895<li>If runtime verification of a contract fails, the affected
896instruction is recompiled and patched on-the-fly.
897Regular programs will trigger deoptimization only occasionally.</li>
898<li>This avoids generating code for uncommon fallback cases
899most of the time. Generated code is up to 30% smaller compared to
900LuaJIT&nbsp;1.0.3.</li>
901<li>Deoptimization is used for many opcodes and contracts:
902<ul>
903<li>OP_CALL, OP_TAILCALL: type mismatch for callable.</li>
904<li>Inlined calls: closure mismatch, parameter number and type mismatches.</li>
905<li>OP_GETTABLE, OP_SETTABLE: table or key type and range mismatches.</li>
906<li>All arithmetic and comparison operators, OP_LEN, OP_CONCAT,
907OP_FORPREP: operand type and range mismatches.</li>
908</ul></li>
909<li>Complete redesign of the debug and traceback info
910(bytecode &harr; mcode) to support deoptimization.
911Much more flexible and needs only 50% of the space.</li>
912<li>The modules <tt>jit.trace</tt>, <tt>jit.dumphints</tt> and
913<tt>jit.dump</tt> handle deoptimization.</li>
914</ul></li>
915
916<li>Inlined many popular library functions
917(for commonly used arguments only):
918<ul>
919<li>Most <tt>math.*</tt> functions (the 18 most used ones)
920[2x-10x faster].</li>
921<li><tt>string.len</tt>, <tt>string.sub</tt> and <tt>string.char</tt>
922[2x-10x faster].</li>
923<li><tt>table.insert</tt>, <tt>table.remove</tt> and <tt>table.getn</tt>
924[3x-5x faster].</li>
925<li><tt>coroutine.yield</tt> and <tt>coroutine.resume</tt>
926[3x-5x faster].</li>
927<li><tt>pairs</tt>, <tt>ipairs</tt> and the corresponding iterators
928[8x-15x faster].</li>
929</ul></li>
930
931<li>Changes in the core and loadable modules and the stand-alone executable:
932<ul>
933<li>Added <tt>jit.version</tt>, <tt>jit.version_num</tt>
934and <tt>jit.arch</tt>.</li>
935<li>Reorganized some internal API functions (<tt>jit.util.*mcode*</tt>).</li>
936<li>The <tt>-j dump</tt> output now shows JSUB names, too.</li>
937<li>New x86 disassembler module written in pure Lua. No dependency
938on ndisasm anymore. Flexible API, very compact (500 lines)
939and complete (x87, MMX, SSE, SSE2, SSE3, SSSE3, privileged instructions).</li>
940<li><tt>luajit -v</tt> prints the LuaJIT version and copyright
941on a separate line.</li>
942</ul></li>
943
944<li>Added SSE, SSE2, SSE3 and SSSE3 support to DynASM.</li>
945<li>Miscellaneous doc changes. Added a section about
946<a href="install.html#embedding">embedding LuaJIT</a>.</li>
947</ul>
948<p>
949This release is in sync with Coco 1.1.0 (see the
950<a href="http://coco.luajit.org/changes.html"><span class="ext">&raquo;</span>&nbsp;Coco Change History</a>).
951</p>
952</div>
953
954<div class="major" style="background: #ffffd0;">
955<h2 id="LuaJIT-1.0.3">LuaJIT 1.0.3 &mdash; 2005-09-08</h2>
956<ul>
957<li>Even more docs.</li>
958<li>Unified closure checks in <tt>jit.*</tt>.</li>
959<li>Fixed some range checks in <tt>jit.util.*</tt>.</li>
960<li>Fixed __newindex call originating from <tt>jit_settable_str()</tt>.</li>
961<li>Merged with Lua 5.1 alpha (including early bug fixes).</li>
962</ul>
963<p>
964This is the first public release of LuaJIT.
965</p>
966
967<h2 id="LuaJIT-1.0.2">LuaJIT 1.0.2 &mdash; 2005-09-02</h2>
968<ul>
969<li>Add support for flushing the Valgrind translation cache <br>
970(<tt>MYCFLAGS= -DUSE_VALGRIND</tt>).</li>
971<li>Add support for freeing executable mcode memory to the <tt>mmap()</tt>-based
972variant for POSIX systems.</li>
973<li>Reorganized the C&nbsp;function signature handling in
974<tt>jit.opt_lib</tt>.</li>
975<li>Changed to index-based hints for inlining C&nbsp;functions.
976Still no support in the backend for inlining.</li>
977<li>Hardcode <tt>HEAP_CREATE_ENABLE_EXECUTE</tt> value if undefined.</li>
978<li>Misc. changes to the <tt>jit.*</tt> modules.</li>
979<li>Misc. changes to the Makefiles.</li>
980<li>Lots of new docs.</li>
981<li>Complete doc reorg.</li>
982</ul>
983<p>
984Not released because Lua 5.1 alpha came out today.
985</p>
986
987<h2 id="LuaJIT-1.0.1">LuaJIT 1.0.1 &mdash; 2005-08-31</h2>
988<ul>
989<li>Missing GC step in <tt>OP_CONCAT</tt>.</li>
990<li>Fix result handling for C &ndash;> JIT calls.</li>
991<li>Detect CPU feature bits.</li>
992<li>Encode conditional moves (<tt>fucomip</tt>) only when supported.</li>
993<li>Add fallback instructions for FP compares.</li>
994<li>Add support for <tt>LUA_COMPAT_VARARG</tt>. Still disabled by default.</li>
995<li>MSVC needs a specific place for the <tt>CALLBACK</tt> attribute
996(David Burgess).</li>
997<li>Misc. doc updates.</li>
998</ul>
999<p>
1000Interim non-public release.
1001Special thanks to Adam D. Moss for reporting most of the bugs.
1002</p>
1003
1004<h2 id="LuaJIT-1.0.0">LuaJIT 1.0.0 &mdash; 2005-08-29</h2>
1005<p>
1006This is the initial non-public release of LuaJIT.
1007</p>
1008</div>
1009<br class="flush"> 872<br class="flush">
1010</div> 873</div>
1011<div id="foot"> 874<div id="foot">