SHE
v2.0 released Apache 2.0 Python 3.9+ zero dependencies

A language that
reads like English.

No braces. No boilerplate. No ceremony. And no ability to read your files, reach the network or start a process — until you grant it on the command line.

$ pip install she-lang
greeting.she
# everything you need to know, in nine lines
let name = ask "What is your name?"
say "Hello, {name}!"

let numbers = [4, 8, 15, 16, 23, 42]

say numbers
  |> filter(fun(n) -> n % 2 is 0)
  |> map(fun(n) -> n / 2)
  |> sum()

→ 45

Why another language

Most languages make you choose.
SHE refuses.

Readable or capable. Friendly or safe. A toy you outgrow in a week, or a professional tool with a month-long ramp. Those were never real trade-offs.

01

You can read it out loud

Blocks end with end. Comparisons use is. Loops say for each item in items. Someone who has never programmed can follow a SHE file — and it still fits on one screen.

02
🔒

It has no power by default

A program cannot read a file, open a socket or start a process until you say so on the command line. Not a linter rule — the runtime enforces it, every call.

03

The errors teach

Every message points at the exact source, explains the problem in plain words, and suggests the fix. Misspell a name and it tells you which one you meant.

The part that matters

Permission is a
command-line decision.

Every other scripting language hands a downloaded script the full authority of whoever ran it. SHE hands it nothing. You grant exactly what the job needs, and the runtime refuses everything else — with a message naming the flag that would have allowed it.

--allow-read=./data --allow-write --allow-net=api.stripe.com --allow-run --allow-env --max-steps=1000000 --timeout=30

How the sandbox works →

she run report.she PermissionError: report.she tried to read files from disk (~/.ssh/id_rsa), but was not given permission --> report.she:14:13 | 14 | let key = fs.read("~/.ssh/id_rsa") | ^^^^^^^ help: run it with `--allow-read=~/.ssh/id_rsa` to permit this, or `--allow-all` while you are developing. she run report.she --allow-read=./data read 1,248 rows from data/sales.csv wrote nothing, reached nothing
Read the flags, know the blast radius. Reviewing a SHE script for safety starts with one line of the command that runs it.

No install required

Run SHE right here.

This is the real interpreter, compiled to WebAssembly and running in your browser. Nothing is sent anywhere. Press Run, or Ctrl+Enter.

idle
Press Run to start. The first run downloads the interpreter — about ten seconds, once.

A tour

Everything a modern language has.

Pattern matching, gradual types, closures, destructuring, pipelines, async, modules and a test runner. None of it optional extras — all of it in the box.

basics.she
let pi = 3.14159        # named once, never changes
var count = 0           # this one can
count += 1

if age >= 18
  say "you can vote"
else if age >= 16
  say "nearly there"
else
  say "not yet"
end

for each n in 1..10 by 2
  say "{n} squared is {n ^ 2}"
end

repeat
  tries += 1
until tries >= 3

let [first, second, ...rest] = numbers   # destructuring
let nickname = user?.profile?.name ?? "friend"

The whole surface

Nothing you would have to go and find.

valuesnumbers, text, booleans, nothing, lists, maps, ranges, functions, your own types
textinterpolation "hi {name}", triple-quoted blocks, raw r"...", forty text functions
control flowif / else if / else, while, repeat until, for each, break, skip
functionsdefaults, named arguments, rest ...args, spread, closures, lambdas, recursion
typestype X has a, b, methods, inheritance, setup and to_text hooks
pattern matchingliterals, ranges, or-patterns, guards, list and map destructuring, type patterns
errorstry / catch / finally, throw, catch by kind, assert
gradual typinglet n: number, parameter and return types, unions — checked at runtime, never required
concurrencyasync fun, await, awaiting a whole list of tasks
modulesimport math, from math import sqrt, use "./helpers.she" as helpers
modern sugarpipelines |>, safe navigation ?., defaults ??, methods on every value
standard librarytext, list, maps, math, json, re, time, random, csv, crypto, fs, http, os, web
securitycapability sandbox, step and time budgets, hashing, HMAC, password storage, tokens
toolingREPL, formatter, test runner, project scaffolder, doc browser, language server

Built in

Two libraries, first class.

Not bindings you install and wire up. Ordinary SHE modules, documented alongside the rest.

🕐

crypto — Kaalka

Encryption whose key is a moment in time.

import crypto

let sealed = crypto.seal("meet at the bridge", "14:35:22")
say crypto.open(sealed, "14:35:22")

# envelopes carry sender, recipient and a checksum
let packet = crypto.envelope(msg, "ada", "bob")
say crypto.open_envelope(packet, "bob")
Said plainly: Kaalka is a novel construction that has not been through public cryptanalysis. Use it for time-keyed handoff, puzzles and teaching. For secrets that matter, the same module gives you hash, hmac, password_hash and token over vetted primitives.

Kaalka on GitHub →

web — WebWeaveX

Turn a live app, a repository or a document into a deterministic graph.

import web

let graph = web.extract("https://example.com", "web")
say "{web.nodes(graph).length} nodes"
say "{web.edges(graph).length} connections"

# the same input always gives the same identity
say web.fingerprint(graph)
Because extraction is deterministic, two runs of the same thing produce the same fingerprint — so a diff of two graphs is a diff of what actually changed.

WebWeaveX on GitHub →

Who it is for

One language, four honest answers.

Never programmed

The errors are written for you. Nothing you run can damage anything. Start at example one and you are writing real programs the same afternoon.

Students

Recursion, closures, pattern matching, types, concurrency — every idea you will be taught, with no build system standing in the way.

Developers

Pipelines, destructuring, gradual types, a formatter, a test runner and an LSP. One pip install and the toolchain is there.

Security & teams

Run untrusted code with a step budget and no authority. Ship scripts whose reach is declared on the command line and enforced by the runtime.

Get started

Sixty seconds
to your first program.

No toolchain, no compiler, no configuration file. If you have Python 3.9 or newer, you already have everything SHE needs.

macOSLinux Windowsbrowser

Read the docs →

pip install she-lang Successfully installed she-lang-2.0.0 she new my-project created my-project/ cd my-project she run main.she cd my-project && she run main.she Hello, world! Hello, my-project! the even ones add up to 6 she test ok greeting says hello 1 passed, 0 failed, 1 total she SHE 2.0.0 — type :help for help she> [1,2,3] |> sum() 6

SHE is free, and built in the open.

Apache 2.0, no telemetry, no paid tier, no catch. If it saved you time, taught you something, or you just want to see it keep going — a coffee helps more than you would think. Starring the repo costs nothing and helps just as much.