Parse-free editing
There is nothing to parse. Construct, move, delete, finish: each edit either applies or is refused, and the program cannot break in between.
0.16x to 0.51x the keystrokes of Neovim
Rethinking programming from the ground up
The syntax tree is the program. No parser, no text files, no syntax errors. Every edit is a typed tree transformation, so every program is well-typed at every instant, even half-finished.
One artifact
There is no file format, so the editor and the language are one artifact. The terminal editor projects the tree. The merge engine diffs it. The evaluator runs around its holes. Agents edit it through the same typed actions you do.
One typed tree. Four projections. An action either applies and leaves a well-typed program, or it is refused and nothing changes. There is no third outcome.
Get the code →Capabilities
There is nothing to parse. Construct, move, delete, finish: each edit either applies or is refused, and the program cannot break in between.
0.16x to 0.51x the keystrokes of Neovim
An empty hole ⦇⦈ stands for code you have not written yet. A quarantine wraps code that does not fit its context. 1 + true is not an error; it is 1 + ⦇true⦈.
incompleteness is a value
Merge reads typed operations, not lines. Names are metadata, not identity, so a rename cannot collide with an edit and formatting cannot cause a conflict.
13 of 16 clean; git merge-file: 2 of 16
Models edit over JSON through the same action calculus. An ill-typed program is not caught by review; it is unrepresentable.
0 ill-typed states across 132 model edits
The editor
Real output. Type a Bool where a Num goes and the editor does not stop you. The mistake lands in a quarantine, stays visible, and the program stays well-typed the whole time.
The third step puts a Bool in a Num position. The editor quarantines it as ⦇true⦈ instead of refusing, and the program stays well-typed.
Install
Rust and a terminal. The editor, the merge engine, and the agent protocol build from one repo.
$ git clone https://github.com/frgmt0/nothing
$ cd nothing && cargo build --release
$ cargo run -p nothing-tui