Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 28 million developers.Sign up
- cryptol-2.6.0-CentOS6-64.tar.gz 6.66 MB
- cryptol-2.6.0-CentOS6-64.tar.gz.sig 566 Bytes
- cryptol-2.6.0-CentOS7-64.tar.gz 6.66 MB
- cryptol-2.6.0-CentOS7-64.tar.gz.sig 566 Bytes
- cryptol-2.6.0-MacOSX-64.tar.gz 5.71 MB
- cryptol-2.6.0-MacOSX-64.tar.gz.sig 566 Bytes
- cryptol-2.6.0-Ubuntu14.04-64.tar.gz 6.67 MB
- cryptol-2.6.0-Ubuntu14.04-64.tar.gz.sig 566 Bytes
- cryptol-2.6.0-Windows10-Pro.msi 7.17 MB
- cryptol-2.6.0-Windows10-Pro.msi.sig 566 Bytes
- Source code (zip)
- Source code (tar.gz)
This release includes several significant language additions, including unbounded integers and parameterized modules, along with many smaller improvements and bug fixes.
Cryptol now has types for unbounded integers (
Integer) and, relatedly, integers modulo a constant value (
Z n), which can be used for more natural encodings of many public-key algorithms, among many other use cases.
Modules can now take types and values (including functions) as parameters. Importing modules can instantiate these parameters, and proofs about parameterized modules can leave parameters abstract (and therefore prove properties for all possible concrete parameters).
Constraint synonyms can be used to group together collections of commonly-used constraints.
Signed operations now exist for arithmetic (
%$), comparison (
>=$), and shifting (
Operations for chaining arithmetic now exist. The
Trueif addition of its arguments would result in unsigned overflow, the
scarryfunction does the same for signed overflow, and the
sborrowfunction checks for overflow on signed subtraction.
The new type operators
%^perform ceiling division and modulus, respectively. These can be particularly useful in computing the number of fixed-size blocks needed to store a message of a
particular size, for instance, or conversely to compute the amount of padding needed to fill up an integral number of blocks.
The new type operator
!=allows the constraint that two types are not equal.
The experimental new
:extract-coqcommand will export the currently-defined environment in a form usable with the Coq definition of Cryptol's operational semantics.
:astcommand prints out the internal form of the AST for a given expression.
Underscores are allowed in numeric literals, and can be used to group digits for greater readability.
Cryptol::Extrasmodule has been merged with the
Prelude, now that it type-checks more quickly. Removing a
Cryptol::Extrasimport should be enough to get older modules to work with this release.
Several new type classes now exist:
Logicfor bitwise logical operations,
SignedCmpfor signed comparison operations. Some functions with explicit type signatures may now require additional constraints.
Numeric literals and enumerations can now be used with any type that is a member of the new
Literalclass, which includes
Type checker and interpreter performance is generally better. Please report regressions as issues on GitHub.
:helpcommand now works with built-in types, commands, and
Defaulting warnings and error messages use more meaningful variable names.
Many bugs have been fixed.