Skip to content

2.10.0

Compare
Choose a tag to compare
@atomb atomb released this 19 Nov 17:39
· 4 commits to release-2.10.0 since this release

Language changes

  • Cryptol now supports primality checking at the type level. The type-level predicate prime is true when its parameter passes the Miller-Rabin probabilistic primality test implemented in the GMP library.

  • The Z p type is now a Field when p is prime, allowing additional operations on Z p values.

  • The literals 0 and 1 can now be used at type Bit, as alternatives for False and True, respectively.

New features

  • The interpreter now includes a number of primitive functions that allow faster execution of a number of common cryptographic functions, including the core operations of AES and SHA-2, operations on GF(2) polynomials (the existing pmod, pdiv, and pmult functions), and some operations on prime field elliptic curves. These functions are useful for implementing higher-level algorithms, such as many post-quantum schemes, with more acceptable performance than possible when running a top-to-bottom Cryptol implementation in the interpreter.

    For a full list of the new primitives, see the new Cryptol SuiteB and PrimeEC modules.

  • The REPL now allows lines containing only comments, making it easier to copy and paste examples.

  • The interpreter has generally improved performance overall.

  • Several error messages are more comprehensible and less verbose.

  • Cryptol releases and nightly builds now include an RPC server alongside the REPL. This provides an alternative interface to the same interpreter and proof engine available from the REPL, but is better-suited to programmatic use. Details on the protocol used by the server are available here. A Python client for this protocol is available here.

  • Windows builds are now distributed as both .tar.gz and .msi files.

Bug Fixes