Skip to content

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

Pre-release
Pre-release
Compare
Choose a tag to compare
@dibyendumajumdar dibyendumajumdar released this 16 Feb 23:17
· 1469 commits to master since this release

The principal changes in this release are:

  • The on request JIT compilation has been enhanced to accept a table; when a table of Lua functions is supplied, the generated code is put into the same LLVM Module (translation unit) rather than separate modules for each function. Each function maintains a reference to the LLVM module via a reference counted pointer - so when the last function is garbage collected the module will be released. This approach should result in less memory usage and also opens the door for other optimizations within the module.
  • The Lua 5.3.2 bug fixes have been applied.

Build Info

  • On Windows this release was tested against LLVM 3.7.1, 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.