vision

@june

A programming language that reads like plain sentences. Compiles to C.

CVisZigLYPython

v0.3.0 · 61 saves · 11,525 lines · updated 17 hours ago · trusted

61 saves
89 files ⇓ bundle
61 saves
80cd68dae284add then concatenation (§1.13 Part 4): <text> then <text> joins (associative chain), owned result freed; plus on text now a clear error pointing at interpolation/then (was a silent char* miscompile); then on a number points at as text; vis_concat; 1346/1346, oracle 1/1, ASan-clean — text-construction keystone COMPLETEdev17 hours ago
3666b99ca324add slicing + membership (§1.13 Part 2): 1-based inclusive the first/last n letters of, letters from onward/to of (over-length saturates); starts with/ends with/contains; hash-split differential proves the first 2 letters + letters 3 onward == Zig hash[0..2]/hash[2..] bit-identical; %expect 1 documents the benign dangling-of; 1330/1330, oracle 1/1, ASan-cleandev17 hours ago
231a1aa64169add interpolation (§1.13 Part 1): template strings with holes holding any expr — §1.12 inherited inside holes by construction (hole bodies scan as CODE, pushed as sealed sub-levels; identical teaching error to a bare line); numbers free, {{ }} literal, bytes-in-hole rejected, world-prim-in-hole lifts >>; vis_interp builder, owned text freed; objects/{the prefix}/{the rest} proven exact in text_probe oracle; 1294/1294, oracle 1/1, ASan-cleandev17 hours ago
77c1b4246206add number↔text (§1.13 Part 3): exact locale-independent <number> as text (whole via %lld, decimal via shortest round-trip at runtime precision) + fallible <text> as a number giving; §1.12 inherited inside as-text; +28 text tests, 1266/1266dev18 hours ago
details

Repo description (the one-line tagline)

A programming language that reads like plain sentences. Compiles to C.



README.md

Vision

A small systems programming language that reads like plain sentences.

Vision is built on one idea: code should be legible. Not clever, not terse — legible. The kind of thing you can read a year later, or hand to someone who's never seen it, and still understand. It spells things out in words instead of symbols, marks the lines that do something dangerous, refuses to let a failure go unhandled, and compiles down to plain C. It's new, it's mine, and it's built in the open.

Here's a whole program:

to begin:
    say "hello"

to begin: is the entry point. say writes a line. Indentation makes the block — no braces, no semicolons, no ceremony. That's real Vision; it compiles and runs.

What it looks like

A verb that takes inputs and gives something back:

to greet, given a name:
    answer "hello, {name} — good to see you"

Text is built by writing it out, with values dropped into the holes. Numbers go in the same way, no conversion:

to describe a basket, given the count:
    answer "you have {the count} items, {the count} too many"

A loop over a list, doing real work:

to total the prices, given the prices:
    the running total is 0
    for each price in the prices:
        the running total is the running total plus the price
    answer the running total

Danger is visible

Vision marks every line that reaches outside your program, and every line that can't be undone — by law, checked by the compiler. An unmarked line is provably calm.

to save the note, given the words and the path:
    the temp path is "{the path}.tmp"
    >> write the words to the file at the temp path
    >> make sure the file at the temp path is saved
    >> rename the file at the temp path to the path

>> means the line touches the world — disk, network, the clock. !! means it can't be undone. You can see, at a glance, exactly which lines have weight. The safe lines and the dangerous ones never look the same.

Failure is never ignored

If something can fail, the compiler won't let you walk past it. You handle it, or it doesn't build:

read the file at the path giving the contents
    but if it isn't there, say "nothing to read there" and stop
    but if it can't be read, explain why and hand it on

No hidden surprises

Arithmetic and logic are never silently precedence-ordered. If two different operations meet, you group them, so the order is always on the page:

a plus b times c        // won't compile — group it
a plus (b times c)      // the order is visible, and meant

A wrong order silently corrupting a value is the kind of bug Vision refuses to allow.

Reaching C libraries

C has forty years of good libraries. Vision reaches them by describing what a function does — in Vision, never in C. No pointers, no length parameters. For libraries that hold state across calls, the description reads as three plain steps:

this program understands blake3

to begin a blake3 hash giving a hasher is blake3_hasher_init
    it gives back a hasher
to feed some bytes to a hasher is blake3_hasher_update
    it takes a hasher and some bytes, changing the hasher
to finish a hasher giving some bytes is blake3_hasher_finalize
    it takes a hasher
    it gives back 32 bytes

to fingerprint, given the contents:
    begin a blake3 hash giving the hasher
    feed the contents to the hasher
    finish the hasher giving the result
    answer the result

begin, feed, finish — make the thing, feed it, finish it. The C struct is managed for you; you never see a pointer.

The shape of it

  • Reads like sentences: words, not symbols. Indentation makes blocks.
  • Compiles to C. Memory is automatic by default — and can be managed by hand when you

need the control.

  • Effects are visible (>>), the irreversible is marked (!!).
  • Every failure is handled, or it doesn't compile.
  • No hidden precedence — order is always written down.
  • C libraries reached by plain description, no C written.

Source files end in .vis.

What it leaves out, on purpose

The absences are deliberate — each one is a choice, not a gap:

  • No garbage collector. Memory is deterministic: automatic by default, manual when you

need the control. Nothing pauses your program to clean up behind you.

  • No hidden control flow. No exceptions unwinding invisibly up the stack. A failure is

handled where it happens, in plain sight, or the program doesn't compile.

  • No hidden precedence. No operator-precedence rules to memorize — when operations

mix, the order is written down.

  • No heavy runtime. It compiles to C. There's no VM or interpreter sitting underneath

your program at runtime.

  • No symbols to decode. Words, not punctuation. Nothing you need to be initiated into.
  • No telemetry, nothing phoning home. Owned end to end; the compiler does what it says

and nothing else.

Status

Vision is new and under active development. It works — there's a real compiler and a large test suite behind it — but it's early, the surface is still settling, and it's being built one careful decision at a time. If you're reading this, you're early.

Why it exists

The wall between "people who write code" and "people who don't" was mostly a pile of symbols nobody ever explained. Vision is one attempt to take it down — to make a language that's legible by law, owned end to end, with zero telemetry and nothing hidden. It's part of a larger ecosystem (Koh, Kepr, and the rest) built on the same belief: software you can read, own, and trust.

Built by June · Asha Software. Read more at visionlang.dev.

License: GPL — use it, change it, build on it; if you share your version, keep it open too.