浏览代码

Update docs for PPC port. Clarify and extend install instructions.

Mike Pall 15 年之前
父节点
当前提交
ddae887878
共有 8 个文件被更改,包括 185 次插入70 次删除
  1. 5 4
      Makefile
  2. 3 3
      doc/faq.html
  3. 130 25
      doc/install.html
  4. 10 5
      doc/luajit.html
  5. 1 1
      doc/running.html
  6. 33 31
      doc/status.html
  7. 2 0
      src/Makefile
  8. 1 1
      src/ljamalg.c

+ 5 - 4
Makefile

@@ -1,13 +1,14 @@
 ##############################################################################
 ##############################################################################
 # LuaJIT top level Makefile for installation. Requires GNU Make.
 # LuaJIT top level Makefile for installation. Requires GNU Make.
 #
 #
+# Please read doc/install.html before changing any variables!
+#
 # Suitable for POSIX platforms (Linux, *BSD, OSX etc.).
 # Suitable for POSIX platforms (Linux, *BSD, OSX etc.).
 # Note: src/Makefile has many more configurable options.
 # Note: src/Makefile has many more configurable options.
 #
 #
-# ##### This Makefile is NOT useful for installation on Windows! #####
+# ##### This Makefile is NOT useful for Windows! #####
 # For MSVC, please follow the instructions given in src/msvcbuild.bat.
 # For MSVC, please follow the instructions given in src/msvcbuild.bat.
 # For MinGW and Cygwin, cd to src and run make with the Makefile there.
 # For MinGW and Cygwin, cd to src and run make with the Makefile there.
-# NYI: add wininstall.bat
 #
 #
 # Copyright (C) 2005-2010 Mike Pall. See Copyright Notice in luajit.h
 # Copyright (C) 2005-2010 Mike Pall. See Copyright Notice in luajit.h
 ##############################################################################
 ##############################################################################
@@ -22,8 +23,8 @@ NODOTABIVER=  51
 
 
 ##############################################################################
 ##############################################################################
 #
 #
-# Change the installation path as needed and modify src/luaconf.h accordingly.
-# Note: PREFIX must be an absolute path!
+# Change the installation path as needed. This automatically adjusts
+# the paths in src/luaconf.h, too. Note: PREFIX must be an absolute path!
 #
 #
 export PREFIX= /usr/local
 export PREFIX= /usr/local
 ##############################################################################
 ##############################################################################

+ 3 - 3
doc/faq.html

@@ -126,7 +126,7 @@ running inside a C function under the Lua interpreter.</dd>
 <dt>Q: Why doesn't my favorite power-patch for Lua apply against LuaJIT?</dt>
 <dt>Q: Why doesn't my favorite power-patch for Lua apply against LuaJIT?</dt>
 <dd>Because it's a completely redesigned VM and has very little code
 <dd>Because it's a completely redesigned VM and has very little code
 in common with Lua anymore. Also, if the patch introduces changes to
 in common with Lua anymore. Also, if the patch introduces changes to
-the Lua semantics, this would need to be reflected everywhere in the
+the Lua semantics, these would need to be reflected everywhere in the
 VM, from the interpreter up to all stages of the compiler.<br> Please
 VM, from the interpreter up to all stages of the compiler.<br> Please
 use only standard Lua language constructs. For many common needs you
 use only standard Lua language constructs. For many common needs you
 can use source transformations or use wrapper or proxy functions.
 can use source transformations or use wrapper or proxy functions.
@@ -139,8 +139,8 @@ The compiler will happily optimize away such indirections.</dd>
 machine code. This means the code generator must be ported to each
 machine code. This means the code generator must be ported to each
 architecture. And the fast interpreter is written in assembler and
 architecture. And the fast interpreter is written in assembler and
 must be ported, too. This is quite an undertaking.<br> Currently only
 must be ported, too. This is quite an undertaking.<br> Currently only
-x86 and x64 CPUs are supported. Other architectures will follow based
-on sufficient user demand and/or sponsoring.</dd>
+x86, x64 and PPC/e500v2 CPUs are supported. Other architectures will follow
+based on sufficient user demand and/or sponsoring.</dd>
 </dl>
 </dl>
 
 
 <dl>
 <dl>

+ 130 - 25
doc/install.html

