This repository has been archived by the owner on Nov 29, 2023. It is now read-only.
0.1.1
Release Changelog Complete Post - stas 0.1.1
Changelog
- Visual Studio Code support for stas with the
stas-vscode
extension. The extension is published at the open-vsx registry, download a copy there. If you are using vscodium, search for it in your extensions tab! - Support for syntax highlighting in the Hugo static site generator, although you may need to wait for a new release from them (build it from source for the impatient).
- New
addr
keyword. Used to get addresses of variables declared with theauto
keyword. - Single character literals denoted with backticks. `A`, `\n`, `0`
- Unreachable code declared after the use of the
ret
keyword is now checked for and is a compiler error. - Use the
-r
switch to execute the file after compilation, arguments after this switch will ignored and passed to the program. - Scanner and token improvements, to make way for a rich error reporting system in a later release.
- Stack backtraces showing exactly what value was pushed onto the stack and where on a compiler error.
- Pretty printing of string literals in generated assembly.
- NASM backend, generates object files and annotated assembly with exported labels with the
-g
switch. - Many improvements to codegen, generated code takes up a smaller footprint.
--dump-tok
and--dump-ir
switches for dumping the compiler's inner data structures.- Tail recursion optimisation.
- Code generation when inlining function bodies has been improved greatly.
-v
or--verbose
enables verbose mode. Compiler passes will be timed and lots of information will be dumped.- Negative numbers (about time). Signed comparision has been possible with
<s
,>s
,<=s
,>=s
. - Bugfix: stack checks on branches with early returns with the
ret
keyword are no longer implemented with a nasty hack. - Bugfix: consecutive inline functions with branches no longer have their labels conflict.
- Bugfix: now waits for the backend to finish and handles it's exit code.
- Bugfix: now passes a proper
argv[0]
to child processes.
Note: It is not recommended that you build stas and experiment with it in this state. Executable paths are hard coded, this will be cleaned up in the 0.1.2
release.