Commit Graph

1069 Commits

Author SHA1 Message Date
Brian Huffman
ed1dd212ab More small fixes in Programming Cryptol 2016-08-03 16:04:10 -07:00
Brian Huffman
4cc76e6c8b Small fixes for crash-course chapter of Programming Cryptol
Changes include spelling, grammar, punctuation,
typesetting, and code formatting. A few factual errors
have been fixed, and some Cryptol REPL output has been
updated as well.
2016-08-03 09:54:52 -07:00
Robert Dockins
1528fb524d Comment cleanup 2016-07-25 16:00:07 -07:00
Robert Dockins
2c4bd660ea Clean up VWord/VSeq handling in some of the Cryptol primitives,
and add some missing cases.
2016-07-25 15:58:12 -07:00
Robert Dockins
1c5f786811 Fix an off-by-one error in the implementation of 'split'.
This was causing incorrect computation in examples/MiniLock/prim/Blake2s.cry.
2016-07-25 14:43:17 -07:00
Robert Dockins
2e15d4f443 Increase the size of the garbage collector nursery to 64m.
This greatly increases mutator productivity, and thus provides
significant speedups on some examples.  The tradeoff with
larger nurseries is the potential for long GC pause times.
This is probably acceptable tradeoff for a tool like Cryptol,
despite the potential for unresponsiveness at the REPL.
2016-07-20 15:55:05 -07:00
Iavor S. Diatchki
b1b7b8b599 Merge pull request #356 from thoughtpolice/stdlib-iterate
lib/extras: add iterate
2016-07-18 11:20:47 -07:00
Iavor S. Diatchki
8c36992904 Merge pull request #344 from adrianherrera/enhancement/MISTY1
Crytol spec for MISTY1 cipher
2016-07-18 11:19:53 -07:00
Austin Seipp
e197497059 lib/extras: add iterate
Signed-off-by: Austin Seipp <aseipp@pobox.com>
2016-07-18 09:01:45 +00:00
Robert Dockins
5d1e1948d8 Add test case to demonstrate tracing, as discussed in issue 68.
The new evaluator allows us to have more direct control over
evaluation order, and makes it straightforward to implement tracing
primitives.  There are two new primitives 'trace' and 'traceVal' in the
Cryptol prelude that produce tracing output when evaluated.
Fixes #68
2016-07-13 15:09:56 -07:00
Robert Dockins
e001310299 Add test cases for issue 138. Fixed by new evaluator.
Fixes #138
2016-07-13 15:00:00 -07:00
Robert Dockins
3d68677d42 Add test case for issue #268. Fixed by the evaluator rewrite
Fixes #268
2016-07-13 14:40:44 -07:00
Robert Dockins
869670b2af Add test case for issue #334. This issue is fixed by the evaluator rewrite.
Fixes #334
2016-07-13 14:36:26 -07:00
robdockins
93a1628d53 Merge pull request #338 from robdockins/new-eval
New monadic evaluator, now with fewer nontermination bugs!
2016-07-13 14:27:38 -07:00
Robert Dockins
c60be15873 Add 'trace' and 'traceVal' to the primitive operations lists in the documentation. 2016-07-13 14:21:29 -07:00
Robert Dockins
e0611c250d More explict comments for the 'trace' and 'traceVal' Prelude operations. 2016-07-13 14:16:33 -07:00
Robert Dockins
222c6edd82 Additional haddock improvements 2016-07-13 14:07:45 -07:00
Robert Dockins
89b9d55af7 Further comment improvements 2016-07-13 12:46:05 -07:00
Robert Dockins
1e57a2dfc7 Squash warnings and improve comments. 2016-07-13 11:27:30 -07:00
Robert Dockins
73d6a68c67 Merge branch 'new-eval' of github.com:robdockins/cryptol into new-eval 2016-07-13 09:54:24 -07:00
Robert Dockins
998bddc7a7 Merge remote-tracking branch 'origin/master' into new-eval
Fix some minor conflicts in the test suite.
Conflicts:
	tests/issues/issue002.icry.fails
	tests/issues/issue148.icry.stdout
	tests/issues/issue198.icry.stdout
	tests/issues/issue214.icry.stdout
	tests/issues/issue290v2.icry.stdout
	tests/issues/issue312.icry.fails