@@ -11,16 +11,20 @@
 <style type="text/css">
 <style type="text/css">
 table.compat {
 table.compat {
   line-height: 1.2;
   line-height: 1.2;
-  width: 40em;
+  width: 47em;
 }
 }
 tr.compathead td {
 tr.compathead td {
   font-weight: bold;
   font-weight: bold;
 }
 }
+td {
+  border-left: 1px solid #bfcfff;
+  border-right: 1px solid #bfcfff;
+}
 td.compatos {
 td.compatos {
-  width: 40%;
+  width: 25%;
 }
 }
 td.compatcc {
 td.compatcc {
-  width: 30%;
+  width: 25%;
   vertical-align: top;
   vertical-align: top;
 }
 }
 </style>
 </style>
@@ -68,35 +72,40 @@ For the impatient (on POSIX systems):
 make &amp;&amp; sudo make install
 make &amp;&amp; sudo make install
 </pre>
 </pre>
 <p>
 <p>
-LuaJIT currently builds out-of-the box on most x86 or x64 systems.
+LuaJIT currently builds out-of-the box on most systems.
 Here's the compatibility matrix for the supported combinations of
 Here's the compatibility matrix for the supported combinations of
 operating system, CPU and compilers:
 operating system, CPU and compilers:
 </p>
 </p>
 <table class="compat">
 <table class="compat">
 <tr class="compathead">
 <tr class="compathead">
-<td class="compatos">Operating system</td>
+<td class="compatos">OS / CPU</td>
 <td class="compatcc">x86 (32 bit)</td>
 <td class="compatcc">x86 (32 bit)</td>
 <td class="compatcc">x64 (64 bit)</td>
 <td class="compatcc">x64 (64 bit)</td>
+<td class="compatcc">PPC/e500v2</td>
 </tr>
 </tr>
 <tr class="odd separate">
 <tr class="odd separate">
-<td class="compatos">Linux</td>
+<td class="compatos"><a href="#posix">Linux</a></td>
 <td class="compatcc">GCC 4.x<br>GCC 3.4</td>
 <td class="compatcc">GCC 4.x<br>GCC 3.4</td>
 <td class="compatcc">GCC 4.x</td>
 <td class="compatcc">GCC 4.x</td>
+<td class="compatcc">GCC 4.3+</td>
 </tr>
 </tr>
 <tr class="even">
 <tr class="even">
-<td class="compatos">Windows 98/XP/Vista/7</td>
+<td class="compatos"><a href="#windows">Windows<br>98/XP/Vista/7</a></td>
 <td class="compatcc">MSVC (EE)<br>Windows SDK<br>MinGW (GCC)<br>Cygwin (GCC)</td>
 <td class="compatcc">MSVC (EE)<br>Windows SDK<br>MinGW (GCC)<br>Cygwin (GCC)</td>
 <td class="compatcc">MSVC + SDK v7.0<br>Windows SDK v7.0</td>
 <td class="compatcc">MSVC + SDK v7.0<br>Windows SDK v7.0</td>
+<td class="compatcc">&nbsp;</td>
 </tr>
 </tr>
 <tr class="odd">
 <tr class="odd">
-<td class="compatos">OSX 10.3-10.6</td>
+<td class="compatos"><a href="#posix">OSX 10.3-10.6</a></td>
 <td class="compatcc">GCC 4.x<br>GCC 3.4</td>
 <td class="compatcc">GCC 4.x<br>GCC 3.4</td>
 <td class="compatcc">GCC 4.x</td>
 <td class="compatcc">GCC 4.x</td>
+<td class="compatcc">&nbsp;</td>
 </tr>
 </tr>
 <tr class="even">
 <tr class="even">
-<td class="compatos">*BSD, other</td>
+<td class="compatos"><a href="#posix">*BSD, other</a></td>
 <td class="compatcc">GCC 4.x<br>GCC 3.4</td>
 <td class="compatcc">GCC 4.x<br>GCC 3.4</td>
 <td class="compatcc">(not supported)</td>
 <td class="compatcc">(not supported)</td>
+<td class="compatcc">&nbsp;</td>
 </tr>
 </tr>
 </table>
 </table>
 
 
@@ -147,10 +156,12 @@ which is probably the default on your system, anyway. Simply run:
 make
 make
 </pre>
 </pre>
 <p>
 <p>
-This always builds a native x86 or x64 binary, depending on your OS.
+This always builds a native x86, x64 or PPC binary, depending on the host OS
+you're running this command on. Check the section on
+<a href="#cross">cross-compilation</a> for more options.
 </p>
 </p>
 <p>
 <p>
