A small language. An explicit workflow.
Vanilla 2.0 is the current public identity of this C++17-based command scripting language. The working interpreter is still named vanilla1. Commands are case-sensitive, with one instruction per physical line.
1. Create hello.v
function main 0
var name
set $name "World"
print "Hello, " $name "!\n"
kill main
function main 0 declares the entry point. var declares local storage; $name reads or writes it. print concatenates its operands without adding spaces or a newline. kill main closes the function—it does not terminate a process.
2. Run the interpreter
From an existing project checkout with a built interpreter:
./build/vanilla1 run hello.v
Expected output:
Hello, World!
This website documents the native interpreter, not a browser runtime. See Build & tooling for dependencies and build commands. There is no public installer or package-registry release linked here.
3. Calculate instead of concatenating
function main 0
var total
math $total 12 * 3 + 6
print "Total: " $total "\n"
kill main
set joins text; math evaluates numeric expressions. Declare the destination before either command.
4. Give scripts only the capabilities they need
./build/vanilla1 --max-steps 100000 run hello.v
./build/vanilla1 --allow-files run file-task.v
./build/vanilla1 --allow-db run database-task.v
These are feature gates, not a sandbox. Scripts can still read their source/includes and inherited environment. Do not execute unknown scripts with sensitive credentials.
Where to go next
- Writing code: functions, loops, values and recoverable errors.
- Examples: runnable scripts and exact outputs.
- Language reference: full command syntax.