aboutsummaryrefslogtreecommitdiff
path: root/doc/status.html
diff options
context:
space:
mode:
authorMike Pall <mike>2012-10-14 21:48:04 +0200
committerMike Pall <mike>2012-10-14 21:48:04 +0200
commitd70d77549b397a8b9ebeed199f32e7827214c00b (patch)
tree9337bcd70521cf80f1e39971abe2e0efc32082ef /doc/status.html
parenta0ee70de6de0ade39de17b5678b23bf311d20d9e (diff)
downloadluajit-d70d77549b397a8b9ebeed199f32e7827214c00b.tar.gz
luajit-d70d77549b397a8b9ebeed199f32e7827214c00b.tar.bz2
luajit-d70d77549b397a8b9ebeed199f32e7827214c00b.zip
Documentation cleanup and reorganization.
Diffstat (limited to '')
-rw-r--r--doc/status.html156
1 files changed, 24 insertions, 132 deletions
diff --git a/doc/status.html b/doc/status.html
index eae43966..6bb4df89 100644
--- a/doc/status.html
+++ b/doc/status.html
@@ -23,6 +23,8 @@ ul li { padding-bottom: 0.3em; }
23<ul><li> 23<ul><li>
24<a href="luajit.html">LuaJIT</a> 24<a href="luajit.html">LuaJIT</a>
25<ul><li> 25<ul><li>
26<a href="http://luajit.org/download.html">Download <span class="ext">&raquo;</span></a>
27</li><li>
26<a href="install.html">Installation</a> 28<a href="install.html">Installation</a>
27</li><li> 29</li><li>
28<a href="running.html">Running</a> 30<a href="running.html">Running</a>
@@ -53,8 +55,6 @@ ul li { padding-bottom: 0.3em; }
53</li><li> 55</li><li>
54<a href="http://luajit.org/performance.html">Performance <span class="ext">&raquo;</span></a> 56<a href="http://luajit.org/performance.html">Performance <span class="ext">&raquo;</span></a>
55</li><li> 57</li><li>
56<a href="http://luajit.org/download.html">Download <span class="ext">&raquo;</span></a>
57</li><li>
58<a href="http://wiki.luajit.org/">Wiki <span class="ext">&raquo;</span></a> 58<a href="http://wiki.luajit.org/">Wiki <span class="ext">&raquo;</span></a>
59</li><li> 59</li><li>
60<a href="http://luajit.org/list.html">Mailing List <span class="ext">&raquo;</span></a> 60<a href="http://luajit.org/list.html">Mailing List <span class="ext">&raquo;</span></a>
@@ -62,7 +62,7 @@ ul li { padding-bottom: 0.3em; }
62</div> 62</div>
63<div id="main"> 63<div id="main">
64<p> 64<p>
65The <span style="color: #0000c0;">LuaJIT 1.x</span> series represents 65The <span style="color: #0000c0;">LuaJIT&nbsp;1.x</span> series represents
66the current <span style="color: #0000c0;">stable branch</span>. 66the current <span style="color: #0000c0;">stable branch</span>.
67Only a single bug has been discovered in the last three years. So, if 67Only a single bug has been discovered in the last three years. So, if
68you need a rock-solid VM, you are encouraged to fetch the latest 68you need a rock-solid VM, you are encouraged to fetch the latest
@@ -70,85 +70,34 @@ release of LuaJIT 1.x from the <a href="http://luajit.org/download.html"><span c
70page. 70page.
71</p> 71</p>
72<p> 72<p>
73<span style="color: #c00000;">LuaJIT 2.0</span> is the currently active 73<span style="color: #c00000;">LuaJIT&nbsp;2.0</span> is the currently active
74<span style="color: #c00000;">development branch</span>. 74<span style="color: #c00000;">development branch</span> in beta test.
75It still has <b>Beta Test</b> status, but it's not undergoing substantial 75It has <a href="http://luajit.org/performance.html"><span class="ext">&raquo;</span>&nbsp;much better performance</a> than
76changes anymore. 76LuaJIT&nbsp;1.x and runs on many more platforms and architectures.
77It has <a href="http://luajit.org/performance.html"><span class="ext">&raquo;</span>&nbsp;much better performance</a> than LuaJIT 1.x. 77It's nearing a stable release, so you should definitely
78It's nearly feature-complete, so you should definitely
79start to evaluate it for new projects right now. 78start to evaluate it for new projects right now.
80</p> 79</p>
81 80
82<h2>Current Status</h2> 81<h2>Current Status</h2>
83<p> 82<p>
84This is a list of the things you should know about the LuaJIT 2.0 beta test: 83LuaJIT ought to run all Lua&nbsp;5.1-compatible source code just fine.
84It's considered a serious bug if the VM crashes or produces unexpected
85results &mdash; please report this.
86</p>
87<p>
88Known incompatibilities and issues in LuaJIT&nbsp;2.0:
85</p> 89</p>
86<ul> 90<ul>
87<li> 91<li>
88Obviously there will be some <b>bugs</b> in a VM which has been 92There are some differences in <b>implementation-defined</b> behavior.
89rewritten from the ground up. Please report your findings together with 93These either have a good reason, are arbitrary design choices
90the circumstances needed to reproduce the bug. If possible, reduce the
91problem down to a simple test case.<br>
92There is no formal bug tracker at the moment. The best place for
93discussion is the <a href="http://luajit.org/list.html"><span class="ext">&raquo;</span>&nbsp;LuaJIT mailing list</a>. Of course
94you may also send your bug reports <a href="contact.html">directly to me</a>,
95especially when they contain lengthy debug output or if you require
96confidentiality.
97</li>
98<li>
99The x86 JIT compiler only generates code for CPUs with support for
100<b>SSE2</b> instructions. I.e. you need at least a P4, Core 2/i3/i5/i7,
101Atom or K8/K10 to get the full benefit.<br>
102If you run LuaJIT on older CPUs without SSE2 support, the JIT compiler
103is disabled and the VM falls back to the LuaJIT interpreter. This is faster
104than the Lua interpreter, but not nearly as fast as the JIT compiler of course.
105Run the command line executable without arguments to show the current status
106(<tt>JIT: ON</tt> or <tt>JIT: OFF</tt>).
107</li>
108<li>
109The VM is complete in the sense that it <b>should</b> run all Lua code
110just fine. It's considered a serious bug if the VM crashes or produces
111unexpected results &mdash; please report this. There are only very few
112known incompatibilities with standard Lua:
113<ul>
114<li>
115The Lua <b>debug API</b> is missing a couple of features (return
116hooks for non-Lua functions) and shows slightly different behavior
117(no per-coroutine hooks, no tail call counting).
118</li>
119<li>
120Some of the <b>configuration options</b> of Lua&nbsp;5.1 are not supported:
121<ul>
122<li>The <b>number type</b> cannot be changed (it's always a <tt>double</tt>).</li>
123<li>The stand-alone executable cannot be linked with <b>readline</b>
124to enable line editing. It's planned to add support for loading it
125on-demand.</li>
126</ul>
127</li>
128<li>
129Most other issues you're likely to find (e.g. with the existing test
130suites) are differences in the <b>implementation-defined</b> behavior.
131These either have a good reason (like early tail call resolving which
132may cause differences in error reporting), are arbitrary design choices
133or are due to quirks in the VM. The latter cases may get fixed if a 94or are due to quirks in the VM. The latter cases may get fixed if a
134demonstrable need is shown. 95demonstrable need is shown.
135</li> 96</li>
136</ul>
137</li>
138<li> 97<li>
139The <b>JIT compiler</b> falls back to the 98The Lua <b>debug API</b> is missing a couple of features (return
140interpreter in some cases. All of this works transparently, so unless 99hooks for non-Lua functions) and shows slightly different behavior
141you use <tt>-jv</tt>, you'll probably never notice (the interpreter is 100in LuaJIT (no per-coroutine hooks, no tail call counting).
142<a href="http://luajit.org/performance.html"><span class="ext">&raquo;</span>&nbsp;quite fast</a>, too). Here are the known issues:
143<ul>
144<li>
145Most known issues cause a <b>NYI</b> (not yet implemented) trace abort
146message. E.g. for calls to some internal library
147functions. Reporting these is only mildly useful, except if you have good
148example code that shows the problem. Obviously, reports accompanied with
149a patch to fix the issue are more than welcome. But please check back
150with me, before writing major improvements, to avoid duplication of
151effort.
152</li> 101</li>
153<li> 102<li>
154Some checks are missing in the JIT-compiled code for obscure situations 103Some checks are missing in the JIT-compiled code for obscure situations
@@ -159,10 +108,8 @@ this.
159<li> 108<li>
160Currently some <b>out-of-memory</b> errors from <b>on-trace code</b> are not 109Currently some <b>out-of-memory</b> errors from <b>on-trace code</b> are not
161handled correctly. The error may fall through an on-trace 110handled correctly. The error may fall through an on-trace
162<tt>pcall</tt> (x86) or it may be passed on to the function set with 111<tt>pcall</tt> or it may be passed on to the function set with
163<tt>lua_atpanic</tt> (x64). 112<tt>lua_atpanic</tt> on x64. This issue will be fixed in LuaJIT&nbsp;2.1.
164</li>
165</ul>
166</li> 113</li>
167</ul> 114</ul>
168 115
@@ -170,65 +117,10 @@ handled correctly. The error may fall through an on-trace
170<p> 117<p>
171Please refer to the 118Please refer to the
172<a href="http://www.freelists.org/post/luajit/LuaJIT-Roadmap-20122013"><span class="ext">&raquo;</span>&nbsp;LuaJIT 119<a href="http://www.freelists.org/post/luajit/LuaJIT-Roadmap-20122013"><span class="ext">&raquo;</span>&nbsp;LuaJIT
173Roadmap 2012/2013</a> for the latest release plan. Here's the general 120Roadmap 2012/2013</a> for details.
174project plan for LuaJIT 2.0: 121</p>
122<p>
175</p> 123</p>
176<ul>
177<li>
178The main goal right now is to stabilize LuaJIT 2.0 and get it out of
179beta test. <b>Correctness</b> has priority over completeness. This
180implies the first stable release will certainly NOT compile every
181library function call and will fall back to the interpreter from time
182to time. This is perfectly ok, since it still executes all Lua code,
183just not at the highest possible speed.
184</li>
185<li>
186The next step is to get it to compile more library functions and handle
187more cases where the compiler currently bails out. This doesn't mean it
188will compile every corner case. It's much more important that it
189performs well in a majority of use cases. Every compiler has to make
190these trade-offs &mdash; <b>completeness</b> just cannot be the
191overriding goal for a low-footprint, low-overhead JIT compiler.
192</li>
193<li>
194More <b>optimizations</b> will be added in parallel to the last step on
195an as-needed basis. Sinking of stores
196to aggregates and sinking of allocations are high on the list.
197More complex optimizations with less pay-off, such as value-range-propagation
198(VRP) will have to wait.
199</li>
200<li>
201LuaJIT 2.0 has been designed with <b>portability</b> in mind.
202Nonetheless, it compiles to native code and needs to be adapted to each
203architecture. The two major work items are porting the the fast interpreter,
204which is written in assembler, and porting the compiler backend.
205Most other portability issues like endianess or 32 vs. 64&nbsp;bit CPUs
206have already been taken care of.<br>
207Several ports are already available, thanks to the
208<a href="http://luajit.org/sponsors.html"><span class="ext">&raquo;</span>&nbsp;LuaJIT sponsorship program</a>.
209More ports will follow in the future &mdash; companies which are
210interested in sponsoring a port to a particular architecture, please
211use the given contact address.
212</li>
213<li>
214<b>Documentation</b> about the <b>internals</b> of LuaJIT is still sorely
215missing. Although the source code is included and is IMHO well
216commented, many basic design decisions are in need of an explanation.
217The rather un-traditional compiler architecture and the many highly
218optimized data structures are a barrier for outside participation in
219the development. Alas, as I've repeatedly stated, I'm better at
220writing code than papers and I'm not in need of any academic merits.
221Someday I will find the time for it. :-)
222</li>
223<li>
224Producing good code for unbiased branches is a key problem for trace
225compilers. This is the main cause for "trace explosion".
226<b>Hyperblock scheduling</b> promises to solve this nicely at the
227price of a major redesign of the compiler. This would also pave the
228way for emitting predicated instructions, which is a prerequisite
229for efficient <b>vectorization</b>.
230</li>
231</ul>
232<br class="flush"> 124<br class="flush">
233</div> 125</div>
234<div id="foot"> 126<div id="foot">