Language changes
None
Bug fixes
-
Fix a bug where setting at timeout would cause sbv-yices, sbv-cvc4 and sbc-cvc5 to crash. Uses a deadman timer workaround for yices, due to a known issue.
(#1808) -
Update Yices build in CI to fix a crash when running test
issue_1807.icry
on Mac OS X (ARM64).
(what4-solvers #58) -
Fix a bug where using a timeout with a subset of the what4 solvers would cause a runtime error. Includes a version bump for what4 to address a nondeterministic crash when using timeouts with cvc4/5.
(what4 PR #288) (#1807) -
Fix #1437, enforce the VSeq invariant that it is not a sequence of bits. Replaces the VSeq constructor with a view-only pattern, and smart constructors
mkSeq
andfinSeq
.
(#1437) -
Fix #1740, removes duplicated width from word values. Note that since this changes the types, it may require changes to libraries depending on Cryptol.
-
Fix a bug in which splitting a
[0]
value into type[inf][0]
would panic.
(#1749) -
Fix a bug in which the free variables of types mentioning newtypes or enums were incorrectly computed.
(#1773) -
The reference evaluator now evaluates the
toSignedInteger
anddeepseq
primitives instead of panicking. -
Fix a bug in which
a ^^ (x ^^ y)
could be incorrectly simplified toa ^^ (x * y)
at the type level.
(#1799)
New features
-
Improved error messages during type inference for bindings. Adds a specific error message for when a binding has more arguments than expected, given its type signature.
(#1744) -
Improved warning messages for non-exhaustive guards. Warnings are now ordered by source location.
(#1798) -
More aggressive exhaustivity check that is less dependent on guard ordering.
(#1796) -
Improved error messages mentioning module parameters
(#1560) -
Improved the naming convention for anonymous modules generated by the module system
(#1810) -
REPL command
:dumptests <FILE> <EXPR>
updated to write to stdout when invoked as:dumptests - <EXPR>
allowing for easier experimentation and testing. -
The REPL properly supports tab completion for the
:t
and:check
commands.
(#1780) -
Add support for incrementally loading projects via cryptol's
--project
flag as documented in the reference manual.
(#1641) -
Add support for the Bitwuzla SMT solver, which can be selected with
:set prover=bitwuzla
. If you want to specify a What4 or SBV backend, you can use:set prover=w4-bitwuzla
or:set prover=sbv-bitwuzla
, respectively.
(#1786) -
Add a REPL option
tcSmtFile
that allows writing typechecker-related SMT solver interactions to a file. -
The typechecker can now simplify types of the form
width (2^^n)
ton + 1
.
(#1802)