ref: wip-post-ast snow/CHANGELOG.md -rw-r--r-- 1.3 KiB
81715ef3Martin Angers pkg/{codegen,semantic}: OMG all codegen tests pass, all is good 2 years ago


List of important milestones identified with version tags in git. Use reverse chronological order (newer first). Do not add dates, it is easy enough to find the corresponding date in git.


  • Add if and guard statements
  • Add true and false predeclared boolean identifiers
  • Add comparison (==, !=, >, >=, <, <=) and logic (&&, ||) operators
  • Add static analysis type-checking pass, check that guard doesn't fall through, one and only one main function, uses of value of identifiers
  • Add support for struct types, support value and ref methods
  • Implement name mangling in code generation
  • Refactor code generation to generate via Go AST as first step, before source code
  • Proper type assignments and conversion in generated Go code, translate unused variables to the _ variable to silence Go compiler unused errors; most code that type-checks should now build properly


  • Scanner, parser, type-checker and code generator implemented for a tiny subset
  • Command-line compiler supporting tokenize, parse, typecheck, codegen build and run commands
  • Var/let and fn declarations, @extern attribute, block, assign and return statements
  • Binary, unary, function calls, strings and ints

See pkg/grammar/grammar.ebnf for details.