Risa is an embeddable scripting language created by UW, heavily inspired by Lua. Risa's compiler and virtual machine are implemented in standard C99.
Risa's power comes from native functions: the user can extend the standard library by registering their own functions. These functions may be implemented in any language that can interact with C (such as C#). This makes Risa work in many circumstances.
Risa is similar to Lua: it's not designed for performance-critical projects. Rather, it's designed for contexts where a simple language is enough:
Unlike Lua however, Risa's implementation isn't as clean and is not designed to run on hardware with limited resources (e.g. kilobytes of ram). It may be possible to adapt the virtual machine to work in this context, but it's not designed for that.
A risa script is first compiled into bytecode, which is then executed by the risa virtual machine. The compiler is single-pass and does optimizations on the fly. The VM is register-based and uses fixed-width instructions (4 bytes) for simplicity. Risa features a simple stop-the-world tracing garbage collector.
UW has mixed feelings about Risa. Since he's the creator of the language, he knows all of the quirks and limits of the implementation.
The VM features 250 registers (which is by no means ideal) which live on the stack. The compiler tries to allocate the registers as efficiently as possible. However, if more than 250 registers are needed, the compiler emits an error since it doesn't support spilling. This limit is very unlikely to be reached in the contexts for which Risa is designed (nobody needs 250 local variables in a small script).
Risa is used in various projects. Currently, the most relevant is: