$ cat roadmap.md
Roadmap
Each phase ends with something that runs. The splitter is the new part: everything before it exists in every compiler, everything after it is the reason Complex exists.
| phase | what works at the end | state |
|---|---|---|
| 0. Design | ten example programs and a one-page grammar | in progress |
| 1. Lexer, parser | complex parse prints the syntax tree | done |
| 2. Interpreter | model, page and view run; a page appears on localhost | done |
| 3. Type checker | a renamed field is a compile error with a line number and a fix | done |
| 3b. Information flow | labelled data cannot leak; complex audit lists every crossing | done |
| 4. Storage | query over SQLite, migrations from the model | next |
| 5. Splitter | action on server becomes an endpoint; the browser gets JavaScript | planned |
| 6. Bytecode VM | the same programs, noticeably faster | planned |
$ cat decisions.md
- Name and extension: Complex, files
.complex(decided 2 November 2026). - Runtime language: Rust, standard library only. Self-hosting is the long-term goal.
- Storage: SQLite built in first, PostgreSQL later.
- Open: fine-grained reactivity or full re-render in the browser; sessions as a language feature or a library.