Ravi (a Lua 5.3 dialect) Alpha Release 0.12 with LLVM and libgccjit JIT compilation support
Pre-releaseIn this release there are following changes:
-
Lua 5.3.2 updates have been merged
-
It is now possible to annotate local variables and function parameters as 'table' type. This helps the compiler generate specialized bytecodes when the key is known to be an integer or a string literal. As a result the JIT code generator is able to generate more efficient code. There are no benchmarks as yet to assess the performance improvements.
A bug related to metamethods (issue #73) was fixed in this release
-
A bug in api for creating slices was fixed (issue #75).
-
The name of the executable was changed to 'ravi' (issue #69).
-
The libraries are now installed in 'lib' folder (issue #68).
-
The headers are now installed in 'include/ravi' folder to avoid conflicts with Lua headers (issue #66)
Build Info
- On Windows this release was tested against LLVM 3.7.0, in 64-bit and 32-bit mode. The Windows builds have known issues as stated below.
- On Linux the build was tested against LLVM 3.7.0 and libgccjit 5.2.
- On Mac OSX the build was tested against LLVM 3.7.0.
Known Issues
Please refer to the logged issues for known problems. In particular on Windows platforms the 64-bit JIT code does not handle longjmp/setjmp reliably due to limitations in LLVM 64-bit code generation on Windows. For details please refer to issue #30. As a workaround I am supplying 32-bit binaries for the Windows platform until the issue is resolved.
The 32-bit build on Windows fails to correctly perform bitwise operations when statically typed local variables are used (issue #74).
Please also refer to the Ravi documentation for a list of known differences between JIT mode and interpreted mode, and compatibility with Lua 5.3.