v. vanilla 2.0
THE VANILLA HANDBOOK / 2.0

Your first Vanilla program

From a blank file to a working script.

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