-By default modules are only searched under the prefix <tt>/usr/local</tt>.
+By default, modules are only searched under the prefix <tt>/usr/local</tt>.
 You can add an extra prefix to the search paths by appending the
 You can add an extra prefix to the search paths by appending the
 <tt>PREFIX</tt> option, e.g.:
 <tt>PREFIX</tt> option, e.g.:
 </p>
 </p>
@@ -283,7 +294,7 @@ directory where <tt>luajit.exe</tt> is installed
 (see <tt>src/luaconf.h</tt>).
 (see <tt>src/luaconf.h</tt>).
 </p>
 </p>
 
 
-<h2>Cross-compiling LuaJIT</h2>
+<h2 id="cross">Cross-compiling LuaJIT</h2>
 <p>
 <p>
 The build system has limited support for cross-compilation. For details
 The build system has limited support for cross-compilation. For details
 check the comments in <tt>src/Makefile</tt>. Here are some popular examples:
 check the comments in <tt>src/Makefile</tt>. Here are some popular examples:
@@ -303,36 +314,130 @@ installing the <tt>mingw32</tt> package and running:
 <pre class="code">
 <pre class="code">
 make HOST_CC="gcc -m32" CROSS=i586-mingw32msvc- TARGET_SYS=Windows
 make HOST_CC="gcc -m32" CROSS=i586-mingw32msvc- TARGET_SYS=Windows
 </pre>
 </pre>
+<p>
+You can cross-compile for a PPC/e500v2 target on an x86 or x64 host system
+using a standard GNU cross-compile toolchain (Binutils, GCC, EGLIBC).
+The <tt>CROSS</tt> prefix may vary depending on the <tt>--target</tt>
+of the toolchain:
+</p>
+<pre class="code">
+make HOST_CC="gcc -m32" CROSS=powerpc-e500v2-linux-gnuspe- TARGET=ppcspe
+</pre>
 
 
-<h2>Embedding LuaJIT</h2>
+<h2 id="embed">Embedding LuaJIT</h2>
 <p>
 <p>
 LuaJIT is API-compatible with Lua 5.1. If you've already embedded Lua
 LuaJIT is API-compatible with Lua 5.1. If you've already embedded Lua
 into your application, you probably don't need to do anything to switch
 into your application, you probably don't need to do anything to switch
-to LuaJIT, except link with a different library. Additional hints:
+to LuaJIT, except link with a different library:
 </p>
 </p>
 <ul>
 <ul>
+<li>It's strongly suggested to build LuaJIT separately using the supplied
+build system. Please do <em>not</em> attempt to integrate the individual
+source files into your build tree. You'll most likely get the internal build
+dependencies wrong or mess up the compiler flags. Treat LuaJIT like any
+other external library and link your application with either the dynamic
+or static library, depending on your needs.</li>
+<li>If you want to load C modules compiled for plain Lua
+with <tt>require()</tt>, you need to make sure the public symbols
+(e.g. <tt>lua_pushnumber</tt>) are exported, too:
+<ul><li>On POSIX systems you can either link to the shared library
+or link the static library into your application. In the latter case
+you'll need to export all public symbols from your main executable
+(e.g. <tt>-Wl,-E</tt> on Linux) and add the external dependencies
+(e.g. <tt>-lm -ldl</tt> on Linux).</li>
+<li>Since Windows symbols are bound to a specific DLL name, you need to
+link to the <tt>lua51.dll</tt> created by the LuaJIT build (do not rename
+the DLL). You may link LuaJIT statically on Windows only if you don't
+intend to load Lua/C modules at runtime.
+</li></ul>
+</li>
+<li>
+If you're building a 64 bit application on OSX which links directly or
+indirectly against LuaJIT, you need to link your main executable
+with these flags:
+<pre class="code">
+-pagezero_size 10000 -image_base 100000000
+</pre>
+Also, it's recommended to <tt>rebase</tt> all (self-compiled) shared libraries
+which are loaded at runtime on OSX/x64 (e.g. C extension modules for Lua).
+See: <tt>man rebase</tt>
+</li>
+</ul>
+<p>Additional hints for initializing LuaJIT using the C API functions:</p>
+<ul>
+<li>Here's a
+<a href="http://lua-users.org/wiki/SimpleLuaApiExample"><span class="ext">&raquo;</span>&nbsp;simple example</a>
+for embedding Lua or LuaJIT into your application.</li>
 <li>Make sure you use <tt>luaL_newstate</tt>. Avoid using
 <li>Make sure you use <tt>luaL_newstate</tt>. Avoid using
 <tt>lua_newstate</tt>, since this uses the (slower) default memory
 <tt>lua_newstate</tt>, since this uses the (slower) default memory
 allocator from your system (no support for this on x64).</tt></li>
 allocator from your system (no support for this on x64).</tt></li>
 <li>Make sure you use <tt>luaL_openlibs</tt> and not the old Lua 5.0 style
 <li>Make sure you use <tt>luaL_openlibs</tt> and not the old Lua 5.0 style
 of calling <tt>luaopen_base</tt> etc. directly.</li>
 of calling <tt>luaopen_base</tt> etc. directly.</li>
