Skip to content
This repository has been archived by the owner on Nov 29, 2023. It is now read-only.

0.1.3

Compare
Choose a tag to compare
@l1mey112 l1mey112 released this 18 Nov 16:30
· 78 commits to master since this release

Release Changelog Complete Post - stas 0.1.3

Changelog

  • Complete parser rewrite and cleanup. This allows for many improvements.
  • Constant variables can now be declared inside functions. They follow the same scoping rules as normal variables.
  • Variable declarations can now have a constant expression to denote it's size in memory.
  • Static assertions at the top level.
  • New sizeof keyword for use with automatic and buffer variables. It also can be used inside constant expressions.
  • Improved error message for duplicate indentifiers.
  • Constant folding is back in code generation. Was present in the V stas compiler, missing till now.
  • The noeval function attribute to disable the constant folding behavior.
  • The layout in memory of auto variables has been reversed to be in line with what would be assumed.
  • String length is excluded from the push_str instruction, with it being pushed separately.
  • NASM bootstrap files have been included in the bootstrap/ folder.
  • --trace-calls compiler switch. The compiled executable will have function calls traced at runtime.
  • Inline functions can now use the ret keyword.
  • Test runner written in V. The accompanying file, make_bootstrap.sh, calls test runner.
  • continue and break keywords both raise unreachable code errors.
  • Bugfix: fix allocated registers leaking when performing operations with automatic variables.