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.

  1. LexerSource text becomes tokens.
  2. ParserTokens become a syntax tree.
  3. Interpreterzeno run walks the syntax tree.
  4. Type checkerGradual types: checked where written, worked out where left out.
  5. Compile to CThe whole language, as portable C.
  6. Garbage collectorA small mark-and-sweep collector in the compiled program.
  7. Errors as values--firmware: no setjmp, every caller tests.
  8. Owned values and borrowsFreed at a line you can point to.
  9. No collector--no-collector leaves the collector out.
  10. Bytecode VMzeno run --vm, two to three times as fast.
  11. LLVM backendzeno build --llvm, with every flag.
  12. Board and timePins, sleep and now, on a simulated board.
  13. Sized numbersu8 to i32 and the bit operators.
  14. Genericsclass Stack[T], one compiled copy per type.
  15. A fixed memory poolNo malloc in a firmware build.
  16. Kept textText that is built and kept, with no collector.
  17. Statement-owned valuesA list nobody keeps is freed by its statement.
  18. One ownerWhoever receives a value owns it, with no collector.

Coming

In order. The syntax may still change before a first release.

  • In progressEnums with data, and values that may be none, with no collectorStored in place, sized to the largest case.
  • In progressFunctions that capture variables, with no collectorAnd errors that are kept or raised again.
  • PlannedStandard libraryFiles, text and collections.
  • PlannedModulesPrograms across many files.
  • PlannedPackage managerShare and reuse code.
  • PlannedEditor supportA formatter and a language server.
  • PlannedC interopCall C libraries, and be called from C.
  • PlannedWebAssemblyZeno in the browser.
  • Plannedasync and awaitServers and networking.