v1.4.0
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&synchronizeattribute. 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
ccachefor C++ compilation during JIT if Spicy itself was configured to useccacheSpicy 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
ccacheif
Spicy itself was configured with e.g.,
--with-hilti-compiler-launcher=ccache. This behavior can be controlled or
disabled via theHILTI_CXX_COMPILER_LAUNCHERenvironment variable. -
GH-842: Add Spicy support for struct initialization.
-
GH-1036: Support unit initialization through a struct constructor expression.
Changed Functionality
-
GH-1074:
%random-accessis 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
1we could produce eitherE::AorE::Chere.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
cmakeup 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
offsetreturn correct value even before parsing of field.