This repository has been archived by the owner on Nov 29, 2023. It is now read-only.
0.1.3
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
andbreak
keywords both raise unreachable code errors.- Bugfix: fix allocated registers leaking when performing operations with automatic variables.