Release v1.1.0
This release features the following major changes to scalu:
-
Improved temporary variable allocation strategy applied to sandboxes. A less greedy strategy is used for allocating temporary variables used in expressions.
-
Reduced compute cost of instructions targeting constant values. This was done at the instruction generation level by having instructions construct themselves based on what type of value they work on.
-
Added peephole deduplication for cfg output. A deduplication algorithm is run on the cfg output to deduplicate aliases with identical tails.
-
Add dot notation. Sandboxes can now read the state of variables in other sandboxes;
my_sandbox.my_variable
-
Add bitshift operators. Constant bitshifts can be computed between two values.
a = b >> c
-
Remove mebibyte limitation. In cases where the output file will exceed the Source engine's mebibyte limit, the compiler will employ a chaining strategy to split the output across multiple files.
-Add several examples, including files used in creation of scalu hangman game.
NOTE: The optimizations included in this release, combined, approximately halved the code size and doubled the speed of test workloads from last release.