Skip to content

Ravi (a Lua 5.3 dialect) Alpha Release 0.12 with LLVM and libgccjit JIT compilation support

Pre-release
Pre-release
Compare
Choose a tag to compare
@dibyendumajumdar dibyendumajumdar released this 04 Dec 23:06
· 1508 commits to master since this release

In 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.