-<li>To change which standard libraries to load, copy <tt>src/lib_init.c</tt>
-to your project and modify it accordingly. Make sure the <tt>jit</tt>
-library is loaded or the JIT compiler will not be activated.</li>
-<li>Here's a
-<a href="http://lua-users.org/wiki/SimpleLuaApiExample"><span class="ext">&raquo;</span>&nbsp;simple example</a>.</li>
+<li>To change or extend the list of standard libraries to load, copy
+<tt>src/lib_init.c</tt> to your project and modify it accordingly.
+Make sure the <tt>jit</tt> library is loaded or the JIT compiler
+will not be activated.</li>
+<li>The <tt>bit.*</tt> module for bitwise operations
+is already built-in. There's no need to statically link
+<a href="http://bitop.luajit.org/"><span class="ext">&raquo;</span>&nbsp;Lua BitOp</a> to your application.</li>
 </ul>
 </ul>
+
+<h2 id="distro">Hints for Distribution Maintainers</h2>
+<p>
+The LuaJIT build system has extra provisions for the needs of most
+POSIX-based distributions. If you're a package maintainer for
+a distribution, <em>please</em> make use of these features and
+avoid patching, subverting, autotoolizing or messing up the build system
+in unspeakable ways.
+</p>
+<p>
+There should be absolutely no need to patch <tt>luaconf.h</tt> or any
+of the Makefiles. And please do not hand-pick files for your packages &mdash;
+simply use whatever <tt>make install</tt> creates. There's a reason
+for all of the files <em>and</em> directories it creates.
+</p>
+<p>
+The build system uses GNU make and autodetects most settings based on
+the host you're building it on. This should work fine for native builds,
+even when sandboxed. You may need to pass some of the following flags to
+<em>both</em> the <tt>make</tt> and the <tt>make install</tt> command lines
+for a regular distribution build:
+</p>
+<ul>
+<li><tt>PREFIX</tt> overrides the installation path and should usually
+be set to <tt>/usr</tt>. Setting this also changes the module paths and
+the <tt>-rpath</tt> of the shared library.</li>
+<li><tt>DESTDIR</tt> is an absolute path which allows you to install
+to a shadow tree instead of the root tree of the build system.</li>
+<li>Have a look at the top-level <tt>Makefile</tt> and <tt>src/Makefile</tt>
+for additional variables to tweak. The following variables <em>may</em> be
+overriden, but it's <em>not</em> recommended, except for special needs
+like cross-builds:
+<tt>BUILDMODE, CC, HOST_CC, STATIC_CC, DYNAMIC_CC, CFLAGS, HOST_CFLAGS,
+TARGET_CFLAGS, LDFLAGS, HOST_LDFLAGS, TARGET_LDFLAGS, TARGET_SHLDFLAGS,
+LIBS, HOST_LIBS, TARGET_LIBS, CROSS, HOST_SYS, TARGET_SYS</tt></li>
+</ul>
+<p>
+The build system has a special target for an amalgamated build, i.e.
+<tt>make amalg</tt>. This compiles the LuaJIT core as one huge C file
+and allows GCC to generate faster and shorter code. Alas, this requires
+lots of memory during the build. This may be a problem for some users,
+that's why it's not enabled by default. But it shouldn't be a problem for
+most build farms. It's recommended that binary distributions use this
+target for their LuaJIT builds.
+</p>
 <p>
 <p>
-64 bit applications on OSX must be linked with these options
-(only the main executable):
+The tl;dr version of the above:
 </p>
 </p>
 <pre class="code">
 <pre class="code">
