Changelog for crucible-syntax-0.4.1
0.4.1 -- 2025-03-21
-
Add a
Pretty
instance for ExprError. -
Allow exotic characters (including Unicode symbols) in fresh atom names instead of having them be restricted to plain text identifiers.
0.4 -- 2024-02-05
-
The type
ACFG
has been removed in favor ofLang.Crucible.CFG.Reg.AnyCFG
, which serves a similar purpose (hiding the argument and return types). The CFG argument and return types can be recovered viaLang.Crucible.CFG.Reg.{cfgArgTypes,cfgReturnType}
. -
crucible-syntax
now supports simulating CFGs with language-specific syntax extensions:SimulateProgramHooks
now has asetupHook
field that can run an arbitrary override action before simulation. (For example, this is used incrucible-llvm-syntax
to initialize the LLVM memory global variable.)SimulateProgramHooks
now has an extraext
type variable so that hooks can be extension-specific.
-
execCommand
and related data types inLang.Crucible.Syntax.Prog
have been split off into a separatecrucible-cli
library.
0.3
-
The return type of
prog
:TopParser s (Map GlobalName (Pair TypeRepr GlobalVar), [ACFG ext])
Has been changed to:
TopParser s (ParsedProgram ext)
Where the
parsedProgGlobals :: Map GlobalName (Some GlobalVar)
andparsedProgCFGs :: [ACFG ext]
fields ofParsedProgram
now serve the roles previously filled by the first and second fields of the returned tuple. (Note thatPair TypeRepr GlobalVar
has been simplified toSome GlobalVar
, as theTypeRepr
of aGlobalVar
can be retrieved through itsglobalType
field.) -
The type of
simulateProgram
's last argument:simulateProgram :: ... -> (forall p sym ext t st fs. (IsSymInterface sym, sym ~ (ExprBuilder t st fs)) => sym -> HandleAllocator -> IO [(FnBinding p sym ext,Position)]) -> ...
Has changed to the following:
simulateProgram :: ... -> SimulateProgramHooks -> ...
Where the
setupOverridesHook
field ofSimulateProgramHooks
now serves the role previously filled by the function argument. -
crucible-syntax
now supports forward declarations. A forward declaration is like a function, but lacking a body, and is useful for situations where one does not know what the implementation of a function will be until after the.cbl
file is parsed. See thecrucible-syntax
README
for more information.There is also now an
extern
keyword, that acts like a forward declaration for global variables.
0.2
- Various functions now take a
?parserHooks :: ParserHooks ext
implicit argument, which supports arbitrary syntax extensions. Various data types now also have an additionalext
type parameter, which represents the type of the parser extension being used. If you do not care about parser extensions, a reasonable default choice is?parserHooks = defaultParserHooks
.