0.4.0a2
Pre-release
Pre-release
This is another early preview of some more new features in the upcoming 0.4.0 release, as well as some fixes for regressions in 0.4.0a1.
New Features
- More math operators: unary not and negation (5f24078), string length and indexing (353f391) and bitwise logic/bitshifts (6936042).
- Character constants now support escape sequences (45196d6)
- Expanded type system: (ea5e297)
- Integers can now have a custom size and signedness:
out int{size 4, unsigned} wow;
- Strings can now be unterminated:
out unterminated str[56] look_no_nulls;
- Integers can now have a custom size and signedness:
- Better integer literals; now supporting hexadecimal and binary:
0b0110
,-0x54
(1e61988) - Improved NMFU-debugging:
- New optimizer that tries to shortcircuit fallthrough transitions if possible (3043adc, db126e2)
Bugs Fixed
- Ensure chaining DFAs doesn't drop error handling-transitions in certain circumstances (64e89f2)
- Fix
DFA.dfs()
not properly consideringMAY_GOTO_TARGET
-type actions, causing the optimizer to mistakenly drop states (ca72b3b) - Fixed loop body start actions being ignored (ccb54a3)
- Macros now bind arguments in a sane way, fixing various problems with nesting them. (8f87354, 6191b42)
- Fallthrough loop detection now considers multi-state cycles. (222d971)
- Action-only conditional nodes now properly propagate subsequent actions (ad3a917)
- Foreach nodes only apply their actions to non-fallthrough transitions to ensure they only run once per character (709d314)
- Rewrote the majority of the loop implementation to make it more compatible with action side-effects (5b520bb)
DTAG
system now does more checks for garbage-collection and uses weakrefs to be slightly more memory-efficient (e5d58f3)
Infrastructure Changes
- New test showcasing binary features which parses
TripUpdate
messages from a GTFS Realtime feed (f4a2edb, e7c8b1d) - Demonstration of more advanced string manipulation in the RDF example (92ff838, 5fa891e)
- Full integration tests now will run the generated code through an actual compiler to check for correctness. While they're skipped properly if one isn't found, please make sure any potential patches are tested with one installed. (acbff31)