drang
v0.4 · released

drang

Your agents write the glue. You can read it.

Reads like Ruby, thinks like Perl, runs like Go — a small, parallel scripting language for text, glue, and orchestration.

drang — Dutch/German for drive, urge, momentum.

# square the evens and sum them
$xs := [1, 2, 3, 4, 5, 6]

$xs |> filter(|$x| $x % 2 == 0)
    |> map(|$x| $x * $x)
    |> reduce(0, |$a, $b| $a + $b)   # 56

Why drang

Effortless parallelism

Change map to pmap and the work runs lock-free across every core — no GIL. Quick for an interpreter, and it scales when you need it.

Errors are values

Failures are ordinary values: ? propagates, // recovers. A dropped error is a deliberate choice, not an accident.

Perl's soul, not its warts

One $ sigil, string interpolation and heredocs, qr// regex literals, and |> pipelines.

Glue built in

run / capture / pipe with timeouts and process-tree kill, line streaming, channels, and a minimal HTTP client.

Batteries, curated

Modules, frozen immutability, ~120 builtins and a prelude, JSON & CSV, dates, hashing. Broad, not a kitchen sink.

One static binary

No runtime, no dependencies, fast startup. Format with drang fmt, test with drang test, ship with drang build.

Install

Grab a prebuilt binary for macOS, Linux, or Windows from the latest release — or build from source with Go:

go build -o drang ./cmd/drang