--pagezero_size 10000 -image_base 100000000
+make amalg PREFIX=/usr && \
+make install PREFIX=/usr DESTDIR=/tmp/buildroot
 </pre>
 </pre>
 <p>
 <p>
-It's recommended to <tt>rebase</tt> all (self-compiled) shared libraries
-which are loaded at runtime on OSX/x64 (e.g. C extension modules for Lua).
-See: <tt>man rebase</tt>
+Finally, if you encounter any difficulties, please
+<a href="contact.html">contact me</a> first, instead of releasing a broken
+package onto unsuspecting users. Because they'll usually gonna complain
+to me (the upstream) and not you (the package maintainer), anyway.
 </p>
 </p>
 <br class="flush">
 <br class="flush">
 </div>
 </div>

+ 10 - 5
doc/luajit.html

@@ -65,7 +65,8 @@ standard Lua interpreter and can be deployed as a drop-in replacement.
 <p>
 <p>
 LuaJIT offers more performance, at the expense of portability. It
 LuaJIT offers more performance, at the expense of portability. It
 currently runs on all popular operating systems based on
 currently runs on all popular operating systems based on
-<b>x86 or x64 CPUs</b> (Linux, Windows, OSX etc.).
+<b>x86</b> or <b>x64 CPUs</b> (Linux, Windows, OSX etc.) or embedded Linux
+systems based on <b>PPC/e500v2 CPUs</b>.
 Other platforms will be supported in the future, based on user demand
 Other platforms will be supported in the future, based on user demand
 and sponsoring.
 and sponsoring.
 </p>
 </p>
@@ -76,7 +77,7 @@ LuaJIT has been successfully used as a <b>scripting middleware</b> in
 games, 3D modellers, numerical simulations, trading platforms and many
 games, 3D modellers, numerical simulations, trading platforms and many
 other specialty applications. It combines high flexibility with high
 other specialty applications. It combines high flexibility with high
 performance and an unmatched <b>low memory footprint</b>: less than
 performance and an unmatched <b>low memory footprint</b>: less than
-<b>120K</b> for the VM plus less than <b>80K</b> for the JIT compiler.
+<b>120K</b> for the VM plus less than <b>80K</b> for the JIT compiler (on x86).
 </p>
 </p>
 <p>
 <p>
 LuaJIT has been in continuous development since 2005. It's widely
 LuaJIT 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.
 An innovative <b>trace compiler</b> is integrated with advanced,
 An innovative <b>trace compiler</b> is integrated with advanced,
 SSA-based optimizations and a highly tuned code generation backend. This
 SSA-based optimizations and a highly tuned code generation backend. This
 allows a substantial reduction of the overhead associated with dynamic
 allows a substantial reduction of the overhead associated with dynamic
-language features. It's destined to break into the
-<a href="http://luajit.org/performance.html"><span class="ext">&raquo;</span>&nbsp;performance</a> range
-traditionally reserved for offline, static language compilers.
+language features.
+</p>
+<p>
+It's destined to break into the <a href="http://luajit.org/performance.html"><span class="ext">&raquo;</span>&nbsp;performance</a>
+range traditionally reserved for offline, static language compilers.
+Have 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>
+to see how it ranks against the competition.
 </p>
 </p>
 
 
 <h2>More ...</h2>
 <h2>More ...</h2>

+ 1 - 1
doc/running.html

@@ -126,7 +126,7 @@ systems.
 </p>
 </p>
 
 
 <h3 id="opt_O"><tt>-O[level]</tt><br>
 <h3 id="opt_O"><tt>-O[level]</tt><br>
-<tt>-O[+]flag</tt> <tt>-O-flag</tt><br>
+<tt>-O[+]flag</tt>&nbsp;&nbsp;&nbsp;<tt>-O-flag</tt><br>
 <tt>-Oparam=value</tt></h3>
 <tt>-Oparam=value</tt></h3>
 <p>
 <p>
 This options allows fine-tuned control of the optimizations used by
 This options allows fine-tuned control of the optimizations used by

+ 33 - 31
doc/status.html

@@ -67,30 +67,31 @@ This is a list of the things you should know about the LuaJIT 2.0 beta test:
 </p>
 </p>
 <ul>
 <ul>
 <li>
 <li>
