diff options
Diffstat (limited to 'doc/changes.html')
-rw-r--r-- | doc/changes.html | 285 |
1 files changed, 56 insertions, 229 deletions
diff --git a/doc/changes.html b/doc/changes.html index d7b83ce6..125b58b4 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,60 @@ 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-beta1">LuaJIT 2.1.0-beta1 — 2015-08-25</h2> | ||
78 | <p> | ||
79 | This is a brief summary of the major changes in LuaJIT 2.1 compared to 2.0. | ||
80 | Please take a look at the commit history for more details. | ||
81 | </p> | ||
82 | <ul> | ||
83 | <li>Changes to the VM core: | ||
84 | <ul> | ||
85 | <li>Add low-overhead profiler (<tt>-jp</tt>).</li> | ||
86 | <li>Add <tt>LJ_GC64</tt> mode: 64 bit GC object references (really: 47 bit). Interpreter-only for now.</li> | ||
87 | <li>Add <tt>LJ_FR2</tt> mode: Two-slot frame info. Required by <tt>LJ_GC64</tt> mode.</li> | ||
88 | <li>Add <tt>table.new()</tt> and <tt>table.clear()</tt>.</li> | ||
89 | <li>Parse Unicode escape <tt>'\u{XX...}'</tt> in string literals.</li> | ||
90 | <li>Parse binary number literals (<tt>0bxxx</tt>).</li> | ||
91 | </ul></li> | ||
92 | <li>Improvements to the JIT compiler: | ||
93 | <ul> | ||
94 | <li>Add trace stitching.</li> | ||
95 | <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> | ||
96 | <li>Compile <tt>string.find()</tt> for fixed string searches (no patterns).</li> | ||
97 | <li>Compile <tt>BC_TSETM</tt>, e.g. <tt>{1,2,3,f()}</tt>.</li> | ||
98 | <li>Compile string concatenations (<tt>BC_CAT</tt>).</li> | ||
99 | <li>Compile <tt>__concat</tt> metamethod.</li> | ||
100 | <li>Various minor optimizations.</li> | ||
101 | </ul></li> | ||
102 | <li>Internal Changes: | ||
103 | <ul> | ||
104 | <li>Add support for embedding LuaJIT bytecode for builtins.</li> | ||
105 | <li>Replace various builtins with embedded bytecode.</li> | ||
106 | <li>Refactor string buffers and string formatting.</li> | ||
107 | <li>Remove obsolete non-truncating number to integer conversions.</li> | ||
108 | </ul></li> | ||
109 | <li>Ports: | ||
110 | <ul> | ||
111 | <li>Add Xbox One port (<tt>LJ_GC64</tt> mode).</li> | ||
112 | <li>ARM64: Add port of the interpreter (<tt>LJ_GC64</tt> mode).</li> | ||
113 | <li>x64: Add separate port of the interpreter to <tt>LJ_GC64</tt> mode.</li> | ||
114 | <li>x86/x64: Drop internal x87 math functions. Use libm functions.</li> | ||
115 | <li>x86: Remove x87 support from interpreter. SSE2 is mandatory now.</li> | ||
116 | <li>PPC/e500: Drop support for this architecture.</li> | ||
117 | </ul></li> | ||
118 | <li>FFI library: | ||
119 | <ul> | ||
120 | <li>FFI: Add 64 bit bitwise operations.</li> | ||
121 | <li>FFI: Compile VLA/VLS and large cdata allocations with default initialization.</li> | ||
122 | <li>FFI: Compile conversions from functions to function pointers.</li> | ||
123 | <li>FFI: Compile lightuserdata to <tt>void *</tt> conversion.</li> | ||
124 | <li>FFI: Compile <tt>ffi.gc(cdata, nil)</tt>, too.</li> | ||
125 | <li>FFI: Add <tt>ffi.typeinfo()</tt>.</li> | ||
126 | </ul></li> | ||
127 | </ul> | ||
128 | </div> | ||
129 | |||
130 | <div class="major" style="background: #ffffd0;"> | ||
75 | <h2 id="LuaJIT-2.0.4">LuaJIT 2.0.4 — 2015-05-14</h2> | 131 | <h2 id="LuaJIT-2.0.4">LuaJIT 2.0.4 — 2015-05-14</h2> |
76 | <ul> | 132 | <ul> |
77 | <li>Fix stack check in narrowing optimization.</li> | 133 | <li>Fix stack check in narrowing optimization.</li> |
@@ -735,235 +791,6 @@ This matches the behavior of Lua 5.1, but not the specification.</li> | |||
735 | no point in listing differences over earlier versions.</li> | 791 | no point in listing differences over earlier versions.</li> |
736 | </ul> | 792 | </ul> |
737 | </div> | 793 | </div> |
738 | |||
739 | <div class="major" style="background: #ffff80;"> | ||
740 | <h2 id="LuaJIT-1.1.8">LuaJIT 1.1.8 — 2012-04-16</h2> | ||
741 | <ul> | ||
742 | <li>Merged with Lua 5.1.5. Also integrated fixes for all | ||
743 | <a href="http://www.lua.org/bugs.html#5.1.5"><span class="ext">»</span> <span class="ext">»</span> currently known bugs in Lua 5.1.5</a>.</li> | ||
744 | </ul> | ||
745 | |||
746 | <h2 id="LuaJIT-1.1.7">LuaJIT 1.1.7 — 2011-05-05</h2> | ||
747 | <ul> | ||
748 | <li>Added fixes for the | ||
749 | <a href="http://www.lua.org/bugs.html#5.1.4"><span class="ext">»</span> currently known bugs in Lua 5.1.4</a>.</li> | ||
750 | </ul> | ||
751 | |||
752 | <h2 id="LuaJIT-1.1.6">LuaJIT 1.1.6 — 2010-03-28</h2> | ||
753 | <ul> | ||
754 | <li>Added fixes for the | ||
755 | <a href="http://www.lua.org/bugs.html#5.1.4"><span class="ext">»</span> currently known bugs in Lua 5.1.4</a>.</li> | ||
756 | <li>Removed wrong GC check in <tt>jit_createstate()</tt>. | ||
757 | Thanks to Tim Mensch.</li> | ||
758 | <li>Fixed bad assertions while compiling <tt>table.insert()</tt> and | ||
759 | <tt>table.remove()</tt>.</li> | ||
760 | </ul> | ||
761 | |||
762 | <h2 id="LuaJIT-1.1.5">LuaJIT 1.1.5 — 2008-10-25</h2> | ||
763 | <ul> | ||
764 | <li>Merged with Lua 5.1.4. Fixes all | ||
765 | <a href="http://www.lua.org/bugs.html#5.1.3"><span class="ext">»</span> known bugs in Lua 5.1.3</a>.</li> | ||
766 | </ul> | ||
767 | |||
768 | <h2 id="LuaJIT-1.1.4">LuaJIT 1.1.4 — 2008-02-05</h2> | ||
769 | <ul> | ||
770 | <li>Merged with Lua 5.1.3. Fixes all | ||
771 | <a href="http://www.lua.org/bugs.html#5.1.2"><span class="ext">»</span> known bugs in Lua 5.1.2</a>.</li> | ||
772 | <li>Fixed possible (but unlikely) stack corruption while compiling | ||
773 | <tt>k^x</tt> expressions.</li> | ||
774 | <li>Fixed DynASM template for cmpss instruction.</li> | ||
775 | </ul> | ||
776 | |||
777 | <h2 id="LuaJIT-1.1.3">LuaJIT 1.1.3 — 2007-05-24</h2> | ||
778 | <ul> | ||
779 | <li>Merged with Lua 5.1.2. Fixes all | ||
780 | <a href="http://www.lua.org/bugs.html#5.1.1"><span class="ext">»</span> known bugs in Lua 5.1.1</a>.</li> | ||
781 | <li>Merged pending Lua 5.1.x fixes: "return -nil" bug, spurious count hook call.</li> | ||
782 | <li>Remove a (sometimes) wrong assertion in <tt>luaJIT_findpc()</tt>.</li> | ||
783 | <li>DynASM now allows labels for displacements and <tt>.aword</tt>.</li> | ||
784 | <li>Fix some compiler warnings for DynASM glue (internal API change).</li> | ||
785 | <li>Correct naming for SSSE3 (temporarily known as SSE4) in DynASM and x86 disassembler.</li> | ||
786 | <li>The loadable debug modules now handle redirection to stdout | ||
787 | (e.g. <tt>-j trace=-</tt>).</li> | ||
788 | </ul> | ||
789 | |||
790 | <h2 id="LuaJIT-1.1.2">LuaJIT 1.1.2 — 2006-06-24</h2> | ||
791 | <ul> | ||
792 | <li>Fix MSVC inline assembly: use only local variables with | ||
793 | <tt>lua_number2int()</tt>.</li> | ||
794 | <li>Fix "attempt to call a thread value" bug on Mac OS X: | ||
795 | make values of consts used as lightuserdata keys unique | ||
796 | to avoid joining by the compiler/linker.</li> | ||
797 | </ul> | ||
798 | |||
799 | <h2 id="LuaJIT-1.1.1">LuaJIT 1.1.1 — 2006-06-20</h2> | ||
800 | <ul> | ||
801 | <li>Merged with Lua 5.1.1. Fixes all | ||
802 | <a href="http://www.lua.org/bugs.html#5.1"><span class="ext">»</span> known bugs in Lua 5.1</a>.</li> | ||
803 | <li>Enforce (dynamic) linker error for EXE/DLL version mismatches.</li> | ||
804 | <li>Minor changes to DynASM: faster pre-processing, smaller encoding | ||
805 | for some immediates.</li> | ||
806 | </ul> | ||
807 | <p> | ||
808 | This release is in sync with Coco 1.1.1 (see the | ||
809 | <a href="http://coco.luajit.org/changes.html"><span class="ext">»</span> Coco Change History</a>). | ||
810 | </p> | ||
811 | |||
812 | <h2 id="LuaJIT-1.1.0">LuaJIT 1.1.0 — 2006-03-13</h2> | ||
813 | <ul> | ||
814 | <li>Merged with Lua 5.1 (final).</li> | ||
815 | |||
816 | <li>New JIT call frame setup: | ||
817 | <ul> | ||
818 | <li>The C stack is kept 16 byte aligned (faster). | ||
819 | Mandatory for Mac OS X on Intel, too.</li> | ||
820 | <li>Faster calling conventions for internal C helper functions.</li> | ||
821 | <li>Better instruction scheduling for function prologue, OP_CALL and | ||
822 | OP_RETURN.</li> | ||
823 | </ul></li> | ||
824 | |||
825 | <li>Miscellaneous optimizations: | ||
826 | <ul> | ||
827 | <li>Faster loads of FP constants. Remove narrow-to-wide store-to-load | ||
828 | forwarding stalls.</li> | ||
829 | <li>Use (scalar) SSE2 ops (if the CPU supports it) to speed up slot moves | ||
830 | and FP to integer conversions.</li> | ||
831 | <li>Optimized the two-argument form of <tt>OP_CONCAT</tt> (<tt>a..b</tt>).</li> | ||
832 | <li>Inlined <tt>OP_MOD</tt> (<tt>a%b</tt>). | ||
833 | With better accuracy than the C variant, too.</li> | ||
834 | <li>Inlined <tt>OP_POW</tt> (<tt>a^b</tt>). Unroll <tt>x^k</tt> or | ||
835 | use <tt>k^x = 2^(log2(k)*x)</tt> or call <tt>pow()</tt>.</li> | ||
836 | </ul></li> | ||
837 | |||
838 | <li>Changes in the optimizer: | ||
839 | <ul> | ||
840 | <li>Improved hinting for table keys derived from table values | ||
841 | (<tt>t1[t2[x]]</tt>).</li> | ||
842 | <li>Lookup hinting now works with arbitrary object types and | ||
843 | supports index chains, too.</li> | ||
844 | <li>Generate type hints for arithmetic and comparison operators, | ||
845 | OP_LEN, OP_CONCAT and OP_FORPREP.</li> | ||
846 | <li>Remove several hint definitions in favour of a generic COMBINE hint.</li> | ||
847 | <li>Complete rewrite of <tt>jit.opt_inline</tt> module | ||
848 | (ex <tt>jit.opt_lib</tt>).</li> | ||
849 | </ul></li> | ||
850 | |||
851 | <li>Use adaptive deoptimization: | ||
852 | <ul> | ||
853 | <li>If runtime verification of a contract fails, the affected | ||
854 | instruction is recompiled and patched on-the-fly. | ||
855 | Regular programs will trigger deoptimization only occasionally.</li> | ||
856 | <li>This avoids generating code for uncommon fallback cases | ||
857 | most of the time. Generated code is up to 30% smaller compared to | ||
858 | LuaJIT 1.0.3.</li> | ||
859 | <li>Deoptimization is used for many opcodes and contracts: | ||
860 | <ul> | ||
861 | <li>OP_CALL, OP_TAILCALL: type mismatch for callable.</li> | ||
862 | <li>Inlined calls: closure mismatch, parameter number and type mismatches.</li> | ||
863 | <li>OP_GETTABLE, OP_SETTABLE: table or key type and range mismatches.</li> | ||
864 | <li>All arithmetic and comparison operators, OP_LEN, OP_CONCAT, | ||
865 | OP_FORPREP: operand type and range mismatches.</li> | ||
866 | </ul></li> | ||
867 | <li>Complete redesign of the debug and traceback info | ||
868 | (bytecode ↔ mcode) to support deoptimization. | ||
869 | Much more flexible and needs only 50% of the space.</li> | ||
870 | <li>The modules <tt>jit.trace</tt>, <tt>jit.dumphints</tt> and | ||
871 | <tt>jit.dump</tt> handle deoptimization.</li> | ||
872 | </ul></li> | ||
873 | |||
874 | <li>Inlined many popular library functions | ||
875 | (for commonly used arguments only): | ||
876 | <ul> | ||
877 | <li>Most <tt>math.*</tt> functions (the 18 most used ones) | ||
878 | [2x-10x faster].</li> | ||
879 | <li><tt>string.len</tt>, <tt>string.sub</tt> and <tt>string.char</tt> | ||
880 | [2x-10x faster].</li> | ||
881 | <li><tt>table.insert</tt>, <tt>table.remove</tt> and <tt>table.getn</tt> | ||
882 | [3x-5x faster].</li> | ||
883 | <li><tt>coroutine.yield</tt> and <tt>coroutine.resume</tt> | ||
884 | [3x-5x faster].</li> | ||
885 | <li><tt>pairs</tt>, <tt>ipairs</tt> and the corresponding iterators | ||
886 | [8x-15x faster].</li> | ||
887 | </ul></li> | ||
888 | |||
889 | <li>Changes in the core and loadable modules and the stand-alone executable: | ||
890 | <ul> | ||
891 | <li>Added <tt>jit.version</tt>, <tt>jit.version_num</tt> | ||
892 | and <tt>jit.arch</tt>.</li> | ||
893 | <li>Reorganized some internal API functions (<tt>jit.util.*mcode*</tt>).</li> | ||
894 | <li>The <tt>-j dump</tt> output now shows JSUB names, too.</li> | ||
895 | <li>New x86 disassembler module written in pure Lua. No dependency | ||
896 | on ndisasm anymore. Flexible API, very compact (500 lines) | ||
897 | and complete (x87, MMX, SSE, SSE2, SSE3, SSSE3, privileged instructions).</li> | ||
898 | <li><tt>luajit -v</tt> prints the LuaJIT version and copyright | ||
899 | on a separate line.</li> | ||
900 | </ul></li> | ||
901 | |||
902 | <li>Added SSE, SSE2, SSE3 and SSSE3 support to DynASM.</li> | ||
903 | <li>Miscellaneous doc changes. Added a section about | ||
904 | <a href="install.html#embedding">embedding LuaJIT</a>.</li> | ||
905 | </ul> | ||
906 | <p> | ||
907 | This release is in sync with Coco 1.1.0 (see the | ||
908 | <a href="http://coco.luajit.org/changes.html"><span class="ext">»</span> Coco Change History</a>). | ||
909 | </p> | ||
910 | </div> | ||
911 | |||
912 | <div class="major" style="background: #ffffd0;"> | ||
913 | <h2 id="LuaJIT-1.0.3">LuaJIT 1.0.3 — 2005-09-08</h2> | ||
914 | <ul> | ||
915 | <li>Even more docs.</li> | ||
916 | <li>Unified closure checks in <tt>jit.*</tt>.</li> | ||
917 | <li>Fixed some range checks in <tt>jit.util.*</tt>.</li> | ||
918 | <li>Fixed __newindex call originating from <tt>jit_settable_str()</tt>.</li> | ||
919 | <li>Merged with Lua 5.1 alpha (including early bug fixes).</li> | ||
920 | </ul> | ||
921 | <p> | ||
922 | This is the first public release of LuaJIT. | ||
923 | </p> | ||
924 | |||
925 | <h2 id="LuaJIT-1.0.2">LuaJIT 1.0.2 — 2005-09-02</h2> | ||
926 | <ul> | ||
927 | <li>Add support for flushing the Valgrind translation cache <br> | ||
928 | (<tt>MYCFLAGS= -DUSE_VALGRIND</tt>).</li> | ||
929 | <li>Add support for freeing executable mcode memory to the <tt>mmap()</tt>-based | ||
930 | variant for POSIX systems.</li> | ||
931 | <li>Reorganized the C function signature handling in | ||
932 | <tt>jit.opt_lib</tt>.</li> | ||
933 | <li>Changed to index-based hints for inlining C functions. | ||
934 | Still no support in the backend for inlining.</li> | ||
935 | <li>Hardcode <tt>HEAP_CREATE_ENABLE_EXECUTE</tt> value if undefined.</li> | ||
936 | <li>Misc. changes to the <tt>jit.*</tt> modules.</li> | ||
937 | <li>Misc. changes to the Makefiles.</li> | ||
938 | <li>Lots of new docs.</li> | ||
939 | <li>Complete doc reorg.</li> | ||
940 | </ul> | ||
941 | <p> | ||
942 | Not released because Lua 5.1 alpha came out today. | ||
943 | </p> | ||
944 | |||
945 | <h2 id="LuaJIT-1.0.1">LuaJIT 1.0.1 — 2005-08-31</h2> | ||
946 | <ul> | ||
947 | <li>Missing GC step in <tt>OP_CONCAT</tt>.</li> | ||
948 | <li>Fix result handling for C –> JIT calls.</li> | ||
949 | <li>Detect CPU feature bits.</li> | ||
950 | <li>Encode conditional moves (<tt>fucomip</tt>) only when supported.</li> | ||
951 | <li>Add fallback instructions for FP compares.</li> | ||
952 | <li>Add support for <tt>LUA_COMPAT_VARARG</tt>. Still disabled by default.</li> | ||
953 | <li>MSVC needs a specific place for the <tt>CALLBACK</tt> attribute | ||
954 | (David Burgess).</li> | ||
955 | <li>Misc. doc updates.</li> | ||
956 | </ul> | ||
957 | <p> | ||
958 | Interim non-public release. | ||
959 | Special thanks to Adam D. Moss for reporting most of the bugs. | ||
960 | </p> | ||
961 | |||
962 | <h2 id="LuaJIT-1.0.0">LuaJIT 1.0.0 — 2005-08-29</h2> | ||
963 | <p> | ||
964 | This is the initial non-public release of LuaJIT. | ||
965 | </p> | ||
966 | </div> | ||
967 | <br class="flush"> | 794 | <br class="flush"> |
968 | </div> | 795 | </div> |
969 | <div id="foot"> | 796 | <div id="foot"> |