Roadmap
Where Zeno stands
The goal is one language for every job you would reach for C, C++, Python, JavaScript, Java or Rust to do. Each use case arrives with a piece of the compiler. This is the order they have come in, and the order the rest will.
Done
18 stages, each with a walkthrough. Every test program is run on all four engines and must print the same.
- LexerSource text becomes tokens.
- ParserTokens become a syntax tree.
- Interpreter
zeno runwalks the syntax tree. - Type checkerGradual types: checked where written, worked out where left out.
- Compile to CThe whole language, as portable C.
- Garbage collectorA small mark-and-sweep collector in the compiled program.
- Errors as values
--firmware: nosetjmp, every caller tests. - Owned values and borrowsFreed at a line you can point to.
- No collector
--no-collectorleaves the collector out. - Bytecode VM
zeno run --vm, two to three times as fast. - LLVM backend
zeno build --llvm, with every flag. - Board and timePins,
sleepandnow, on a simulated board. - Sized numbers
u8toi32and the bit operators. - Generics
class Stack[T], one compiled copy per type. - A fixed memory poolNo
mallocin a firmware build. - Kept textText that is built and kept, with no collector.
- Statement-owned valuesA list nobody keeps is freed by its statement.
- One ownerWhoever receives a value owns it, with no collector.
Coming
In order. The syntax may still change before a first release.