-The JIT compiler only generates code for CPUs with support for
-<b>SSE2</b> instructions. I.e. you need at least a P4, Core 2/i5/i7
-or K8/K10 to get the full benefit.<br>
-If you run LuaJIT on older CPUs without SSE2 support, the JIT compiler
-is disabled and the VM falls back to the interpreter.
-Run the command line executable without arguments to show the current status 
-(<tt>JIT: ON</tt> or <tt>JIT: OFF</tt>).
-</li>
-<li>
 Obviously there will be many <b>bugs</b> in a VM which has been
 Obviously there will be many <b>bugs</b> in a VM which has been
 rewritten from the ground up. Please report your findings together with
 rewritten from the ground up. Please report your findings together with
-the circumstances needed to reproduce the bug. If possible reduce the
-problem down to a simple test cases.<br>
+the circumstances needed to reproduce the bug. If possible, reduce the
+problem down to a simple test case.<br>
 There is no formal bug tracker at the moment. The best place for
 There is no formal bug tracker at the moment. The best place for
 discussion is the
 discussion is the
 <a href="http://www.lua.org/lua-l.html"><span class="ext">&raquo;</span>&nbsp;Lua mailing list</a>. Of course
 <a href="http://www.lua.org/lua-l.html"><span class="ext">&raquo;</span>&nbsp;Lua mailing list</a>. Of course
-you may also send your bug report directly to me, especially when they
-contains lengthy debug output. Please check the
-<a href="contact.html">Contact</a> page for details.
+you may also send your bug reports <a href="contact.html">directly to me</a>,
+especially when they contain lengthy debug output or if you require
+confidentiality.
+</li>
+<li>
+The JIT compiler only generates code for CPUs with support for
+<b>SSE2</b> instructions. I.e. you need at least a P4, Core 2/i3/i5/i7,
+Atom or K8/K10 to get the full benefit.<br>
+If you run LuaJIT on older CPUs without SSE2 support, the JIT compiler
+is disabled and the VM falls back to the LuaJIT interpreter. This is faster
+than the Lua interpreter, but not nearly as fast as the JIT compiler of course.
+Run the command line executable without arguments to show the current status
+(<tt>JIT: ON</tt> or <tt>JIT: OFF</tt>).
 </li>
 </li>
 <li>
 <li>
 The VM is complete in the sense that it <b>should</b> run all Lua code
 The VM is complete in the sense that it <b>should</b> run all Lua code
 just fine. It's considered a serious bug if the VM crashes or produces
 just fine. It's considered a serious bug if the VM crashes or produces
-unexpected results &mdash; please report it. There are only very few
+unexpected results &mdash; please report this. There are only very few
 known incompatibilities with standard Lua:
 known incompatibilities with standard Lua:
 <ul>
 <ul>
 <li>
 <li>
@@ -125,12 +126,12 @@ demonstrable need is shown.
 <li>
 <li>
 The <b>JIT compiler</b> is not complete (yet) and falls back to the
 The <b>JIT compiler</b> is not complete (yet) and falls back to the
 interpreter in some cases. All of this works transparently, so unless
 interpreter in some cases. All of this works transparently, so unless
-you use <tt>-jv</tt>, you'll probably never notice (the interpreter is quite
-fast, too). Here are the known issues:
+you use <tt>-jv</tt>, you'll probably never notice (the interpreter is
+<a href="http://luajit.org/performance.html"><span class="ext">&raquo;</span>&nbsp;quite fast</a>, too). Here are the known issues:
 <ul>
 <ul>
 <li>
 <li>
-Many known issues cause a <b>NYI</b> (not yet implemented) trace abort
-message. E.g. for calls to vararg functions or many string library
+Most known issues cause a <b>NYI</b> (not yet implemented) trace abort
+message. E.g. for calls to some internal library
 functions. Reporting these is only mildly useful, except if you have good
 functions. Reporting these is only mildly useful, except if you have good
 example code that shows the problem. Obviously, reports accompanied with
 example code that shows the problem. Obviously, reports accompanied with
 a patch to fix the issue are more than welcome. But please check back
 a 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
 effort.
 effort.
 </li>
 </li>
 <li>
 <li>
-The trace compiler currently does not back off specialization for
+The trace compiler currently doesn't back off specialization for
 function call dispatch. It should really fall back to specializing on
 function call dispatch. It should really fall back to specializing on
 the prototype, not the closure identity. This can lead to the so-called
 the prototype, not the closure identity. This can lead to the so-called
 "trace explosion" problem with <b>closure-heavy programming</b>. The
 "trace explosion" problem with <b>closure-heavy programming</b>. The
