diff options
| author | Mike Pall <mike> | 2012-10-14 21:48:04 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2012-10-14 21:48:04 +0200 |
| commit | d70d77549b397a8b9ebeed199f32e7827214c00b (patch) | |
| tree | 9337bcd70521cf80f1e39971abe2e0efc32082ef /doc/extensions.html | |
| parent | a0ee70de6de0ade39de17b5678b23bf311d20d9e (diff) | |
| download | luajit-d70d77549b397a8b9ebeed199f32e7827214c00b.tar.gz luajit-d70d77549b397a8b9ebeed199f32e7827214c00b.tar.bz2 luajit-d70d77549b397a8b9ebeed199f32e7827214c00b.zip | |
Documentation cleanup and reorganization.
Diffstat (limited to 'doc/extensions.html')
| -rw-r--r-- | doc/extensions.html | 70 |
1 files changed, 67 insertions, 3 deletions
diff --git a/doc/extensions.html b/doc/extensions.html index a5baf11c..0679921a 100644 --- a/doc/extensions.html +++ b/doc/extensions.html | |||
| @@ -37,6 +37,8 @@ td.excinterop { | |||
| 37 | <ul><li> | 37 | <ul><li> |
| 38 | <a href="luajit.html">LuaJIT</a> | 38 | <a href="luajit.html">LuaJIT</a> |
| 39 | <ul><li> | 39 | <ul><li> |
| 40 | <a href="http://luajit.org/download.html">Download <span class="ext">»</span></a> | ||
| 41 | </li><li> | ||
| 40 | <a href="install.html">Installation</a> | 42 | <a href="install.html">Installation</a> |
| 41 | </li><li> | 43 | </li><li> |
| 42 | <a href="running.html">Running</a> | 44 | <a href="running.html">Running</a> |
| @@ -67,8 +69,6 @@ td.excinterop { | |||
| 67 | </li><li> | 69 | </li><li> |
| 68 | <a href="http://luajit.org/performance.html">Performance <span class="ext">»</span></a> | 70 | <a href="http://luajit.org/performance.html">Performance <span class="ext">»</span></a> |
| 69 | </li><li> | 71 | </li><li> |
| 70 | <a href="http://luajit.org/download.html">Download <span class="ext">»</span></a> | ||
| 71 | </li><li> | ||
| 72 | <a href="http://wiki.luajit.org/">Wiki <span class="ext">»</span></a> | 72 | <a href="http://wiki.luajit.org/">Wiki <span class="ext">»</span></a> |
| 73 | </li><li> | 73 | </li><li> |
| 74 | <a href="http://luajit.org/list.html">Mailing List <span class="ext">»</span></a> | 74 | <a href="http://luajit.org/list.html">Mailing List <span class="ext">»</span></a> |
| @@ -90,7 +90,7 @@ or LuaJIT. | |||
| 90 | </p> | 90 | </p> |
| 91 | <p> | 91 | <p> |
| 92 | LuaJIT extends the standard Lua VM with new functionality and adds | 92 | LuaJIT extends the standard Lua VM with new functionality and adds |
| 93 | several extension modules. Please note that this page is only about | 93 | several extension modules. Please note this page is only about |
| 94 | <em>functional</em> enhancements and not about performance enhancements, | 94 | <em>functional</em> enhancements and not about performance enhancements, |
| 95 | such as the optimized VM, the faster interpreter or the JIT compiler. | 95 | such as the optimized VM, the faster interpreter or the JIT compiler. |
| 96 | </p> | 96 | </p> |
| @@ -236,6 +236,70 @@ across arbitrary C functions. Keep this in mind when | |||
| 236 | upgrading from LuaJIT 1.x. | 236 | upgrading from LuaJIT 1.x. |
| 237 | </p> | 237 | </p> |
| 238 | 238 | ||
| 239 | <h2 id="lua52">Extensions from Lua 5.2</h2> | ||
| 240 | <p> | ||
| 241 | LuaJIT supports some language and library extensions from Lua 5.2. | ||
| 242 | Features that are unlikely to break existing code are unconditionally | ||
| 243 | enabled: | ||
| 244 | </p> | ||
| 245 | <ul> | ||
| 246 | <li><tt>goto</tt> and <tt>::labels::</tt>.</li> | ||
| 247 | <li>Hex escapes <tt>'\x3F'</tt> and <tt>'\*'</tt> escape in strings.</li> | ||
| 248 | <li><tt>load(string|reader, chunkname [,mode [,env]])</tt>. | ||
| 249 | <tt>loadstring()</tt> is an alias.</li> | ||
| 250 | <li><tt>math.log(x [,base])</tt>. | ||
| 251 | <li><tt>string.rep(s, n [,sep])</tt>. | ||
| 252 | <li><tt>string.format()</tt>: <tt>%q</tt> reversible. | ||
| 253 | <tt>%s</tt> checks <tt>__tostring</tt>. | ||
| 254 | <tt>%a</tt> and <tt>"%A</tt> added.</li> | ||
| 255 | <li>String matching pattern <tt>%g</tt> added.</li> | ||
| 256 | <li><tt>io.read("*L")</tt>.</li> | ||
| 257 | <li><tt>io.lines()</tt> and <tt>file:lines()</tt> process | ||
| 258 | <tt>io.read()</tt> options.</li> | ||
| 259 | <li><tt>os.exit(status|true|false [,close])</tt>.</li> | ||
| 260 | <li><tt>package.searchpath(name, path [, sep [, rep]])</tt>.</li> | ||
| 261 | <li><tt>package.loadlib(name, "*")</tt>.</li> | ||
| 262 | <li><tt>debug.getinfo()</tt> returns <tt>nparams</tt> and <tt>isvararg</tt> | ||
| 263 | for option <tt>"u"</tt>.</li> | ||
| 264 | <li><tt>debug.getlocal()</tt> accepts function instead of level.</li> | ||
| 265 | <li><tt>debug.getlocal()</tt> and <tt>debug.setlocal()</tt> accept negative | ||
| 266 | indexes for varargs.</li> | ||
| 267 | <li><tt>debug.getupvalue()</tt> and <tt>debug.setupvalue()</tt> handle | ||
| 268 | C functions.</li> | ||
| 269 | <li><tt>debug.upvalueid()</tt> and <tt>debug.upvaluejoin()</tt>.</li> | ||
| 270 | <li>Command line option <tt>-E</tt>.</li> | ||
| 271 | <li>Command line checks <tt>__tostring</tt> for errors.</li> | ||
| 272 | </ul> | ||
| 273 | <p> | ||
| 274 | Other features are only enabled, if LuaJIT is built with | ||
| 275 | <tt>-DLUAJIT_ENABLE_LUA52COMPAT</tt>: | ||
| 276 | </p> | ||
| 277 | <ul> | ||
| 278 | <li><tt>goto</tt> is a keyword and not a valid variable name anymore.</li> | ||
| 279 | <li><tt>break</tt> can be placed anywhere. Empty statements (<tt>;;</tt>) | ||
| 280 | are allowed.</li> | ||
| 281 | <li><tt>__lt</tt>, <tt>__le</tt> are invoked for mixed types.</li> | ||
| 282 | <li><tt>__len</tt> for tables. <tt>rawlen()</tt> library function.</li> | ||
| 283 | <li><tt>pairs()</tt> and <tt>ipairs()</tt> check for <tt>__pairs</tt> and | ||
| 284 | <tt>__ipairs</tt>.</li> | ||
| 285 | <li><tt>coroutine.running()</tt> returns two results.</li> | ||
| 286 | <li><tt>table.pack()</tt> and <tt>table.unpack()</tt> | ||
| 287 | (same as <tt>unpack()</tt>).</li> | ||
| 288 | <li><tt>io.write()</tt> and <tt>file:write()</tt> return file handle | ||
| 289 | instead of <tt>true</tt>.</li> | ||
| 290 | <li><tt>os.execute()</tt> and <tt>pipe:close()</tt> return detailed | ||
| 291 | exit status.</li> | ||
| 292 | <li><tt>debug.setmetatable()</tt> returns object.</li> | ||
| 293 | <li><tt>debug.getuservalue()</tt> and <tt>debug.setuservalue()</tt>.</li> | ||
| 294 | <li>Remove <tt>math.mod()</tt>, <tt>string.gfind()</tt>. | ||
| 295 | </ul> | ||
| 296 | <p> | ||
| 297 | Note: this provides only partial compatibility with Lua 5.2 at the | ||
| 298 | language and Lua library level. LuaJIT is API+ABI-compatible with | ||
| 299 | Lua 5.1, which prevents implementing features that would otherwise | ||
| 300 | break the Lua/C API and ABI (e.g. <tt>_ENV</tt>). | ||
| 301 | </p> | ||
| 302 | |||
| 239 | <h2 id="exceptions">C++ Exception Interoperability</h2> | 303 | <h2 id="exceptions">C++ Exception Interoperability</h2> |
| 240 | <p> | 304 | <p> |
| 241 | LuaJIT has built-in support for interoperating with C++ exceptions. | 305 | LuaJIT has built-in support for interoperating with C++ exceptions. |
