[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: LuaJIT release plan (was: 5.1 beta problem linking luac against .so)
- From: Mike Pall <mikelu-0511@...>
- Date: Wed, 23 Nov 2005 21:38:39 +0100
Adam D. Moss wrote:
> On a tangent, Mike, are you waiting for the final 5.1 release
> before issuing a LuaJIT update? With the Coco/old-glibc problem
> avoided I was very impressed at the stability of LuaJIT 1.0.3
> and was hoping to make it my 'standard' Lua for developing
> against before too long.
I had to stop working on LuaJIT for the past weeks. I'm not sure
when I can continue working on 1.0.4. There's still a lot to be
done before I can release it (it's broken for many corner cases
right now). This is more or less independent of the Lua release
Here's the incomplete changelog to whet your appetite:
- Faster loads of FP constants. Remove narrow-to-wide store-to-load
- C stack is kept 16 byte aligned (mandatory for Mac OS X/x86).
[Regression: slower for deeply recursive calls (ackermann, takfp).]
- Improved hinting for table keys derived from table values (t1[t2[x]]).
- Lookup hinting now works with arbitrary object types and
supports chained lookups, too (__index).
- Use adaptive deoptimization for uncommon fallback cases. If
runtime verification for a hint fails, the function is
recompiled on-the-fly (instead of encoding the fallback case).
Regular programs will hardly ever trigger deoptimization.
- The trace module prints a notice about deoptimization.
- Deoptimize calls with a type mismatch or a mismatch for an
- Inlined OP_MOD (%). With better accuracy than the C variant, too.
- Inlined most math.* functions.
- Inlined string.len and string.sub.
[Some benchmarks (random, nsievebits, fasta, nbody, fannkuch)
already run between 30%-100% faster than with 1.0.3.]
- Change function prologue to cope with 5.1-beta modifications.
- Fix all corner cases having to do with inlining.
- Inline pairs and ipairs iterators.
- Inline some of the base library functions.
- Inline table.insert and table.remove.
- Inline more string functions (main problem: libc NLS macros).
- Inline coroutine.yield and maybe coroutine.resume.
- Maybe inline OP_CONCAT for some common cases.
- Shortcut recursive calls to JIT compiled functions.
- Partially inline the C callgate. Maybe remove closure callgates.
- Stack frame reorganization.
- Combine MOVE/GETUPVAL with CALL/TAILCALL.
- Smoother fallback to partial deoptimization.
- Lots of doc updates.
- Update to new set of benchmarks.
- Plus many long term goals (new optimizer, better integer opts,
profiling support etc.).
But you know ... I'd rather work full time on LuaJIT than do
other things ... I have so many more ideas ...