@@ -191,20 +192,20 @@ overriding goal for a low-footprint, low-overhead JIT compiler.
 <li>
 <li>
 More <b>optimizations</b> will be added in parallel to the last step on
 More <b>optimizations</b> will be added in parallel to the last step on
 an as-needed basis. Sinking of stores
 an as-needed basis. Sinking of stores
-to aggregates and sinking of allocations are high on the list. Faster
-handling of NEWREF and better alias analysis are desirable, too. More
-complex optimizations with less pay-off, such as value-range-propagation
+to aggregates and sinking of allocations are high on the list.
+More complex optimizations with less pay-off, such as value-range-propagation
 (VRP) will have to wait.
 (VRP) will have to wait.
 </li>
 </li>
 <li>
 <li>
 LuaJIT 2.0 has been designed with <b>portability</b> in mind.
 LuaJIT 2.0 has been designed with <b>portability</b> in mind.
 Nonetheless, it compiles to native code and needs to be adapted to each
 Nonetheless, it compiles to native code and needs to be adapted to each
-architecture. Porting the compiler backend is probably the easier task,
-but a key element of its design is the fast interpreter, written in
-machine-specific assembler.<br>
-An x64 port is already available, thanks to the
+architecture. The two major work items are porting the the fast interpreter,
+which is written in assembler, and porting the compiler backend.
+Most other portability issues like endianess or 32 vs. 64&nbsp;bit CPUs
+have already been taken care of.<br>
+Several ports are already available, thanks to the
 <a href="sponsors.html">LuaJIT sponsorship program</a>.
 <a href="sponsors.html">LuaJIT sponsorship program</a>.
-Other ports will follow &mdash; companies which are
+More ports will follow in the future &mdash; companies which are
 interested in sponsoring a port to a particular architecture, please
 interested in sponsoring a port to a particular architecture, please
 use the given contact address.
 use the given contact address.
 </li>
 </li>
@@ -230,9 +231,10 @@ for efficient <b>vectorization</b>.
 Currently Lua is missing a standard library for access to <b>structured
 Currently Lua is missing a standard library for access to <b>structured
 binary data</b> and <b>arrays/buffers</b> holding low-level data types.
 binary data</b> and <b>arrays/buffers</b> holding low-level data types.
 Allowing calls to arbitrary C functions (<b>FFI</b>) would obviate the
 Allowing calls to arbitrary C functions (<b>FFI</b>) would obviate the
-need to write manual bindings. A variety of extension modules is floating
-around, with different scope and capabilities. Alas, none of them has been
-designed with a JIT compiler in mind.
+need to write manual bindings. A variety of Lua extension modules are
+available, with different scope and capabilities. Alas, none of them has been
+designed with a JIT compiler in mind. An FFI for LuaJIT is currently
+in the design phase, but there's no ETA, yet.
 </li>
 </li>
 </ul>
 </ul>
 <br class="flush">
 <br class="flush">

+ 2 - 0
src/Makefile

@@ -1,6 +1,8 @@
 ##############################################################################
 ##############################################################################
 # LuaJIT Makefile. Requires GNU Make.
 # LuaJIT Makefile. Requires GNU Make.
 #
 #
+# Please read doc/install.html before changing any variables!
+#
 # Suitable for POSIX platforms (Linux, *BSD, OSX etc.).
 # Suitable for POSIX platforms (Linux, *BSD, OSX etc.).
 # Also works with MinGW and Cygwin on Windows.
 # Also works with MinGW and Cygwin on Windows.
 # Please check msvcbuild.bat for building with MSVC on Windows.
 # Please check msvcbuild.bat for building with MSVC on Windows.

+ 1 - 1
src/ljamalg.c

@@ -6,7 +6,7 @@
 /*
 /*
 +--------------------------------------------------------------------------+
 +--------------------------------------------------------------------------+
 | WARNING: Compiling the amalgamation needs a lot of virtual memory        |
 | WARNING: Compiling the amalgamation needs a lot of virtual memory        |
-| (around 160 MB with GCC 4.x)! If you don't have enough physical memory   |
+| (around 200 MB with GCC 4.x)! If you don't have enough physical memory   |
 | your machine will start swapping to disk and the compile will not finish |
 | your machine will start swapping to disk and the compile will not finish |
 | within a reasonable amount of time.                                      |
 | within a reasonable amount of time.                                      |
 | So either compile on a bigger machine or use the non-amalgamated build.  |
 | So either compile on a bigger machine or use the non-amalgamated build.  |