lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Hi,

I previously posted that I am working on an experimental derivative of
Lua which I have named Ravi.  Ravi will be a dialect of Lua with
optional static typing.

http://lua-users.org/lists/lua-l/2015-01/msg00548.html

As I reported earlier I found that adding specialized bytecodes did
not improve performance significantly, as the interpreter branching is
a big overhead.

So for the past few weeks I have been working on implementing a JIT
compiler using LLVM. So far I have implemented only a few Opcodes:
OP_LOADK, OP_RETURN, OP_JMP, OP_LT, OP_LE, OP_EQ. I am currently
working on OP_FORPREP and OP_FORLOOP.

I do not have a timescale for when I will complete implementing all
opcodes - but my hope is to try to get this done by Q2 2015. As I am
learning LLVM along the way it is a slow journey.

At present the JIT compilation is invoked when a function is called
via OP_CALL. The compilation itself takes time - so this is not the
best way to do it. Ideally I want the JIT compilation to be a user
invoked function.

I posted a few days ago that I would be happy to specify an API to
attach a JIT compiler to Lua. I am still hoping this will be of
interest, as an optional JIT compiler for Lua will be an asset I
think.

As I work on Ravi I am documenting its design and implementation. The
latest docs can always be found at:

http://the-ravi-programming-language.readthedocs.org/en/latest/index.html

I will post an update on how this is progressing in 2 weeks or so.

Regards

Dibyendu