Language changes
* Updates to the layout rule. We simplified the specification and made
some minor changes, in particular:
- Paren blocks nested in a layout block need to respect the indentation
if the layout block
- We allow nested layout blocks to have the same indentation, which is
convenient when writing `private` declarations as they don't need to
be indented as long as they are at the end of the file.
* New enumeration forms `[x .. y by n]`, `[x .. <y by n]`,
`[x .. y down by n]` and `[x .. >y down by n]` have been
implemented. These new forms let the user explicitly specify
the stride for an enumeration, as opposed to the previous
`[x, y .. z]` form (where the stride was computed from `x` and `y`).
* Nested modules are now available (from pull request 1048). For example, the following is now valid Cryptol:
module SubmodTest where
import submodule B as C
submodule A where
propA = C::y > 5
submodule B where
y : Integer
y = 42
New features
* What4 prover backends now feature an improved multi-SAT procedure
which is significantly faster than the old algorithm. Thanks to
Levent Erkök for the suggestion.
* There is a new `w4-abc` solver option, which communicates to ABC
as an external process via What4.
* Expanded support for declaration forms in the REPL. You can now
define infix operators, type synonyms and mutually-recursive functions,
and state signatures and fixity declarations. Multiple declarations
can be combined into a single line by separating them with `;`,
which is necessary for stating a signature together with a
definition, etc.
* There is a new `:set path` REPL option that provides an alternative to
`CRYPTOLPATH` for controlling where to search for imported modules
(issue 631).
* The `cryptol-remote-api` server now natively supports HTTPS (issue
1008), `newtype` values (issue 1033), and safety checking (issue
1166).
* Releases optionally include solvers (issue 1111). See the
`*-with-solvers*` files in the assets list for this release.
Bug fixes
* Closed issues 422, 436, 619, 631, 633, 640, 680, 734, 735,
759, 760, 764, 849, 996, 1000, 1008, 1019, 1032, 1033,
1034, 1043, 1047, 1060, 1064, 1083, 1084, 1087, 1102, 1111,
1113, 1117, 1125, 1133, 1142, 1144, 1145, 1146, 1157, 1160,
1163, 1166, 1169, 1175, 1179, 1182, 1190, 1191, 1196, 1197,
1204, 1209, 1210, 1213, 1216, 1223, 1226, 1238, 1239, 1240,
1241, 1250, 1256, 1259, 1261, 1266, 1274, 1275, 1283, and
1291.
* Merged pull requests 1048, 1128, 1129, 1130, 1131, 1135, 1136,
1137, 1139, 1148, 1149, 1150, 1152, 1154, 1156, 1158, 1159,
1161, 1164, 1165, 1168, 1170, 1171, 1172, 1173, 1174, 1176,
1181, 1183, 1186, 1188, 1192, 1193, 1194, 1195, 1199, 1200,
1202, 1203, 1205, 1207, 1211, 1214, 1215, 1218, 1219, 1221,
1224, 1225, 1227, 1228, 1230, 1231, 1232, 1234, 1242, 1243,
1244, 1245, 1246, 1247, 1248, 1251, 1252, 1254, 1255, 1258,
1263, 1265, 1268, 1269, 1270, 1271, 1272, 1273, 1276, 1281,
1282, 1284, 1285, 1286, 1287, 1288, 1293, 1294, and 1295.