Skip to content

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 11 Mar 13:27
· 2097 commits to main since this release

New Functionality

  • Add support for recovery from parse errors or incomplete input

    This release adds support for recovering from parse errors or incomplete
    input (e.g., gaps or partial connections). Grammars can denote unit
    synchronization points with a &synchronize attribute. If an error is
    encountered while extracting a previous fields, parsing will attempt to
    resynchronize the input at that point. The synchronization result needs to be
    checked and confirmed or rejected explicitly; a number of hooks are provided
    for that. See the docs for details.

  • Remove restriction that units used as sinks need to be public

  • Uses ccache for C++ compilation during JIT if Spicy itself was configured to use ccache

    Spicy spends a considerable amount of JIT time compiling generated C++ code.
    This work can be cached if neither inputs nor any of the used flags have
    changed so that subsequent JIT runs can complete much faster.

    We now automatically cache many C++ compilation artifacts with ccache if
    Spicy itself was configured with e.g.,
    --with-hilti-compiler-launcher=ccache. This behavior can be controlled or
    disabled via the HILTI_CXX_COMPILER_LAUNCHER environment variable.

  • GH-842: Add Spicy support for struct initialization.

  • GH-1036: Support unit initialization through a struct constructor expression.

Changed Functionality

  • GH-1074: %random-access is now derived automatically from uses and
    declaring it explicitly has been deprecated.

  • GH-1072: Disallow enum declarations with non-unique values.

    It is unclear what code should be generated when requested to convert an
    integer value to the following enum:

        type E = enum {
            A = 1,
            B = 2,
            C = 1,
        };
    

    For 1 we could produce either E::A or E::C here.

    Instead of allowing this ambiguity we now disallow enums with non-unique values.

Bug fixes

  • Prevent exception if cache directory is not readable.

  • Propagate failure from cmake up to ./configure.

  • GH-1030: Make sure types required for globals are declared before being used.

  • Fix potentially use-after-free in stringification of stream::View.

  • GH-1087: Make offset return correct value even before parsing of field.