Changelog for crucible-syntax-0.5.0.0
0.5 -- 2025-11-09
- Add
parsedProgramFnBindingsto a new module,Lang.Crucible.Syntax.ParsedProgram.
0.4.1 -- 2025-03-21
-
Add a
Prettyinstance 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
ACFGhas 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-syntaxnow supports simulating CFGs with language-specific syntax extensions:SimulateProgramHooksnow has asetupHookfield that can run an arbitrary override action before simulation. (For example, this is used incrucible-llvm-syntaxto initialize the LLVM memory global variable.)SimulateProgramHooksnow has an extraexttype variable so that hooks can be extension-specific.
-
execCommandand related data types inLang.Crucible.Syntax.Proghave been split off into a separatecrucible-clilibrary.
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 ofParsedProgramnow serve the roles previously filled by the first and second fields of the returned tuple. (Note thatPair TypeRepr GlobalVarhas been simplified toSome GlobalVar, as theTypeReprof aGlobalVarcan be retrieved through itsglobalTypefield.) -
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
setupOverridesHookfield ofSimulateProgramHooksnow serves the role previously filled by the function argument. -
crucible-syntaxnow 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.cblfile is parsed. See thecrucible-syntaxREADMEfor more information.There is also now an
externkeyword, that acts like a forward declaration for global variables.
0.2
- Various functions now take a
?parserHooks :: ParserHooks extimplicit argument, which supports arbitrary syntax extensions. Various data types now also have an additionalexttype 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.