aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorMike Pall <mike>2010-10-05 01:36:54 +0200
committerMike Pall <mike>2010-10-05 01:36:54 +0200
commitddae8878786a310f2e6cbe2a1d602a17ea28bb11 (patch)
tree3ffe5c7790acbacdcdae748984960418b358fcc1 /doc
parente396bef7d8a346c6ea54191d658209ee90047276 (diff)
downloadluajit-ddae8878786a310f2e6cbe2a1d602a17ea28bb11.tar.gz
luajit-ddae8878786a310f2e6cbe2a1d602a17ea28bb11.tar.bz2
luajit-ddae8878786a310f2e6cbe2a1d602a17ea28bb11.zip
Update docs for PPC port. Clarify and extend install instructions.
Diffstat (limited to 'doc')
-rw-r--r--doc/faq.html6
-rw-r--r--doc/install.html155
-rw-r--r--doc/luajit.html15
-rw-r--r--doc/running.html2
-rw-r--r--doc/status.html64
5 files changed, 177 insertions, 65 deletions
diff --git a/doc/faq.html b/doc/faq.html
index 90f37cef..9404f788 100644
--- a/doc/faq.html
+++ b/doc/faq.html
@@ -126,7 +126,7 @@ running inside a C function under the Lua interpreter.</dd>
126<dt>Q: Why doesn't my favorite power-patch for Lua apply against LuaJIT?</dt> 126<dt>Q: Why doesn't my favorite power-patch for Lua apply against LuaJIT?</dt>
127<dd>Because it's a completely redesigned VM and has very little code 127<dd>Because it's a completely redesigned VM and has very little code
128in common with Lua anymore. Also, if the patch introduces changes to 128in common with Lua anymore. Also, if the patch introduces changes to
129the Lua semantics, this would need to be reflected everywhere in the 129the Lua semantics, these would need to be reflected everywhere in the
130VM, from the interpreter up to all stages of the compiler.<br> Please 130VM, from the interpreter up to all stages of the compiler.<br> Please
131use only standard Lua language constructs. For many common needs you 131use only standard Lua language constructs. For many common needs you
132can use source transformations or use wrapper or proxy functions. 132can use source transformations or use wrapper or proxy functions.
@@ -139,8 +139,8 @@ The compiler will happily optimize away such indirections.</dd>
139machine code. This means the code generator must be ported to each 139machine code. This means the code generator must be ported to each
140architecture. And the fast interpreter is written in assembler and 140architecture. And the fast interpreter is written in assembler and
141must be ported, too. This is quite an undertaking.<br> Currently only 141must be ported, too. This is quite an undertaking.<br> Currently only
142x86 and x64 CPUs are supported. Other architectures will follow based 142x86, x64 and PPC/e500v2 CPUs are supported. Other architectures will follow
143on sufficient user demand and/or sponsoring.</dd> 143based on sufficient user demand and/or sponsoring.</dd>
144</dl> 144</dl>
145 145
146<dl> 146<dl>
diff --git a/doc/install.html b/doc/install.html
index 45925e7a..b0c806db 100644
--- a/doc/install.html
+++ b/doc/install.html
@@ -11,16 +11,20 @@
11<style type="text/css"> 11<style type="text/css">
12table.compat { 12table.compat {
13 line-height: 1.2; 13 line-height: 1.2;
14 width: 40em; 14 width: 47em;
15} 15}
16tr.compathead td { 16tr.compathead td {
17 font-weight: bold; 17 font-weight: bold;
18} 18}
19td {
20 border-left: 1px solid #bfcfff;
21 border-right: 1px solid #bfcfff;
22}
19td.compatos { 23td.compatos {
20 width: 40%; 24 width: 25%;
21} 25}
22td.compatcc { 26td.compatcc {
23 width: 30%; 27 width: 25%;
24 vertical-align: top; 28 vertical-align: top;
25} 29}
26</style> 30</style>
@@ -68,35 +72,40 @@ For the impatient (on POSIX systems):
68make &amp;&amp; sudo make install 72make &amp;&amp; sudo make install
69</pre> 73</pre>
70<p> 74<p>
71LuaJIT currently builds out-of-the box on most x86 or x64 systems. 75LuaJIT currently builds out-of-the box on most systems.
72Here's the compatibility matrix for the supported combinations of 76Here's the compatibility matrix for the supported combinations of
73operating system, CPU and compilers: 77operating system, CPU and compilers:
74</p> 78</p>
75<table class="compat"> 79<table class="compat">
76<tr class="compathead"> 80<tr class="compathead">
77<td class="compatos">Operating system</td> 81<td class="compatos">OS / CPU</td>
78<td class="compatcc">x86 (32 bit)</td> 82<td class="compatcc">x86 (32 bit)</td>
79<td class="compatcc">x64 (64 bit)</td> 83<td class="compatcc">x64 (64 bit)</td>
84<td class="compatcc">PPC/e500v2</td>
80</tr> 85</tr>
81<tr class="odd separate"> 86<tr class="odd separate">
82<td class="compatos">Linux</td> 87<td class="compatos"><a href="#posix">Linux</a></td>
83<td class="compatcc">GCC 4.x<br>GCC 3.4</td> 88<td class="compatcc">GCC 4.x<br>GCC 3.4</td>
84<td class="compatcc">GCC 4.x</td> 89<td class="compatcc">GCC 4.x</td>
90<td class="compatcc">GCC 4.3+</td>
85</tr> 91</tr>
86<tr class="even"> 92<tr class="even">
87<td class="compatos">Windows 98/XP/Vista/7</td> 93<td class="compatos"><a href="#windows">Windows<br>98/XP/Vista/7</a></td>
88<td class="compatcc">MSVC (EE)<br>Windows SDK<br>MinGW (GCC)<br>Cygwin (GCC)</td> 94<td class="compatcc">MSVC (EE)<br>Windows SDK<br>MinGW (GCC)<br>Cygwin (GCC)</td>
89<td class="compatcc">MSVC + SDK v7.0<br>Windows SDK v7.0</td> 95<td class="compatcc">MSVC + SDK v7.0<br>Windows SDK v7.0</td>
96<td class="compatcc">&nbsp;</td>
90</tr> 97</tr>
91<tr class="odd"> 98<tr class="odd">
92<td class="compatos">OSX 10.3-10.6</td> 99<td class="compatos"><a href="#posix">OSX 10.3-10.6</a></td>
93<td class="compatcc">GCC 4.x<br>GCC 3.4</td> 100<td class="compatcc">GCC 4.x<br>GCC 3.4</td>
94<td class="compatcc">GCC 4.x</td> 101<td class="compatcc">GCC 4.x</td>
102<td class="compatcc">&nbsp;</td>
95</tr> 103</tr>
96<tr class="even"> 104<tr class="even">
97<td class="compatos">*BSD, other</td> 105<td class="compatos"><a href="#posix">*BSD, other</a></td>
98<td class="compatcc">GCC 4.x<br>GCC 3.4</td> 106<td class="compatcc">GCC 4.x<br>GCC 3.4</td>
99<td class="compatcc">(not supported)</td> 107<td class="compatcc">(not supported)</td>
108<td class="compatcc">&nbsp;</td>
100</tr> 109</tr>
101</table> 110</table>
102 111
@@ -147,10 +156,12 @@ which is probably the default on your system, anyway. Simply run:
147make 156make
148</pre> 157</pre>
149<p> 158<p>
150This always builds a native x86 or x64 binary, depending on your OS. 159This always builds a native x86, x64 or PPC binary, depending on the host OS
160you're running this command on. Check the section on
161<a href="#cross">cross-compilation</a> for more options.
151</p> 162</p>
152<p> 163<p>
153By default modules are only searched under the prefix <tt>/usr/local</tt>. 164By default, modules are only searched under the prefix <tt>/usr/local</tt>.
154You can add an extra prefix to the search paths by appending the 165You can add an extra prefix to the search paths by appending the
155<tt>PREFIX</tt> option, e.g.: 166<tt>PREFIX</tt> option, e.g.:
156</p> 167</p>
@@ -283,7 +294,7 @@ directory where <tt>luajit.exe</tt> is installed
283(see <tt>src/luaconf.h</tt>). 294(see <tt>src/luaconf.h</tt>).
284</p> 295</p>
285 296
286<h2>Cross-compiling LuaJIT</h2> 297<h2 id="cross">Cross-compiling LuaJIT</h2>
287<p> 298<p>
288The build system has limited support for cross-compilation. For details 299The build system has limited support for cross-compilation. For details
289check the comments in <tt>src/Makefile</tt>. Here are some popular examples: 300check the comments in <tt>src/Makefile</tt>. Here are some popular examples:
@@ -303,36 +314,130 @@ installing the <tt>mingw32</tt> package and running:
303<pre class="code"> 314<pre class="code">
304make HOST_CC="gcc -m32" CROSS=i586-mingw32msvc- TARGET_SYS=Windows 315make HOST_CC="gcc -m32" CROSS=i586-mingw32msvc- TARGET_SYS=Windows
305</pre> 316</pre>
317<p>
318You can cross-compile for a PPC/e500v2 target on an x86 or x64 host system
319using a standard GNU cross-compile toolchain (Binutils, GCC, EGLIBC).
320The <tt>CROSS</tt> prefix may vary depending on the <tt>--target</tt>
321of the toolchain:
322</p>
323<pre class="code">
324make HOST_CC="gcc -m32" CROSS=powerpc-e500v2-linux-gnuspe- TARGET=ppcspe
325</pre>
306 326
307<h2>Embedding LuaJIT</h2> 327<h2 id="embed">Embedding LuaJIT</h2>
308<p> 328<p>
309LuaJIT is API-compatible with Lua 5.1. If you've already embedded Lua 329LuaJIT is API-compatible with Lua 5.1. If you've already embedded Lua
310into your application, you probably don't need to do anything to switch 330into your application, you probably don't need to do anything to switch
311to LuaJIT, except link with a different library. Additional hints: 331to LuaJIT, except link with a different library:
312</p> 332</p>
313<ul> 333<ul>
334<li>It's strongly suggested to build LuaJIT separately using the supplied
335build system. Please do <em>not</em> attempt to integrate the individual
336source files into your build tree. You'll most likely get the internal build
337dependencies wrong or mess up the compiler flags. Treat LuaJIT like any
338other external library and link your application with either the dynamic
339or static library, depending on your needs.</li>
340<li>If you want to load C modules compiled for plain Lua
341with <tt>require()</tt>, you need to make sure the public symbols
342(e.g. <tt>lua_pushnumber</tt>) are exported, too:
343<ul><li>On POSIX systems you can either link to the shared library
344or link the static library into your application. In the latter case
345you'll need to export all public symbols from your main executable
346(e.g. <tt>-Wl,-E</tt> on Linux) and add the external dependencies
347(e.g. <tt>-lm -ldl</tt> on Linux).</li>
348<li>Since Windows symbols are bound to a specific DLL name, you need to
349link to the <tt>lua51.dll</tt> created by the LuaJIT build (do not rename
350the DLL). You may link LuaJIT statically on Windows only if you don't
351intend to load Lua/C modules at runtime.
352</li></ul>
353</li>
354<li>
355If you're building a 64 bit application on OSX which links directly or
356indirectly against LuaJIT, you need to link your main executable
357with these flags:
358<pre class="code">
359-pagezero_size 10000 -image_base 100000000
360</pre>
361Also, it's recommended to <tt>rebase</tt> all (self-compiled) shared libraries
362which are loaded at runtime on OSX/x64 (e.g. C extension modules for Lua).
363See: <tt>man rebase</tt>
364</li>
365</ul>
366<p>Additional hints for initializing LuaJIT using the C API functions:</p>
367<ul>
368<li>Here's a
369<a href="http://lua-users.org/wiki/SimpleLuaApiExample"><span class="ext">&raquo;</span>&nbsp;simple example</a>
370for embedding Lua or LuaJIT into your application.</li>
314<li>Make sure you use <tt>luaL_newstate</tt>. Avoid using 371<li>Make sure you use <tt>luaL_newstate</tt>. Avoid using
315<tt>lua_newstate</tt>, since this uses the (slower) default memory 372<tt>lua_newstate</tt>, since this uses the (slower) default memory
316allocator from your system (no support for this on x64).</tt></li> 373allocator from your system (no support for this on x64).</tt></li>
317<li>Make sure you use <tt>luaL_openlibs</tt> and not the old Lua 5.0 style 374<li>Make sure you use <tt>luaL_openlibs</tt> and not the old Lua 5.0 style
318of calling <tt>luaopen_base</tt> etc. directly.</li> 375of calling <tt>luaopen_base</tt> etc. directly.</li>
319<li>To change which standard libraries to load, copy <tt>src/lib_init.c</tt> 376<li>To change or extend the list of standard libraries to load, copy
320to your project and modify it accordingly. Make sure the <tt>jit</tt> 377<tt>src/lib_init.c</tt> to your project and modify it accordingly.
321library is loaded or the JIT compiler will not be activated.</li> 378Make sure the <tt>jit</tt> library is loaded or the JIT compiler
322<li>Here's a 379will not be activated.</li>
323<a href="http://lua-users.org/wiki/SimpleLuaApiExample"><span class="ext">&raquo;</span>&nbsp;simple example</a>.</li> 380<li>The <tt>bit.*</tt> module for bitwise operations
381is already built-in. There's no need to statically link
382<a href="http://bitop.luajit.org/"><span class="ext">&raquo;</span>&nbsp;Lua BitOp</a> to your application.</li>
324</ul> 383</ul>
384
385<h2 id="distro">Hints for Distribution Maintainers</h2>
386<p>
387The LuaJIT build system has extra provisions for the needs of most
388POSIX-based distributions. If you're a package maintainer for
389a distribution, <em>please</em> make use of these features and
390avoid patching, subverting, autotoolizing or messing up the build system
391in unspeakable ways.
392</p>
393<p>
394There should be absolutely no need to patch <tt>luaconf.h</tt> or any
395of the Makefiles. And please do not hand-pick files for your packages &mdash;
396simply use whatever <tt>make install</tt> creates. There's a reason
397for all of the files <em>and</em> directories it creates.
398</p>
399<p>
400The build system uses GNU make and autodetects most settings based on
401the host you're building it on. This should work fine for native builds,
402even when sandboxed. You may need to pass some of the following flags to
403<em>both</em> the <tt>make</tt> and the <tt>make install</tt> command lines
404for a regular distribution build:
405</p>
406<ul>
407<li><tt>PREFIX</tt> overrides the installation path and should usually
408be set to <tt>/usr</tt>. Setting this also changes the module paths and
409the <tt>-rpath</tt> of the shared library.</li>
410<li><tt>DESTDIR</tt> is an absolute path which allows you to install
411to a shadow tree instead of the root tree of the build system.</li>
412<li>Have a look at the top-level <tt>Makefile</tt> and <tt>src/Makefile</tt>
413for additional variables to tweak. The following variables <em>may</em> be
414overriden, but it's <em>not</em> recommended, except for special needs
415like cross-builds:
416<tt>BUILDMODE, CC, HOST_CC, STATIC_CC, DYNAMIC_CC, CFLAGS, HOST_CFLAGS,
417TARGET_CFLAGS, LDFLAGS, HOST_LDFLAGS, TARGET_LDFLAGS, TARGET_SHLDFLAGS,
418LIBS, HOST_LIBS, TARGET_LIBS, CROSS, HOST_SYS, TARGET_SYS</tt></li>
419</ul>
420<p>
421The build system has a special target for an amalgamated build, i.e.
422<tt>make amalg</tt>. This compiles the LuaJIT core as one huge C file
423and allows GCC to generate faster and shorter code. Alas, this requires
424lots of memory during the build. This may be a problem for some users,
425that's why it's not enabled by default. But it shouldn't be a problem for
426most build farms. It's recommended that binary distributions use this
427target for their LuaJIT builds.
428</p>
325<p> 429<p>
32664 bit applications on OSX must be linked with these options 430The tl;dr version of the above:
327(only the main executable):
328</p> 431</p>
329<pre class="code"> 432<pre class="code">
330-pagezero_size 10000 -image_base 100000000 433make amalg PREFIX=/usr && \
434make install PREFIX=/usr DESTDIR=/tmp/buildroot
331</pre> 435</pre>
332<p> 436<p>
333It's recommended to <tt>rebase</tt> all (self-compiled) shared libraries 437Finally, if you encounter any difficulties, please
334which are loaded at runtime on OSX/x64 (e.g. C extension modules for Lua). 438<a href="contact.html">contact me</a> first, instead of releasing a broken
335See: <tt>man rebase</tt> 439package onto unsuspecting users. Because they'll usually gonna complain
440to me (the upstream) and not you (the package maintainer), anyway.
336</p> 441</p>
337<br class="flush"> 442<br class="flush">
338</div> 443</div>
diff --git a/doc/luajit.html b/doc/luajit.html
index 90cd9997..71e6a19f 100644
--- a/doc/luajit.html
+++ b/doc/luajit.html
@@ -65,7 +65,8 @@ standard Lua interpreter and can be deployed as a drop-in replacement.
65<p> 65<p>
66LuaJIT offers more performance, at the expense of portability. It 66LuaJIT offers more performance, at the expense of portability. It
67currently runs on all popular operating systems based on 67currently runs on all popular operating systems based on
68<b>x86 or x64 CPUs</b> (Linux, Windows, OSX etc.). 68<b>x86</b> or <b>x64 CPUs</b> (Linux, Windows, OSX etc.) or embedded Linux
69systems based on <b>PPC/e500v2 CPUs</b>.
69Other platforms will be supported in the future, based on user demand 70Other platforms will be supported in the future, based on user demand
70and sponsoring. 71and sponsoring.
71</p> 72</p>
@@ -76,7 +77,7 @@ LuaJIT has been successfully used as a <b>scripting middleware</b> in
76games, 3D modellers, numerical simulations, trading platforms and many 77games, 3D modellers, numerical simulations, trading platforms and many
77other specialty applications. It combines high flexibility with high 78other specialty applications. It combines high flexibility with high
78performance and an unmatched <b>low memory footprint</b>: less than 79performance and an unmatched <b>low memory footprint</b>: less than
79<b>120K</b> for the VM plus less than <b>80K</b> for the JIT compiler. 80<b>120K</b> for the VM plus less than <b>80K</b> for the JIT compiler (on x86).
80</p> 81</p>
81<p> 82<p>
82LuaJIT has been in continuous development since 2005. It's widely 83LuaJIT has been in continuous development since 2005. It's widely
@@ -96,9 +97,13 @@ written in assembler, with a state-of-the-art JIT compiler.
96An innovative <b>trace compiler</b> is integrated with advanced, 97An innovative <b>trace compiler</b> is integrated with advanced,
97SSA-based optimizations and a highly tuned code generation backend. This 98SSA-based optimizations and a highly tuned code generation backend. This
98allows a substantial reduction of the overhead associated with dynamic 99allows a substantial reduction of the overhead associated with dynamic
99language features. It's destined to break into the 100language features.
100<a href="http://luajit.org/performance.html"><span class="ext">&raquo;</span>&nbsp;performance</a> range 101</p>
101traditionally reserved for offline, static language compilers. 102<p>
103It's destined to break into the <a href="http://luajit.org/performance.html"><span class="ext">&raquo;</span>&nbsp;performance</a>
104range traditionally reserved for offline, static language compilers.
105Have look at these <a href="http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=all&d=data&calc=calculate&gpp=on&java=on&luajit=on&v8=on&lua=on&tracemonkey=on&box=1"><span class="ext">&raquo;</span>&nbsp;cross-language benchmarks</a>
106to see how it ranks against the competition.
102</p> 107</p>
103 108
104<h2>More ...</h2> 109<h2>More ...</h2>
diff --git a/doc/running.html b/doc/running.html
index e3a2a4b0..e337d535 100644
--- a/doc/running.html
+++ b/doc/running.html
@@ -126,7 +126,7 @@ systems.
126</p> 126</p>
127 127
128<h3 id="opt_O"><tt>-O[level]</tt><br> 128<h3 id="opt_O"><tt>-O[level]</tt><br>
129<tt>-O[+]flag</tt> <tt>-O-flag</tt><br> 129<tt>-O[+]flag</tt>&nbsp;&nbsp;&nbsp;<tt>-O-flag</tt><br>
130<tt>-Oparam=value</tt></h3> 130<tt>-Oparam=value</tt></h3>
131<p> 131<p>
132This options allows fine-tuned control of the optimizations used by 132This options allows fine-tuned control of the optimizations used by
diff --git a/doc/status.html b/doc/status.html
index 3da8fe78..a2de90ab 100644
--- a/doc/status.html
+++ b/doc/status.html
@@ -67,30 +67,31 @@ This is a list of the things you should know about the LuaJIT 2.0 beta test:
67</p> 67</p>
68<ul> 68<ul>
69<li> 69<li>
70The JIT compiler only generates code for CPUs with support for
71<b>SSE2</b> instructions. I.e. you need at least a P4, Core 2/i5/i7
72or K8/K10 to get the full benefit.<br>
73If you run LuaJIT on older CPUs without SSE2 support, the JIT compiler
74is disabled and the VM falls back to the interpreter.
75Run the command line executable without arguments to show the current status
76(<tt>JIT: ON</tt> or <tt>JIT: OFF</tt>).
77</li>
78<li>
79Obviously there will be many <b>bugs</b> in a VM which has been 70Obviously there will be many <b>bugs</b> in a VM which has been
80rewritten from the ground up. Please report your findings together with 71rewritten from the ground up. Please report your findings together with
81the circumstances needed to reproduce the bug. If possible reduce the 72the circumstances needed to reproduce the bug. If possible, reduce the
82problem down to a simple test cases.<br> 73problem down to a simple test case.<br>
83There is no formal bug tracker at the moment. The best place for 74There is no formal bug tracker at the moment. The best place for
84discussion is the 75discussion is the
85<a href="http://www.lua.org/lua-l.html"><span class="ext">&raquo;</span>&nbsp;Lua mailing list</a>. Of course 76<a href="http://www.lua.org/lua-l.html"><span class="ext">&raquo;</span>&nbsp;Lua mailing list</a>. Of course
86you may also send your bug report directly to me, especially when they 77you may also send your bug reports <a href="contact.html">directly to me</a>,
87contains lengthy debug output. Please check the 78especially when they contain lengthy debug output or if you require
88<a href="contact.html">Contact</a> page for details. 79confidentiality.
80</li>
81<li>
82The JIT compiler only generates code for CPUs with support for
83<b>SSE2</b> instructions. I.e. you need at least a P4, Core 2/i3/i5/i7,
84Atom or K8/K10 to get the full benefit.<br>
85If you run LuaJIT on older CPUs without SSE2 support, the JIT compiler
86is disabled and the VM falls back to the LuaJIT interpreter. This is faster
87than the Lua interpreter, but not nearly as fast as the JIT compiler of course.
88Run the command line executable without arguments to show the current status
89(<tt>JIT: ON</tt> or <tt>JIT: OFF</tt>).
89</li> 90</li>
90<li> 91<li>
91The VM is complete in the sense that it <b>should</b> run all Lua code 92The VM is complete in the sense that it <b>should</b> run all Lua code
92just fine. It's considered a serious bug if the VM crashes or produces 93just fine. It's considered a serious bug if the VM crashes or produces
93unexpected results &mdash; please report it. There are only very few 94unexpected results &mdash; please report this. There are only very few
94known incompatibilities with standard Lua: 95known incompatibilities with standard Lua:
95<ul> 96<ul>
96<li> 97<li>
@@ -125,12 +126,12 @@ demonstrable need is shown.
125<li> 126<li>
126The <b>JIT compiler</b> is not complete (yet) and falls back to the 127The <b>JIT compiler</b> is not complete (yet) and falls back to the
127interpreter in some cases. All of this works transparently, so unless 128interpreter in some cases. All of this works transparently, so unless
128you use <tt>-jv</tt>, you'll probably never notice (the interpreter is quite 129you use <tt>-jv</tt>, you'll probably never notice (the interpreter is
129fast, too). Here are the known issues: 130<a href="http://luajit.org/performance.html"><span class="ext">&raquo;</span>&nbsp;quite fast</a>, too). Here are the known issues:
130<ul> 131<ul>
131<li> 132<li>
132Many known issues cause a <b>NYI</b> (not yet implemented) trace abort 133Most known issues cause a <b>NYI</b> (not yet implemented) trace abort
133message. E.g. for calls to vararg functions or many string library 134message. E.g. for calls to some internal library
134functions. Reporting these is only mildly useful, except if you have good 135functions. Reporting these is only mildly useful, except if you have good
135example code that shows the problem. Obviously, reports accompanied with 136example code that shows the problem. Obviously, reports accompanied with
136a patch to fix the issue are more than welcome. But please check back 137a patch to fix the issue are more than welcome. But please check back
@@ -138,7 +139,7 @@ with me, before writing major improvements, to avoid duplication of
138effort. 139effort.
139</li> 140</li>
140<li> 141<li>
141The trace compiler currently does not back off specialization for 142The trace compiler currently doesn't back off specialization for
142function call dispatch. It should really fall back to specializing on 143function call dispatch. It should really fall back to specializing on
143the prototype, not the closure identity. This can lead to the so-called 144the prototype, not the closure identity. This can lead to the so-called
144"trace explosion" problem with <b>closure-heavy programming</b>. The 145"trace explosion" problem with <b>closure-heavy programming</b>. The
@@ -191,20 +192,20 @@ overriding goal for a low-footprint, low-overhead JIT compiler.
191<li> 192<li>
192More <b>optimizations</b> will be added in parallel to the last step on 193More <b>optimizations</b> will be added in parallel to the last step on
193an as-needed basis. Sinking of stores 194an as-needed basis. Sinking of stores
194to aggregates and sinking of allocations are high on the list. Faster 195to aggregates and sinking of allocations are high on the list.
195handling of NEWREF and better alias analysis are desirable, too. More 196More complex optimizations with less pay-off, such as value-range-propagation
196complex optimizations with less pay-off, such as value-range-propagation
197(VRP) will have to wait. 197(VRP) will have to wait.
198</li> 198</li>
199<li> 199<li>
200LuaJIT 2.0 has been designed with <b>portability</b> in mind. 200LuaJIT 2.0 has been designed with <b>portability</b> in mind.
201Nonetheless, it compiles to native code and needs to be adapted to each 201Nonetheless, it compiles to native code and needs to be adapted to each
202architecture. Porting the compiler backend is probably the easier task, 202architecture. The two major work items are porting the the fast interpreter,
203but a key element of its design is the fast interpreter, written in 203which is written in assembler, and porting the compiler backend.
204machine-specific assembler.<br> 204Most other portability issues like endianess or 32 vs. 64&nbsp;bit CPUs
205An x64 port is already available, thanks to the 205have already been taken care of.<br>
206Several ports are already available, thanks to the
206<a href="sponsors.html">LuaJIT sponsorship program</a>. 207<a href="sponsors.html">LuaJIT sponsorship program</a>.
207Other ports will follow &mdash; companies which are 208More ports will follow in the future &mdash; companies which are
208interested in sponsoring a port to a particular architecture, please 209interested in sponsoring a port to a particular architecture, please
209use the given contact address. 210use the given contact address.
210</li> 211</li>
@@ -230,9 +231,10 @@ for efficient <b>vectorization</b>.
230Currently Lua is missing a standard library for access to <b>structured 231Currently Lua is missing a standard library for access to <b>structured
231binary data</b> and <b>arrays/buffers</b> holding low-level data types. 232binary data</b> and <b>arrays/buffers</b> holding low-level data types.
232Allowing calls to arbitrary C functions (<b>FFI</b>) would obviate the 233Allowing calls to arbitrary C functions (<b>FFI</b>) would obviate the
233need to write manual bindings. A variety of extension modules is floating 234need to write manual bindings. A variety of Lua extension modules are
234around, with different scope and capabilities. Alas, none of them has been 235available, with different scope and capabilities. Alas, none of them has been
235designed with a JIT compiler in mind. 236designed with a JIT compiler in mind. An FFI for LuaJIT is currently
237in the design phase, but there's no ETA, yet.
236</li> 238</li>
237</ul> 239</ul>
238<br class="flush"> 240<br class="flush">