v0.2
Pre-release
Pre-release
- Released under the 3-clause BSD license
- Major improvements to the Java and LLVM verification infrastructure,
as described in more detail here:- Major refactoring and polish to
java_verifyandjava_symexec - Major refactoring and polish to
llvm_verifyandllvm_symexec - Fixed soundness bug in
llvm_verifytreatment of heap
modifications - Fixed soundness bug related to
java_assertandllvm_assert - Support for branch satisfiability checking to be configured
- Support for some types of allocation in
java_verify, enabled
withjava_allow_alloc - Improved support for LLVM structs (including the
llvm_struct
type forllvm_verify) - Support for non-scalar return values in
java_verifyand
java_symexec - Support for using
java_ensure_eqon fields of return value - Access to safety conditions in
java_symexecandllvm_symexec - New primitives
llvm_assert_eqandjava_assert_eq
- Major refactoring and polish to
- Some changes to the SAWScript language:
- Conditional expressions including the keywords
if,then, and
else, and the new constantstrueandfalse - New
eval_intandeval_boolfunctions to expose Cryptol bit
vectors andBitvalues asIntandBoolvalues in SAWScript - Pattern matching for tuples
- Improvements to pretty printing, including:
set_baseand
set_asciicommands to control the formatting of values; ashow
function to convert a value to a string without printing it; and
the ability to useprintorshowinstead of
llvm_browse_moduleandjava_browse_class - New built-in functions for processing lists
- Conditional expressions including the keywords
- New proof backends:
- A new
rmeproof tactic, based on the
Reed-Muller Expansion
normal form for propositional formulas. This tactic is
particularly efficient for dealing with polynomials over Galois
fields, as used in AES, for instance.
- A new
- Linked against the latest Cryptol code, which includes the following
changes since release 2.3.0:- An extended prelude with more Haskell-like functions
- Better, more portable seeding for
random - Performance improvements for symbolically executing tables of
constant values - Performance improvements for type checking large constants
- Internal improvements:
- Simplified Cryptol to SAWCore translation
- Improved performance of Cryptol to SAWCore translation for
recursive functions - Updated bitcode parser to support some of the changes in LLVM 3.7
- Many bug fixes
- Many code cleanups