Skip to content

Small language. Clear boundaries.

Your application.
Their scripts.
Your rules.

HollowScript is a small, statically typed language built to live inside your application. Give scripts the capabilities they need, with boundaries you control.

Public preview Apple Silicon macOS

hello.hwsHollowScript
uses print

fn greet(name: String): String {
    return "Hello, ${name}"
}

constant message = greet("HollowScript")

effect print(message)

Example output

Hello, HollowScript
A real program, illustrated. Run your first .hws file
Built to embedStatically typedCapability basedA closer look

Small and embeddable

No garbage-collector tuning, no ambient authority. A language designed to live inside a host application, with a specification you can read end to end.

Clarity before execution

Every expression has a type known before the program runs. Optionals, records, enums, generics and Result make the shape of your program explicit.

You set the boundaries

A script can only print, open a file or reach the network when the host grants the capability and the script declares it with uses.

uses print
record Task = { title: String, priority: Int, done: Bool }
fn describe(t: Task): String {
if t.done {
return "${t.title}: done"
}
return "${t.title}: priority ${t.priority}"
}
constant tasks: [Task] = [
{ title: "Write the parser", priority: 1, done: false },
{ title: "Freeze the spec", priority: 1, done: true }
]
for t in tasks {
effect print(describe(t))
}

Output:

Write the parser: priority 1
Freeze the spec: done

HollowScript™ is a trademark of Soulstack. See the trademark policy.

A Soulstack product