Ravi is a derivative/dialect of Lua with limited optional static typing and JIT/AOT compilers. The name Ravi comes from the Sanskrit word for the Sun.

Lua is perfect as a small embeddable dynamic language so why a derivative? Ravi extends Lua with static typing for greater performance under JIT compilation. However, the static typing is optional and therefore Lua 5.3 programs are also valid Ravi programs.

There are other attempts to add static typing to Lua (e.g. Typed Lua but these efforts are mostly about adding static type checks in the language while leaving the VM unmodified. So the static typing is to aid programming in the large - the code is eventually translated to standard Lua and executed in the unmodified Lua VM.

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.