kanji (which translates in English as "x1 computes x2 from data x3 by process x4") is a forth-like scripting language that is intended to be used as a target for transpiling higher level interpreted languages.
It may be useful in the early stages of language development if you want to have a running (albeit not final) implementation of your language while still working on the syntax/semantic aspects. Should the perfomance prove themselves adequate to your use case, nothing prevents you to use it as the final run-time.
It's a simple Forth-like VM with 26 variables, and a stack. Each value (hold in a register or in the stack) can be:
- a 32 bit signed integer
- a double precision floating point
- a 48 bit pointer (good for 64-bit platforms)
- a boolean (true/false)
- the value nil
- a static string
- a vector of values
- a dynamic buffer (for text)
- a map from values to values
It can access external C functions (with the proper interface) and its code can be "called" from C functions.
You can check what is planned/in progress/done on the project kanban page.
I really welcome any question, suggestion, and help offer you may have. Join the channel to discuss about them.