Skip to content

0.4.0a2

Pre-release
Pre-release
Compare
Choose a tag to compare
@mincrmatt12 mincrmatt12 released this 08 Aug 21:16
· 107 commits to master since this 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;
  • Better integer literals; now supporting hexadecimal and binary: 0b0110, -0x54 (1e61988)
  • Improved NMFU-debugging:
    • DFA-dumper can now be asked to show all literals as hex codepoints (3450fa5)
    • Gave conditional actions proper debug names (151eaae)
    • Added dumper for viewing the DTAG tree (c45b4d2)
  • 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 considering MAY_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)