Skip to content

v1.0.0 - Production release

Latest
Compare
Choose a tag to compare
@dekarrin dekarrin released this 05 Jun 18:00
e368f06
  • Added ability to read from stdin in ictcc and generated binaries by specifying a filename of "-".
  • Inherited attributes in an SDTS are now considered unsupported and trying to use them will cause an error. Inherited attribute use can be enabled by passing --exp inherited-attributes to ictcc, but it is unlikely to function properly.
  • SDTS hook implementation functions can now return an error instead of just panicking when something goes wrong.
  • Disconnected dependency graphs in simulated SDTSs are downgraded to warning, and only become error if there are multiple graphs that lead to the IR.
  • Token classes can now be retrieved by class ID by using ByID() in the generated frontend's token package.
  • Generated frontends can now detect when they are being fed empty input and will return a different error than just "unexpected end-of-text token".
  • Codegen for binaries now clears old code before generating, preventing issues from arising when new generation doesn't completely replace every file.
  • Added integration testing framework in tests and example testing framework in examples, both via shell.
  • Significantly improved code style; replaced magic literals with proper constants, removed many unused functions, and limited the exported functions to only those necessary, among other things.
  • References to loading a parser or other frontend components from 'cache' have been completely removed.
  • The environment variable ICTIOBUS_SOURCE may now be used to give an alternate location for local Ictiobus source code when calling ictcc with the --dev flag.
  • Fixed lack of support for built-in IR types as args to --ir.
  • Fixed error message for impossible attribute reference pre-check giving the name of the attribute instead of the symbol it is on.
  • Fixed referring to attribute that doesn't exist at translation time causing a panic. Now it's a normal error.
  • Fixed epsilon productions completely breaking parser generation. This fixes the issue of SLR parsers being broken as it was the root cause.
  • Fixed some generated token class variable names being generated as just "TC" if relying on rune names.
  • Fixed generated SDTSs not checking the error returned by Bind() while initializing.
  • Fixed SDTSs being applied in non-deterministic way. Now they will prefer translating the left-most nodes of parse trees, preventing some nasty possible use-before-set errors.
  • Fixed (or removed) broken unit tests that were previously commented out.
  • Fixed syntax error messages for token classes that start with newline sequences. Before, they were pointing to the apparently blank end of line where the token started, which while technically true, is next to useless for a human attempting to read the error.
  • Updated CLI flags for ictcc:
    • Added -S/--suppress and -F/--fatal flags to control suppression and promotion of warnings.
    • Added --debug-sdts to debug the FISHI SDTS.
    • Added -P/--preproc to output a preprocessed FISHI spec before it is sent to the frontend.
    • Added -C/--command to provide FISHI code via CLI args.
    • Added -D/--dfa to output the generated parser's deterministic finite automaton.
    • Added -T/--parse-table to output the generated parser's parsing table.
    • Added --exp to enable experimental features.
    • Removed -p/--parser, --no-cache, and --no-cache-out flags.
  • Updated CLI flags for generated binaries:
    • Added -S/--suppress and -F/--fatal flags to control suppression and promotion of warnings.
    • Added -s/--debug-sdts for debugging the SDTS.
    • Added -C/--command to provide input source code via CLI args.
    • Added -P/--preproc to output preprocessed source intput before it is sent to the frontend. This is only included if the generated binary performs a formatting/preprocessing step.
    • Changed -t to --tree and made -t be the shorthand version.
  • Improved documentation:
    • Updated README.md to actually have example uses
    • Added new ictcc.md file to serve as the complete ictcc command reference.
    • Added new fishi-usage.md file to give full tutorial on FISHI usage.
    • Significatly improved code docs.
    • Added a version history file RELEASES.md