~mna/snow unlisted

ref: 51726a5ef2959dd97add58914fe45d829880e258 snow/CHANGELOG.md -rw-r--r-- 1.6 KiB
51726a5eMartin Angers Merge branch 'wip-static-func-return' 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 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.