2016-07-12 14:58:53 -07:00
Brian Huffman
c2e0cc5839 Remove unused AES functions. Fixes #352. 2016-07-07 14:40:08 -07:00
Adam C. Foltzer
8352132c14 Merge branch 'release/2.4.0' 2016-07-06 16:21:06 -07:00
Adam C. Foltzer
3c25c096a7 clean up build a bit 2016-07-06 16:20:01 -07:00
Thomas M. DuBuisson
8485f28a6b Add necessary type arguments to scytale example. 2016-07-05 15:07:14 -07:00
Adam C. Foltzer
054a3e2248 instantiate Scytale diameter
Fixes #349
2016-07-05 14:42:59 -07:00
Ryan Scott
117dc0a931 Put bench/data/*.cry in extra-source-files 2016-07-05 09:58:50 -07:00
Adam C. Foltzer
2c428804bc remove splitBy and update documentation
Closes #291
2016-07-05 09:58:49 -07:00
Adam C. Foltzer
78cacc4d3e Merge pull request #333 from RyanGlScott/master
Put bench/data/*.cry in extra-source-files
2016-07-05 08:49:53 -07:00
Adam C. Foltzer
6fd99ff3ab clean up build a bit 2016-06-27 14:59:10 -07:00
Robert Dockins
e0dc226787 Make random value generation work on a slightly larger class of types.
Simplify types when calculating random generators to avoid spurrious
failures.
2016-06-25 12:45:01 -07:00
Brian Huffman
2cface6f31 Parser disallows declarations like "f x # y = y".
Fixes #342.
2016-06-16 17:05:59 -07:00
Rob Dockins
cbdbe35a89 Tweak the thunk strategy for the evaulator, and make sure to
eta-expand word values when necessary.
2016-06-13 22:14:28 -07:00
Rob Dockins
88b6ae5bfa Squash some incomplete pattern match warnings 2016-06-13 22:12:16 -07:00
Robert Dockins
8ecb6898a6 Merge remote-tracking branch 'github/new-eval' into new-eval 2016-06-13 16:45:44 -07:00
Robert Dockins
c18df5df40 Fix up some most-merge problems 2016-06-13 16:43:25 -07:00
Robert Dockins
c3c1bb2c74 Merge branch 'master' into new-eval-merge 2016-06-13 16:29:36 -07:00
Robert Dockins
37fea4cd9d Remove the lexCompare case for infinite streams, which should never occur. 2016-06-13 16:23:39 -07:00
Robert Dockins
3f934ae27f Delete the unused cvt function 2016-06-13 16:02:27 -07:00
Rob Dockins
b9464335b9 Plug a space leak in the implementation of random sequences 2016-06-12 22:43:37 -07:00
Robert Dockins
98a9e16944 Move to directly pattern matching on the new type evaluation datatype
instead of using helper destructor functions.
2016-06-09 14:19:12 -04:00
Robert Dockins
d2789c0214 Start manually merging Brian's changes regarding type values and evaluation 2016-06-09 13:30:51 -04:00
Robert Dockins
b95b734b74 Refactoring of how bits and words are handled in the interpreters.
The major change in this patch is to add a new type of 'WordValue'
which is always used to represent finite sequences of bits.  A word
value is either a packed word, or a sequence of lazy bits.  The 'VSeq'
constructor, in constrast, is now never used for a finite sequence of
bits.

This avoids certain thorny problems that arise when trying to faithfully
implement the lazy semantics of Cryptol.  We now do not have to commit
to a value at type '[n]' being represented as a packed word or as an
unpacked word until relatively late.  This allows us to perform type-directed
eta-expansion at every recursive call before we know how words will be represented.

This patch fixes all the outstanding strictness bugs that I know of.

Unfortunately, we seem to lose some ground on performance.  The new evaluator
is now about 5% slower than the old one on the AES benchmark, and quite a bit
slower on the SHA1 benchmark.  Fortunately, the use if LRU caches for memoization
of sequences seems to keep heap usage to manageable levels; so programs generally
complete, even if they take a long time.
2016-06-09 08:31:23 -04:00
Adam C. Foltzer
20965a0b0b fully qualify cygpath to avoid weird hemlock error 2016-06-08 16:56:22 -07:00
Adam C. Foltzer
921b50a1a9 add GHC 8 stackage nightly 2016-06-07 14:29:20 -07:00
Adam C. Foltzer
76be770d83 clean up 7.8-isms 2016-06-07 13:40:15 -07:00
Adrian Herrera
bedeeb0883 Crytol spec for MISTY1 cipher (as described in RFC 2994) 2016-06-07 22:42:16 +10:00
Brian Huffman
1e3d1f642a New evalType function works on either kind * or #
Cryptol.Eval.Type now provides three evaluation functions
for types:

  evalType    :: EvalEnv -> Type -> Either Nat' TValue
  evalValType :: EvalEnv -> Type -> TValue
  evalNumType :: EvalEnv -> Type -> Nat'

evalValType requires the type to have kind *.
evalNumType requires the type to have kind #.
evalType works on a Cryptol types of either kind.
2016-06-06 15:43:22 -07:00
Brian Huffman
9fb3d53d88 TValue represents only value types; Nat' is for size types
We now have separate evalType and evalNumType functions
for use with kind * and #, respectively.
2016-06-06 15:10:31 -07:00
Brian Huffman
38f143abcc Pattern match on TValues instead of discriminator functions 2016-06-06 13:31:44 -07:00