|Pavel R. 7adbc171f6||2 years ago|
|.devcontainer||2 years ago|
|.github/workflows||2 years ago|
|build-utils||2 years ago|
|docker/linux-ubuntu||2 years ago|
|include||2 years ago|
|mir||2 years ago|
|patches||2 years ago|
|ravicomp||2 years ago|
|readthedocs||2 years ago|
|src||2 years ago|
|tests||2 years ago|
|vscode-debugger||2 years ago|
|.clang-format||4 years ago|
|.gitignore||3 years ago|
|.gitmodules||5 years ago|
|.travis.yml||2 years ago|
|CMakeLists.txt||2 years ago|
|LICENSE||3 years ago|
|Makefile||2 years ago|
|README.md||2 years ago|
|lua-config.cmake.in||3 years ago|
|ravi-config.h.in||2 years ago|
|ravi-env.bat.in||3 years ago|
|ravi-env.linux.sh.in||3 years ago|
|ravi-env.osx.sh.in||3 years ago|
Ravi is a dialect of Lua with limited optional static typing and features MIR powered JIT compilers. The name Ravi comes from the Sanskrit word for the Sun. Interestingly a precursor to Lua was Sol which had support for static types; Sol means the Sun in Portugese.
Lua is perfect as a small embeddable dynamic language so why a derivative? Ravi extends Lua with static typing for improved performance when JIT compilation is enabled. However, the static typing is optional and therefore Lua programs are also valid Ravi programs.
My motivation is somewhat different - I want to enhance the VM to support more efficient operations when types are known. Type information can be exploited by JIT compilation technology to improve performance. At the same time, I want to keep the language safe and therefore usable by non-expert programmers.
Of course there is the fantastic LuaJIT implementation. Ravi has a different goal compared to LuaJIT. Ravi prioritizes ease of maintenance and support, language safety, and compatibility with Lua 5.3, over maximum performance. For more detailed comparison please refer to the documentation links below.
deferstatement for releasing resources
Lua 5.4 relationship to Ravi is as follows:
<const>variables - not planned.
<close>variables - Ravi has
'defer'statement which is the better option in my opinion, hence no plans to support
Ravi should be able to run all Lua 5.3 programs in interpreted mode, but following should be noted:
Limit name Lua value Ravi value
MAXUPVAL 255 125 LUAI_MAXCCALLS 200 125 MAXREGS 255 125 MAXVARS 200 125 MAXARGLINE 250 120
When JIT compilation is enabled there are following additional constraints: