A small language with a clear boundary

Tiny scripts.
Solid C++.

Thimble is a header-only scripting language for C++17. Give your application small rules and automation hooks without bringing a whole runtime along.

Header-only C++17 Standard library only
hello.thimble
fn greet(name) {
    return "Hello, " + name;
}

let message = greet(user_name);
emit(message);

return null;

Keep the boundary clear

Useful scripting without the surprise baggage.

Thimble gives the script only what the host chooses to bind. Files, network, process access and other capabilities stay outside by default.

01

Small by design

Five runtime types, lexical scope, functions and the control flow needed for real application rules.

02

Host decides

Bind C++ values and callbacks explicitly. A script cannot discover capabilities on its own.

03

Bounded runs

Structured diagnostics, execution-step limits and call-depth limits make embedding easier to reason about.

Readable at a glance

A little language for the little jobs.

Use a script for policy, configuration rules, menu logic, validation or an automation hook. Compile once and execute again with fresh host values.

See the C++ binding →
rule.thimble
var score = initial_score;
var tries = 0;

while (tries < max_tries) {
    if (score >= passing_score) {
        return "accepted";
    }
    score = score + retry_bonus;
    tries = tries + 1;
}

return "review";

The first release

Just enough language.

No implicit conversions. No hidden global state. No object system to learn before writing the first rule.

Valuesnull · bool · int · real · string
Flowif · else · while · return
Bindingslet · var · lexical scope
Operatorsarithmetic · comparison · logical
EmbeddingC++ values · functions · fresh runs
Safetyerrors with locations · step limits · depth limits

Ready when you are

Put a small script where a large system feels heavy.

Read the specification, include the single generated header, and bind only the values your application wants to share.