A programming language. Allegedly.

emd: emotional damage

emotional damage

AI loves em dashes.
We made them executable.

A formally specified, deliberately unreadable programming
language written entirely in Unicode dashes.

No keywords. No identifiers. No mercy.

Looks like punctuation.Unfortunately, it runs.
THE LANGUAGE

Eight dashes.
An unreasonable amount
of commitment.

All programming languages have their quirks. Ours are indistinguishable.

Two symbols make an instruction. One wrong code point makes a very different afternoon.

Em dash / U+2014The reason we are all here.

32instructions.
Zero helpful names.

64possible pairs.
32 ways to be wrong.

0spaces allowed.
Not even at the end.

32 code points per line. Break anywhere, even inside an instruction. Every newline disappears before decoding. The layout means nothing ↗

SEE IT RUN

Yes, this is code.
We checked.

A tiny instruction walkthrough.
Four instructions. Eight characters.
One deeply unnecessary way to get three.

a perfectly normal program.emdUTF-8
Same code. Less personal space.
-‐-‑‑-–‒

One instruction per pair. Room to think.

stack [ ]Ready to make a point.

Same energy as 1 + 2. Considerably more Unicode. Your turn →

HELLO, WORLD. GOODBYE, READABILITY.

A familiar greeting.
An unfamiliar feeling.

This is the actual Hello World program.
Not a texture. Not a corrupted font.

Download the damage ↧
-‐-−‑‑-‒‑--−‑‑-‑‑-—‐-‑-−‑‑-−‑‑-‒ ‑-—‐-‑-−‑‑-‐‑--−‑‑-‒‑-—‐-‑-−‑‑-‐ ‑--−‑‑-‒‑-—‐-‑-−‑‑-‐‑--−‑‑-―‑-—‐ -―-−‑‑-‑‑-—‐-–-−‑‑-–‑-—‐-‑-−‑‑-‒ ‑--−‑‑—‐-‑-−‑‑-‐‑--−‑‑-―‑-—‐-‑-− ‑‑-‑‑--−‑‑-‑‑-—‐-‑-−‑‑-‐‑--−‑‑-‒ ‑-—‐-‑-−‑‑-−‑‑-‑‑-—‐-–-−‑‑-—‑-—‐ -‐-−‑‑-‒‑-—‐–‒
stdoutHello, world!
THE TOOLCHAIN

Unreasonable syntax.
Reasonable tools.

An analyzer, a debugger that goes backward, a C backend and a Neovim studio.

Unfortunately, we kept building.

Also: profiles, control-flow graphs, a program reducer and emd slop, which tries to run the dashes hiding in your prose.

THE SERIOUS BIT

A bad idea.
Precisely specified.

The joke is the syntax.
The specification is quite serious.

A semi-serious language. Two papers.
We have put the questionable decisions in writing.

MAKE QUESTIONABLE CHOICES

Your terminal deserves
a little emotional damage.

Prefer a prebuilt CLI? Check releases for Linux, macOS and Windows ↗. Packages include examples and the manual.

From a local checkout of the emd repository, with Rust installed:

cargo install --path crates/emd-cli
$ emd run examples/hello.emdTake it from the top ↗

THE ENABLERS

Backed by people
who hate em dashes.

Both of them are also me. This is a very independent operation.