~mna/snow unlisted

ref: 424066c5dfcb65333a4a799cf921a9e19be2d2c4 snow/CHANGELOG.md -rw-r--r-- 1.9 KiB
424066c5Martin Angers doc: v0.0.5 1 year, 5 months 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 support for interfaces
  • Add static check that non-void functions cannot fall-through without returning a value
  • Allow code generation (backend) to lag a bit behind, with known issues regarding interfaces satisfied by mutable structs in tuples


  • Add support for function and struct generics


  • Add tuple support
  • Add struct initializers
  • Add support for labelled arguments in function calls
  • Major refactor of semantic passes in new semantic package
  • Refactor of codegen based on semantic graph
  • Test execution of valid codegen files
  • Support multiple variable declarations per statement


  • 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.